ユーザー権限の管理
このトピックでは、StarRocks におけるユーザー、ロール、および権限の管理方法について説明します。
StarRocks は、ロールベースアクセス制御 (RBAC) とアイデンティティベースアクセス制御 (IBAC) の両方を使用して StarRocks クラスター内の権限を管理し、クラスター管理者がクラスター内の権限を異なる粒度レベルで簡単に制限できるようにします。
StarRocks クラスター内では、権限をユーザーまたはロールに付与できます。ロールは、必要に応じてクラスター内のユーザーや他のロールに割り当てることができる権限の集合です。ユーザーには 1 つ以上のロールを付与でき、それにより異なるオブジェクトに対する権限が決まります。
ユーザーとロール情報の表示
システム定義のロール user_admin を持つユーザーは、StarRocks クラスター内のすべてのユーザーとロール情報を表示できます。
権限情報の表示
SHOW GRANTS を使用して、ユーザーまたはロールに付与された権限を表示できます。
-
現在のユーザーの権限を表示します。
SHOW GRANTS;NOTE
すべてのユーザーは、自分の権限を表示するために特別な権限を必要としません。
-
特定のユーザーの権限を表示します。
次の例は、ユーザー
jackの権限を示しています。SHOW GRANTS FOR jack@'172.10.1.10'; -
特定のロールの権限を表示します。
次の例は、ロール
example_roleの権限を示しています。SHOW GRANTS FOR ROLE example_role;
ユーザーのプロパティの表示
SHOW PROPERTY を使用して、ユーザーのプロパティを表示できます。
次の例は、ユーザー jack のプロパティを示しています。
SHOW PROPERTY FOR jack@'172.10.1.10';
ロールの表示
SHOW ROLES を使用して、StarRocks クラスター内のすべてのロールを表示できます。
SHOW ROLES;
ユーザーの表示
SHOW USERS を使用して、StarRocks クラスター内のすべてのユーザーを表示できます。
SHOW USERS;
ユーザーの管理
システム定義のロール user_admin を持つユーザーは、StarRocks でユーザーを作成、変更、削除できます。
ユーザーの作成
ユーザーのアイデンティティ、認証方法、およびデフォルトロールを指定してユーザーを作成できます。
StarRocks は、ログイン資格情報または LDAP 認証によるユーザー認証をサポートしています。StarRocks の認証についての詳細は、Authentication を参照してください。ユーザーの作成に関する詳細な手順については、CREATE USER を参照してください。
次の例では、ユーザー jack を作成し、IP アドレス 172.10.1.10 からのみ接続を許可し、パスワードを 12345 に設定し、デフォルトロールとして example_role を割り当てます。
CREATE USER jack@'172.10.1.10' IDENTIFIED BY '12345' DEFAULT ROLE 'example_role';
NOTE
- StarRocks はユーザーのパスワードを暗号化して保存します。暗号化されたパスワードは password() 関数を使用して取得できます。
- ユーザー作成時にデフォルトロールが指定されていない場合、システム定義のデフォルトロール
PUBLICがユーザーに割り当てられます。
ユーザーの変更
ユーザーのパスワード、デフォルトロール、また はプロパティを変更できます。
ユーザーのデフォルトロールは、ユーザーが StarRocks に接続すると自動的にアクティブになります。接続後にユーザーのすべてのロール(デフォルトおよび付与されたロール)を有効にする方法については、Enable all roles を参照してください。
ユーザーのデフォルトロールの変更
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';
ユーザーのプロパティの変更
SET PROPERTY を使用して、ユーザーのプ ロパティを設定できます。
次の例では、ユーザー jack の最大接続数を 1000 に設定しています。同じユーザー名を持つユーザーアイデンティティは同じプロパティを共有します。
したがって、jack のプロパティを設定するだけで、この設定はユーザー名 jack を持つすべてのユーザーアイデンティティに適用されます。
SET PROPERTY FOR jack 'max_user_connections' = '1000';
ユーザーのパスワードのリセット
SET PASSWORD または ALTER USER を使用して、ユーザーのパスワードをリセットできます。
NOTE
- すべてのユーザーは、自分のパスワードをリセットするために特別な権限を必要としません。
rootユーザー自身のみがそのパスワードを設定できます。パスワードを忘れて StarRocks に接続できない場合は、Reset lost root password を参照してください。
次の例は、jack のパスワードを 54321 にリセットする方法を示しています。
-
SET PASSWORD を使用してパスワードをリセットします。
SET PASSWORD FOR jack@'172.10.1.10' = PASSWORD('54321'); -
ALTER USER を使用してパスワードをリセット します。
ALTER USER jack@'172.10.1.10' IDENTIFIED BY '54321';
失われた root パスワードのリセット
root ユーザーのパスワードを忘れて StarRocks に接続できない場合は、次の手順に従ってリセットできます。
-
ユーザー認証を無効にするために、すべての FE ノードの設定ファイル fe/conf/fe.conf に次の設定項目を追加します。
enable_auth_check = false -
設定を有効にするために、すべての FE ノードを再起動します。
./fe/bin/stop_fe.sh
./fe/bin/start_fe.sh -
MySQL クライアントから
rootユーザーを介して StarRocks に接続します。ユーザー認証が無効になっている場合、パスワードを指定する必要はありません。mysql -h <fe_ip_or_fqdn> -P<fe_query_port> -uroot -
rootユーザーのパスワードをリセットします。SET PASSWORD for root = PASSWORD('xxxxxx'); -
すべての FE ノードの設定ファイル fe/conf/fe.conf に設定項目
enable_auth_checkをtrueに設定して、ユーザー認証を再度有効にします。enable_auth_check = true -
設定を有効にするために 、すべての FE ノードを再起動します。
./fe/bin/stop_fe.sh
./fe/bin/start_fe.sh -
MySQL クライアントから
rootユーザーと新しいパスワードを使用して StarRocks に接続し、パスワードが正常にリセットされたかどうかを確認します。mysql -h <fe_ip_or_fqdn> -P<fe_query_port> -uroot -p<xxxxxx>
ユーザーの削除
DROP USER を使用してユーザーを削除できます。
次の例は、ユーザー jack を削除する方法を示しています。
DROP USER jack@'172.10.1.10';
ロールの管理
システム定義のロール 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 を使用して、ユーザーまたは他のロールにロールを付与できます。
-
ユーザーにロールを付与します。
次の例は、ロール
example_roleをユーザーjackに付与する方法を示しています。GRANT example_role TO USER jack@'172.10.1.10'; -
他のロールにロールを付与します。
次の例は、ロール
example_roleをロールtest_roleに付与する方法を示しています。GRANT example_role TO ROLE test_role;