OpenText Analytics Database 旧Vertica

技術情報サイト

Analytics Database

Verticaデータベースにて事前に作成されているロール

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

はじめに

ロールは権限をまとめたものであり、ユーザに付与します。複数の同じ権限を多数のユーザに付与するような場合、ロールを使用すると権限管理が容易になります。管理者が明示的に作成することもできますが、Verticaには事前に定義されたロールが5つありそれらを使用することも可能です。

Verticaの事前定義ロール

以下に各ロールの概要をご紹介します。

DBADMIN

このロールを付与されたユーザは、以下を実行する権限を持ちます。

・ユーザとロールの作成、ならびにユーザへのロールと権限付与
・スキーマの作成と削除
・すべてのシステムテーブルの確認
・ユーザセッションの参照、停止
・任意のユーザが作成したすべてのデータへのアクセス

[実行例]

#ユーザ作成しようとすると権限不足で失敗する
=> CREATE USER USER2;
ROLLBACK 4005:  Must be superuser to create users
=> ¥q

#dbadminユーザに接続し DBADMIN ロールを付与
$ vsql
       
dbadmin=> GRANT DBADMIN TO ROLE_USER WITH ADMIN OPTION;
GRANT ROLE
dbadmin=> ALTER USER ROLE_USER DEFAULT ROLE DBADMIN;
ALTER USER
dbadmin=> ¥q

#再度接続するとユーザ作成が可能になる
$ vsql --username role_user

=> CREATE USER USER2;
CREATE USER
=> ¥du
      List of users
 User name | Is Superuser
-----------+--------------
 dbadmin   | t
 role_user | f
 user2     | f
(3 rows)

PSEUDOSUPERUSER

このロールを付与されたユーザは、完全な管理者権限を取得できます。
以下を実行する権限が含まれます。

・ユーザとロールの作成、ならびにユーザへのロールと権限付与
・スキーマとテーブルの作成
・ユーザアカウントの変更
例)ユーザアカウントのパスワード設定、アカウントのロック/ロック解除
・UDFライブラリと関数、ならびに外部プロシージャの作成や削除
・任意のユーザが作成したすべてのデータへのアクセス

[実行例]

#ユーザ作成しようとすると権限不足で失敗する
=> create USER USER3;
ROLLBACK 4005:  Must be superuser to create users
=> ¥q

#dbadminユーザに接続し PSEUDOSUPERUSER ロールを付与
$ vsql

dbadmin=> GRANT PSEUDOSUPERUSER TO USER2 WITH ADMIN OPTION;
GRANT ROLE
dbadmin=> ALTER USER USER2 DEFAULT ROLE PSEUDOSUPERUSER;
ALTER USER
dbadmin=> ¥q

#再度接続するとユーザ作成が可能になる
$ vsql --username user2

=> CREATE USER USER3;
CREATE USER
=> ¥du
      List of users
 User name | Is Superuser
-----------+--------------
 dbadmin   | t
 role_user | f
 user2     | f
 user3     | f
(4 rows)

DBDUSER

このロールを付与されたユーザは、コマンドラインから Database Designer 関数を呼び出すことができます。
Database Designer 関数を利用することで、Management ConsoleやAdministration Toolsと同様にプロジェクションの最適化やクエリスペシフィックプロジェクションを作成することができます。

詳細については以下のマニュアルを必要に応じて参照してください。
https://www.vertica.com/docs/10.1.x/HTML/Content/Authoring/SQLReferenceManual/Functions/VerticaFunctions/DatabaseDesigner/DatabaseDesignerFunctions.htm

※非dbadminユーザ(DB)は、DBDUSERロールが付与されていても、Administration ToolsやManagement Consoleから、Database Designerは実行できません。
Administration ToolsやManagement Consoleから、Database Designerを実行できるのは、dbadminユーザ(DB)のみです。

[実行例]

#Database Designer の実行には DBDUSER ロールが必要なためクエリの実行も失敗
=> SELECT DESIGNER_CREATE_DESIGN('VMART_DESIGN');
ERROR 5392:  User must have the DBDUSER role to run the database designer
=> ¥q

##dbadminユーザに接続し DBDUSER ロールを付与
$ vsql

dbadmin=> GRANT DBDUSER TO USER3 WITH ADMIN OPTION;
GRANT ROLE
dbadmin=> ALTER USER USER3 DEFAULT ROLE DBDUSER;
ALTER USER
dbadmin=> ¥q

#先ほどと同じクエリの実行が可能になる
$ vsql --username user3

=> SELECT DESIGNER_CREATE_DESIGN('VMART_DESIGN');
 DESIGNER_CREATE_DESIGN
------------------------
                      0
(1 row)

SYSMONITOR

このロールを付与されたユーザは、監視可能としてマークされているすべてのシステムテーブルを表示することができます。監視可能なすべてのテーブルのリストを表示するには、以下 SQL を実行します。

