StarRocks の権限管理システムは、詳細なテーブルレベルのアクセスの制御、ロールベースアクセス制御 (RBAC)、およびホワイトリストメカニズムをサポートしています。
StarRocks 2.x および 3.x の間では、一部の SQL 構文および動作が異なります。該当する場合は、各セクションでバージョン固有の構文を提供しています。完全なコマンドリファレンスについては、StarRocks 2.5 コマンドリファレンスまたは StarRocks 3.2 コマンドリファレンスをご参照ください。
各操作を実行できるユーザー
変更を行う前に、ご利用のアカウントにその操作に必要な権限があることを確認してください。
| 操作 | 必要な権限 |
|---|---|
| ユーザーの作成 | ADMIN権限、または任意のレベルのGRANT権限 |
| 他のユーザーのパスワードを変更 | ADMIN権限、またはグローバルレベルのGRANT権限 |
| 自身のパスワードを変更 | 認証済みユーザー |
| ルートユーザーのパスワードをリセット | ルートユーザーのみ |
| ユーザーの削除 | ADMIN権限 |
| 権限の付与 | ADMIN権限、または一致する範囲 (グローバル / データベース / テーブル) のGRANT権限 |
| 権限の取り消し | ADMIN権限、または一致する範囲 (グローバル / データベース / テーブル) のGRANT権限 |
| ロールの作成 | ADMIN権限 |
| ロールの削除 | GRANT_PRIV または ADMIN_PRIV 権限 |
グローバルレベルのGRANT権限は、任意のユーザーに任意の権限を付与できるため、ADMIN権限と同等です。慎重に付与してください。
ADMIN_PRIV 権限は、グローバルレベルでのみユーザーに付与または取り消すことができます。
ユーザー管理
ユーザーの作成
CREATE USER user_identity [auth_option] [DEFAULT ROLE 'role_name'];パラメーター
| パラメーター | 説明 |
|---|---|
user_identity | ユーザーID。 username@'userhost' または username@['domain'] の形式を使用します。 |
auth_option | 認証方式。有効な値: IDENTIFIED BY 'auth_string'、IDENTIFIED WITH auth_plugin、IDENTIFIED WITH auth_plugin BY 'auth_string'、IDENTIFIED WITH auth_plugin AS 'auth_string'。 |
DEFAULT ROLE | ログイン時にユーザーに割り当てられるデフォルトロール。 |
例
パスワードなしでユーザーを作成:
CREATE USER 'jack';プレーンテキストパスワードを持つユーザーを作成し、172.10.. からのログインに制限:
CREATE USER 'jack'@'172.10.**.**' IDENTIFIED WITH mysql_native_password BY '123456';暗号文パスワードを持つユーザーを作成し、172.10.. からのログインに制限:
CREATE USER 'jack'@'172.10.**.**' IDENTIFIED BY PASSWORD '6BB4837EB74329105EE4568DDA7DC67ED2CA****';PASSWORD()を使用してパスワードの暗号文を取得します。例:SELECT PASSWORD('123456');
192.168 サブネットに制限されたユーザーを作成し、example_role ロールを割り当てます:
-- ユーザー作成時にロールを割り当てる
CREATE USER 'jack'@'192.168.%' DEFAULT ROLE 'example_role';example_domain ドメインからのログインに制限されたユーザーを作成:
CREATE USER 'jack'@['example_domain'] IDENTIFIED BY '12345';ユーザーのパスワードを変更
SET PASSWORD [FOR user_identity] = [PASSWORD('plain password')]|['hashed password'];現在のユーザーのパスワードを変更:
SET PASSWORD = PASSWORD('123456');
SET PASSWORD = '6BB4837EB74329105EE4568DDA7DC67ED2CA****';特定のユーザーのパスワードを変更:
SET PASSWORD FOR 'jack'@'192.%' = PASSWORD('123456');
SET PASSWORD FOR 'jack'@['domain'] = '6BB4837EB74329105EE4568DDA7DC67ED2CA****';SELECT CURRENT_USER()を使用して現在のユーザーのIDを取得します。PASSWORD()を使用してパスワードの暗号文を取得します。
ユーザーの削除
DROP USER 'user_identity';ユーザープロパティの表示
SHOW PROPERTY [FOR user] [LIKE key];| パラメーター | 説明 |
|---|---|
user | ユーザー名。 |
key | プロパティをフィルターするためのキーワード。 |
特定のユーザーのすべてのプロパティを表示:
SHOW PROPERTY FOR 'jack';特定のユーザーの load_cluster に関連するプロパティを表示:
SHOW PROPERTY FOR 'jack' LIKE '%load_cluster%';権限の付与と取り消し
権限の付与
StarRocks 3.x
すべてのデータベースとテーブルに対する SELECT権限をユーザーに付与:
GRANT SELECT ON *.* TO 'jack'@'%';db1 内のすべてのテーブルに対する INSERT権限をロールに付与:
GRANT INSERT ON db1.* TO ROLE '<role_name>';すべてのリソースに対する USAGE権限をユーザーに付与:
GRANT USAGE ON RESOURCE * TO 'jack'@'%';StarRocks 2.x
データベースまたはテーブルに対する権限をユーザーまたはロールに付与:
GRANT privilege_list ON db_name[.tbl_name] TO user_identity [ROLE role_name];リソースに対する権限をユーザーまたはロールに付与:
GRANT privilege_list ON RESOURCE resource_name TO user_identity [ROLE role_name];ROLE role_name で指定されたロールが存在しない場合、自動的に作成されます。権限リファレンス (StarRocks 2.x)
| 権限 | 説明 |
|---|---|
NODE_PRIV | ノード構成を変更: フロントエンド (FE) ノード、バックエンド (BE) ノード、およびブローカーの追加、削除、非公開。ルートユーザーにのみ付与できます。 |
GRANT_PRIV | 権限を変更: 権限を付与または取り消し、ユーザーとロールを作成、削除、または変更します。 |
SELECT_PRIV | データベースとテーブルへの読み取り専用アクセス。 |
LOAD_PRIV | データベースとテーブルへの書き込みアクセス: LOAD、INSERT、および DELETE 操作。 |
ALTER_PRIV | データベースとテーブルの構造を変更: データベースとテーブルの名前を変更、列を追加、削除、または変更、パーティションを作成または削除します。 |
CREATE_PRIV | データベース、テーブル、およびビューを作成。 |
DROP_PRIV | データベース、テーブル、およびビューを削除。 |
USAGE_PRIV | リソースを使用。 |
権限の取り消し
StarRocks 3.x
ユーザーからテーブルの SELECT権限を取り消し:
REVOKE SELECT ON TABLE sr_member FROM USER 'jack'@'172.10.**.**';ロールからリソースの USAGE権限を取り消し:
REVOKE USAGE ON RESOURCE '<resource_name>' FROM ROLE '<role_name>';StarRocks 2.x
ユーザーまたはロールからデータベースまたはテーブルの権限を取り消し:
REVOKE privilege_list ON db_name[.tbl_name] FROM user_identity [ROLE role_name];ユーザーまたはロールからリソースの権限を取り消し:
REVOKE privilege_list ON RESOURCE resource_name FROM user_identity [ROLE role_name];ロール管理
ロールを使用すると、一連の権限をグループ化し、複数のユーザーに割り当てることができます。ユーザーは、割り当てられたロールに付与されたすべての権限を継承します。
ロールの作成とユーザーへの割り当て
次のワークフローを使用して、ロールを作成し、権限を付与し、ユーザーに割り当てます。
ロールを作成します。
CREATE ROLE <role_name>;ロールに必要な権限を付与します。
-- StarRocks 3.x: grant INSERT on all tables in db1 to the role GRANT INSERT ON db1.* TO ROLE '<role_name>'; -- StarRocks 2.x: grant privileges on a database or table to the role GRANT privilege_list ON db_name[.tbl_name] TO ROLE role_name;アカウント作成時にユーザーにロールを割り当てるか、既存のユーザーのデフォルトロールを更新します。
-- Assign role at user creation CREATE USER 'jack'@'192.168.%' DEFAULT ROLE 'example_role';
ロールの表示
SHOW ROLES;ロールの削除
DROP ROLE <role_name>;