PostgreSQL selectのみ実行できるユーザーを作成する
- 作成日 2023.09.26
- PostgreSQL
- PostgreSQL
PostgreSQLで、selectのみ実行できるユーザーを作成する手順を記述してます。「pg_read_all_data」という定義済みのロールを付与してあげることだけで可能です。実行結果はpgadmin上で確認してます。
環境
- OS CentOS Stream release 9
- PostgreSQL 15.1
- pgadmin4 6.16
手順
「select」のみ実行できるユーザーを作成するには、「pg_read_all_data」という定義済みのロールを使用します。
ここでは「sample」というDBに、実際に「sampleuser」という「select」のみ実行できるユーザーを作成してみます。
sample=# CREATE ROLE sampleuser WITH LOGIN PASSWORD 'your pwd';
CREATE ROLE
sample=# GRANT pg_read_all_data TO sampleuser;
GRANT ROLE
作成した「sampleuser」でログインして確認してみます。「select」は実行でき「update」は実行できないことが確認できます。
$ psql -h localhost sample -Usampleuser
sample=> SELECT id, name, age FROM public.testtbl;
id | name | age
----+------+-----
1 | 111 | 10
2 | 222 | 20
3 | 333 | 30
(3 行)
sample=> UPDATE testtbl SET name = '000';
ERROR: テーブル testtbl へのアクセスが拒否されました
権限は「\du」で確認することができます。
sample-> \du
ロール一覧
ロール名 | 属性 | 所属グループ
------------+------------------------------------------------------------------------------+--------------------
pgadmin | スーパーユーザー, ロール作成可, DB作成可 | {}
postgres | スーパーユーザー, ロール作成可, DB作成可, レプリケーション可, RLS のバイパス | {}
sampleuser | | {pg_read_all_data}
権限削除
また、権限を削除する場合は「REVOKE」を使用します。
sample=# REVOKE pg_read_all_data FROM sampleuser;
REVOKE ROLE
-
前の記事
ruby 配列が空であるかを判定する 2023.09.26
-
次の記事
gmail ナンバー付きのリストにするショートカットキー 2023.09.26
コメントを書く