目次
はじめに
ロールは権限をまとめたものであり、ユーザに付与します。複数の同じ権限を多数のユーザに付与するような場合、ロールを使用すると権限管理が容易になります。管理者が明示的に作成することもできますが、Verticaには事前に定義されたロールが5つありそれらを使用することも可能です。Verticaの事前定義ロール
以下に各ロールの概要をご紹介します。DBADMIN
このロールを付与されたユーザは、以下を実行する権限を持ちます。・ユーザとロールの作成、ならびにユーザへのロールと権限付与
・スキーマの作成と削除
・すべてのシステムテーブルの確認
・ユーザセッションの参照、停止
・任意のユーザが作成したすべてのデータへのアクセス
[実行例]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
#ユーザ作成しようとすると権限不足で失敗する => 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ライブラリと関数、ならびに外部プロシージャの作成や削除
・任意のユーザが作成したすべてのデータへのアクセス
[実行例]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
#ユーザ作成しようとすると権限不足で失敗する => 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)のみです。
[実行例]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#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 を実行します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
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 : |
[実行例]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#権限不足のため 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
新規ユーザを作成した際に自動的に割り当てられるロールです。常に有効であり、削除または取り消すことはできません。このロールを使用して、すべてのデータベースユーザに同じ最小特権セットを付与します。
参考情報
権限・ロールのまとめ記事http://vertica-tech.ashisuto.co.jp/privilege-role-summary/
権限管理を容易にする方法(ロールについて)
http://vertica-tech.ashisuto.co.jp/create_role/
データ参照をアクセス制御する方法(行アクセス)
http://vertica-tech.ashisuto.co.jp/access-ctrl-row/
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