ユーザー権限の管理
このトピックでは、StarRocks におけるユーザー、ロール、および権限の管理方法について説明します。
StarRocks は、ロールベースのアクセス制御 (RBAC) とアイデンティティベースのアクセス制御 (IBAC) の両方を使用して StarRocks クラスター内の権限を管理し、クラスター管理者が異なる粒度レベルでクラスター内の権限を簡単に制限できるようにします。
StarRocks クラスター内では、権限はユーザーまたはロールに付与できます。ロールは、必要に応じてクラスター内のユーザーまたは他のロールに割り当てることができる権限の集合です。ユーザーには 1 つ以上のロールを付与でき、それによって異なるオブジェクトに対する権限が決まります。
権限とロール情報の表示
システム定義のロール user_admin を持つユーザーは、StarRocks クラスター内のすべてのユーザーおよびロール情報を表示できます。
権限情報の表示
ユーザーまたはロールに付与された権限を SHOW GRANTS を使用して表示できます。
-
現在のユーザーの権限を表示する。
SHOW GRANTS;注意
すべてのユーザーは、自分の権限を表示することができます。
-
特定のユーザーの権限を表示する。
次の例は、ユーザー
jackの権限を示しています。SHOW GRANTS FOR jack@'172.10.1.10'; -
特定のロールの権限を表示する。
次の例は、ロール
example_roleの権限を示しています。SHOW GRANTS FOR ROLE example_role;
ロールの表示
StarRocks クラスター内のすべてのロールを SHOW ROLES を使用して表示できます。
SHOW ROLES;
ロールの管理
システム定義のロール user_admin を持つユーザーは、StarRocks でロールを作成、付与、取り消し、または削除できます。
ロールの作成
CREATE ROLE を使用してロールを作成できます。デフォルトでは、ユーザーは最大 64 のロールを持つことができます。この設定は、FE ダイナミックパラメータ privilege_max_total_roles_per_user を使用して調整できます。ロールは最大 16 の継承レベルを持つことができます。この設定は、FE ダイナミックパラメータ privilege_max_role_depth を使用して調整できます。
次の例は、ロール example_role を作成します。
CREATE ROLE example_role;
ロールの付与
GRANT を使用して、ユーザーまたは他のロールにロールを付与できます。
-
ユーザーにロールを付与する。
次の例は、ユーザー
jackにロールexample_roleを付与します。GRANT example_role TO USER jack@'172.10.1.10'; -
他のロールにロールを付与する。
次の例は、ロール
test_roleにロールexample_roleを付与します。GRANT example_role TO ROLE test_role; -
ユーザーグループにロールを付与する。Group Provider を介して、外部認証システムからユーザーグループを識別できます。
次の例は、ユーザーグループ
analystsにロールexample_roleを付与します:GRANT example_role TO EXTERNAL GROUP analysts;
ユーザーのデフォルトロールを変更する
ユーザーのデフォルトロールは、ユーザーが StarRocks に接続すると自動的にアクティブ化されます。接続後にユーザーのすべてのロール(デフォルトおよび付与されたロール)を有効にする方法については、すべてのロールを有効にする を参照してください。
SET DEFAULT ROLE または ALTER USER を使用して、ユーザーのデフォルトロールを設定できます。
次の例はどちらも、jack のデフォルトロールを db1_admin に設定します。db1_admin は jack に割り当てられている必要があります。
-
SET DEFAULT ROLE を使用してデフォルトロールを設定する:
SET DEFAULT ROLE 'db1_admin' TO jack@'172.10.1.10'; -
ALTER USER を使用してデフォルトロールを設定する:
ALTER USER jack@'172.10.1.10' DEFAULT ROLE 'db1_admin';
ロールの取り消し
REVOKE を使用して、ユーザーまたは他のロールからロールを取り消すことができます。
注意
システム定義のデフォルトロール
PUBLICをユーザーから取り消すことはできません。
-
ユーザーからロールを取り消す。
次の例は、ユーザー
jackからロールexample_roleを取り消します。REVOKE example_role FROM USER jack@'172.10.1.10'; -
他のロールからロールを取り消す。
次の例は、ロール
test_roleからロールexample_roleを取り消します。REVOKE example_role FROM ROLE test_role;
ロールの削除
DROP ROLE を使用してロールを削除できます。
次の例は、ロール example_role を削除します。
DROP ROLE example_role;
注意
システム定義のロールは削除できません。
すべてのロールを有効にする
ユーザーのデフォルトロールは、ユーザーが StarRocks クラスターに接続するたびに自動的にアクティブ化されるロールです。
すべての StarRocks ユーザーが StarRocks クラスターに接続するときに、すべてのロール(デフォルトおよび付与されたロ ール)を有効にしたい場合は、次の操作を行うことができます。
この操作には、システム権限 OPERATE が必要です。
SET GLOBAL activate_all_roles_on_login = TRUE;
また、SET ROLE を使用して割り当てられたロールをアクティブ化することもできます。たとえば、ユーザー jack@'172.10.1.10' は db_admin と user_admin のロールを持っていますが、これらはユーザーのデフォルトロールではなく、ユーザーが StarRocks に接続すると自動的にアクティブ化されません。jack@'172.10.1.10' が db_admin と user_admin をアクティブ化する必要がある場合、SET ROLE db_admin, user_admin; を実行できます。SET ROLE は元のロールを上書きします。すべてのロールを有効にしたい場合は、SET ROLE ALL を実行してください。