ユーザへの権限付与はユーザごとにGRANT文で割り当てる方法の他に、いくつかの権限をまとめた「ロール」を作成し、ユーザに割り当てる方法があります。
ロールの作成
1)CREATE ROLE文でロールを作成します。
dbadmin=> CREATE ROLE ロール名;例)test_roleを作成する場合
dbadmin=> CREATE ROLE test_role;2)スーパーユーザ、あるいは、オブジェクトの所有者で、作成したロールに権限を付与します。
dbadmin=> GRANT [付与する権限] ON [オブジェクト] TO [ロール];例)publicスキーマのlineorderテーブルに対してSELECT権限を持つロールを作成する場合
dbadmin=> GRANT SELECT ON public.lineorder TO test_role;ユーザへのロールの割り当て
作成したロールを任意のユーザに割り当てます。
1)GRANT文でロールを割り当てます。
dbadmin=> GRANT ロール名 to ユーザ名;例)kka_userにtest_roleを割り当てる場合
dbadmin=> GRANT test_role TO kka_user;2)割り当てたロールを該当ユーザのデフォルトのロールに設定します。
dbadmin=> ALTER USER ユーザ名 DEFAULT ROLE ロール名;例)kka_userのデフォルトロールにtest_roleを追加する場合
dbadmin=> ALTER USER kka_user DEFAULT ROLE test_role;※本設定をしない場合、ロールを割り当てられたユーザは、ログイン後に毎回ロールを有効化する作業が必要になります。
割り当てられているロールの確認
ロールを割り当てられたユーザで以下のコマンドを実行すると、自身に割り当てられている(有効な)ロールを確認できます。
例)kka_userで確認した場合
kka_user=> SHOW ENABLED_ROLES;
name | setting
---------------+-----------------------
enabled roles | test_role, test_role2
(1 row)上記の例ではkka_userにはtest_role、test_role2が割り当てられている(有効になっている)ことが確認できます。
作成したロールの情報を確認する
作成したロールに割り当てられている権限等の情報を確認する場合は、以下のSQLを実行します。
dbadmin=> SELECT
dbadmin-> r.role_id,
dbadmin-> r.name,
dbadmin-> r.assigned_roles,
dbadmin-> g.object_schema,
dbadmin-> g.object_name,
dbadmin-> g.object_type,
dbadmin-> g.privileges_description
dbadmin-> FROM roles r JOIN grants g
dbadmin-> ON r.name=g.grantee
dbadmin-> AND
dbadmin-> r.name NOT IN ('public','dbuser','dbadmin','pseudosuperuser')
dbadmin-> ;
role_id | name | assigned_roles | object_schema | object_name | object_type | privileges_description
-------------------+-----------+----------------+---------------+-------------+-------------+------------------------
45035996280725724 | test_role | | public | LINEORDER | TABLE | SELECT
(1 row)上記の例では、test_roleロールにはpublicスキーマのLINEORDERテーブルに対してのSELECT権限が付与されていることが確認できます。
[roles、grants]
列名 | 内容 |
|---|---|
role_id | ロールID |
name | ロール名 |
assigned_roles | 割り当てられているロール |
object_schema | 権限が付与されたスキーマ名 |
object_name | 権限が付与されたオブジェクト名 |
object_type | 権限が適用されるオブジェクト |
privileges_description | 割り当てられている権限の詳細 |
検証バージョンについて
この記事の内容はVertica 9.1で確認しています。
