データベースセキュリティ強化!PostgreSQL 読み取り専用ユーザーの活用
PostgreSQLで読み取り専用ユーザーを作成する方法
定義済みロールを使用する
PostgreSQL 14以降では、read_only
という定義済みロールを使用して、簡単に読み取り専用ユーザーを作成できます。
CREATE USER readonly_user WITH PASSWORD 'password';
GRANT read_only TO readonly_user;
この方法では、readonly_user
ユーザーはSELECTコマンドのみ実行でき、データの変更は一切できません。
サブロールを使用して、より細かく権限を制御することもできます。
CREATE ROLE readonly_role;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly_role;
CREATE USER readonly_user WITH PASSWORD 'password';
GRANT readonly_role TO readonly_user;
この方法では、readonly_user
ユーザーはpublic
スキーマ内のすべてのテーブルに対してSELECTコマンドのみ実行できます。
PostgreSQLコマンドラインツールを使用する
createuser
コマンドを使用して、読み取り専用ユーザーを作成することもできます。
createuser -d postgres -P readonly_user
このコマンドは、postgres
データベースにreadonly_user
というユーザーを作成します。
GUIツールを使用する利点
- コマンドを覚える必要がない
- 視覚的に操作できるので分かりやすい
- コマンドラインツールよりも動作が遅い場合がある
注意事項
- 読み取り専用ユーザーは、データの変更や削除は一切できません。
- 読み取り専用ユーザーに過剰な権限を与えないように注意してください。
- 読み取り専用ユーザーのパスワードは安全に管理してください。
定義済みロールを使用する
-- 読み取り専用ユーザーを作成
CREATE USER readonly_user WITH PASSWORD 'password';
-- 読み取り専用ロールを付与
GRANT read_only TO readonly_user;
サブロールを使用する
-- 読み取り専用ロールを作成
CREATE ROLE readonly_role;
-- サブロールにSELECT権限を付与
GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly_role;
-- 読み取り専用ユーザーを作成
CREATE USER readonly_user WITH PASSWORD 'password';
-- 読み取り専用ユーザーにサブロールを付与
GRANT readonly_role TO readonly_user;
PostgreSQLコマンドラインツールを使用する
createuser -d postgres -P readonly_user
pgAdminなどのGUIツールを使用する
- pgAdminを起動し、接続したいデータベースサーバーを選択します。
- ツールバーの「ユーザー」アイコンをクリックします。
- 「新規ユーザー」ダイアログボックスが表示されます。
- ユーザー名、パスワード、およびロールを選択します。
- 「OK」をクリックします。
GUIツールによって手順が異なる場合がありますので、詳細はツールのドキュメントを参照してください。
PostgreSQLで読み取り専用ユーザーを作成するその他の方法
GRANTコマンドを使用する
GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly_user;
.pgpass
ファイルを使用して、パスワードを保存せずに読み取り専用ユーザーに接続することができます。
# ホスト名:ポート番号:データベース名:ユーザー名:パスワード
localhost:5432:postgres:readonly_user:password
.pgpass
ファイルは、~/.pgpass
という名前でホームディレクトリに作成する必要があります。
export PGPASSWORD="password"
PGPASSWORD
環境変数は、接続するデータベースサーバーのパスワードを指定します。
pg_hba.conf
ファイルを使用して、読み取り専用ユーザーの接続方法を制御することができます。
host database user method
localhost postgres readonly_user md5
pg_hba.conf
ファイルは、/etc/postgresql/14/main/pg_hba.conf
という名前で保存されています。
postgresql