OpenText Analytics Database 旧Vertica

技術情報サイト

Analytics Database

権限管理を容易にする方法(ロールについて)

公開日:
更新日:
セキュリティ
#権限

ユーザへの権限付与はユーザごとに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で確認しています。