dbadmin=> SELECT * FROM SYSTEM_TABLES WHERE IS_MONITORABLE=’t';
-[ RECORD 1 ]-----------------+-------------------------------------------------
table_schema_id               | 8301
table_schema                  | v_catalog
table_id                      | 95400
table_name                    | access_policy
table_description             | Access Policy information
is_superuser_only             | t
is_monitorable                | t
is_accessible_during_lockdown | f
-[ RECORD 2 ]-----------------+-------------------------------------------------
table_schema_id               | 8302
table_schema                  | v_monitor
table_id                      | 24000
table_name                    | active_events
table_description             | Displays all of the active events in the cluster
is_superuser_only             | t
is_monitorable                | t
is_accessible_during_lockdown | f
-[ RECORD 3 ]-----------------+-------------------------------------------------
table_schema_id               | 8301
table_schema                  | v_catalog
table_id                      | 117200
table_name                    | branches_status
table_description             | Current status of existing branches
is_superuser_only             | t
is_monitorable                | t
is_accessible_during_lockdown | f
:

[実行例]

#権限不足のため active_events システムテーブルの参照に失敗
=> SELECT * FROM ACTIVE_EVENTS;
ERROR 4367:  Permission denied for relation active_events
=> ¥q
$ vsql

#dbadminユーザに接続し SYSMONITOR ロールを付与
dbadmin=> GRANT SYSMONITOR TO MONITERING WITH ADMIN OPTION;
GRANT ROLE
dbadmin=> alter USER MONITERING DEFAULT ROLE SYSMONITOR;
ALTER USER
dbadmin=> ¥q

#active_events システムテーブルが参照できるようになる
$ vsql --username monitering

=> SELECT * FROM ACTIVE_EVENTS;
     node_name     | event_code | event_id | event_severity |    event_posted_timestamp     |       event_expiration        |          event_code_description           |                                event_problem_description                                 |  reporting_node   | event_sent_to_channels | event_posted_count
-------------------+------------+----------+----------------+-------------------------------+-------------------------------+-------------------------------------------+------------------------------------------------------------------------------------------+-------------------+------------------------+--------------------
 v_testdb_node0001 |          6 |        6 | Informational  | 2021-05-19 09:43:00.024333+09 | 2089-06-06 12:57:07.024333+09 | Node State Change                         | Changing node v_testdb_node0001 startup state to UP                                      | v_testdb_node0001 | Vertica Log            |                  1
 v_testdb_node0001 |          3 |        0 | Critical       | 2021-05-19 09:43:00.03238+09  | 2089-06-11 19:21:30.812051+09 | Current Fault Tolerance at Critical Level | Loss of node v_testdb_node0001 will cause shutdown to occur. K=0 total number of nodes=1 | v_testdb_node0001 | Vertica Log            |                  8
 v_testdb_node0001 |          0 |        0 | Warning        | 2021-05-19 09:44:54.001002+09 | 2021-05-24 16:21:54.000721+09 | Low Disk Space                            | Warning: Low disk space detected (72% in use)                                            | v_testdb_node0001 | Vertica Log            |              45570
(3 rows)

PUBLIC

新規ユーザを作成した際に自動的に割り当てられるロールです。
常に有効であり、削除または取り消すことはできません。このロールを使用して、すべてのデータベースユーザに同じ最小特権セットを付与します。

参考情報

権限・ロールのまとめ記事
https://www.ashisuto.co.jp/cm/analytics-database/privilege-role-summary.html

権限管理を容易にする方法(ロールについて)
https://www.ashisuto.co.jp/cm/analytics-database/create_role.html

データ参照をアクセス制御する方法(行アクセス)
https://www.ashisuto.co.jp/cm/analytics-database/access-ctrl-row.html

Predefined Database Roles
https://www.vertica.com/docs/10.1.x/HTML/Content/Authoring/AdministratorsGuide/DBUsersAndPrivileges/Roles/PredefinedRoles.htm

DBADMIN
https://www.vertica.com/docs/10.1.x/HTML/Content/Authoring/AdministratorsGuide/DBUsersAndPrivileges/Roles/DBADMINRole.htm

PSEUDOSUPERUSER
https://www.vertica.com/docs/10.1.x/HTML/Content/Authoring/AdministratorsGuide/DBUsersAndPrivileges/Roles/PSEUDOSUPERUSERRole.htm

DBDUSER
https://www.vertica.com/docs/10.1.x/HTML/Content/Authoring/AdministratorsGuide/DBUsersAndPrivileges/Roles/DBDUSERRole.htm

SYSMONITOR
https://www.vertica.com/docs/10.1.x/HTML/Content/Authoring/AdministratorsGuide/DBUsersAndPrivileges/Roles/SYSMONITORROLE.htm

SYSTEM_TABLES
https://www.vertica.com/docs/10.1.x/HTML/Content/Authoring/SQLReferenceManual/SystemTables/CATALOG/SYSTEM_TABLES.htm

PUBLIC
https://www.vertica.com/docs/10.1.x/HTML/Content/Authoring/AdministratorsGuide/DBUsersAndPrivileges/Roles/PUBLICRole.htm

検証バージョンについて

この記事の内容はVertica 10.1で確認しています。

更新履歴

2021/05/25 本記事を公開