GRANT TO
説明
GRANTコマンドは以下の用途で使用されます:
- ユーザーまたはロールに指定された権限を付与する。
- ユーザーに指定されたロールを付与する。
関連コマンド
構文
ユーザーまたはロールに指定された権限を付与する
GRANT <privilege_list>
ON { <priv_level>
| RESOURCE <resource_name>
| WORKLOAD GROUP <workload_group_name>
| COMPUTE GROUP <compute_group_name>
| STORAGE VAULT <storage_vault_name>
}
TO { <user_identity> | ROLE <role_name> }
ユーザーに指定されたロールを付与する
GRANT <role_list> TO <user_identity>
必須パラメータ
1. <privilege_list>
付与される権限のカンマ区切りリスト。現在サポートされている権限は以下の通りです:
- NODE_PRIV: クラスターノード操作権限。ノードのオンライン・オフライン操作を含む。
- ADMIN_PRIV: NODE_PRIV以外のすべての権限。
- GRANT_PRIV: 操作権限の権限。ユーザー、ロールの作成・削除、認可・取消、パスワード設定などを含む。
- SELECT_PRIV: 指定されたデータベースまたはテーブルの読み取り権限。
- LOAD_PRIV: 指定されたデータベースまたはテーブルのインポート権限。
- ALTER_PRIV: 指定されたデータベースまたはテーブルのスキーマ変更権限。
- CREATE_PRIV: 指定されたデータベースまたはテーブルの作成権限。
- DROP_PRIV: 指定されたデータベースまたはテーブルの削除権限。
- USAGE_PRIV: 指定されたリソースおよびWorkload Group権限へのアクセス。
- SHOW_VIEW_PRIV: ビュー作成文を表示する権限。
レガシー権限の変換:
- ALLおよびREAD_WRITEは次に変換されます:SELECT_PRIV, LOAD_PRIV, ALTER_PRIV, CREATE_PRIV, DROP_PRIV。
- READ_ONLYはSELECT_PRIVに変換されます。
2. <priv_level>
以下の4つの形式をサポートします:
- ..*: すべてのカタログおよびその中のすべてのデータベースとテーブルに権限を適用できます。
- catalog_name..: 指定されたカタログ内のすべてのデータベースとテーブルに権限を適用できます。
- catalog_name.db.*: 指定されたデータベース下のすべてのテーブルに権限を適用できます。
- catalog_name.db.tbl: 指定されたデータベース下の指定されたテーブルに権限を適用できます。
3. <resource_name>
リソース名を指定します。すべてのリソースにマッチする%と*をサポートしますが、res*のようなワイルドカードはサポートしません。
4. <workload_group_name>
ワークロードグループ名を指定します。すべてのワークロードグループにマッチする%と*をサポートしますが、ワイルドカードはサポートしません。
5. <compute_group_name>
コンピュートグループ名を指定します。すべてのコンピュートグループにマッチする%と*をサポートしますが、ワイルドカードはサポートしません。
6. <storage_vault_name>
ストレージvault名を指定します。すべてのストレージvaultにマッチする%と*をサポートしますが、ワイルドカードはサポートしません。
7. <user_identity>
権限を受け取るユーザーを指定します。CREATE USERで作成されたuser_identityである必要があります。user_identityのホストはドメイン名にすることができます。ドメイン名の場合、権限の有効時間が約1分遅れる可能性があります。
8. <role_name>
権限を受け取るロールを指定します。指定されたロールが存在しない場合、自動的に作成されます。
9. <role_list>
割り当てられるロールのカンマ区切りリスト。指定されたロールは存在している必要があります。
アクセス制御要件
このSQLコマンドを実行するユーザーは、少なくとも以下の権限を持っている必要があります:
| 権限 | オブジェクト | 注記 |
|---|---|---|
| GRANT_PRIV | ユーザーまたはロール | GRANT_PRIV権限を持つユーザーまたはロールのみがREVOKE操作を実行できます。 |
例
-
すべてのカタログとデータベースとテーブルに対する権限をユーザーに付与する:
GRANT SELECT_PRIV ON *.*.* TO 'jack'@'%'; -
指定されたデータベーステーブルに対する権限をユーザーに付与します:
GRANT SELECT_PRIV,ALTER_PRIV,LOAD_PRIV ON ctl1.db1.tbl1 TO 'jack'@'192.8.%'; -
指定されたデータベーステーブルに対する権限をロールに付与します:
GRANT LOAD_PRIV ON ctl1.db1.* TO ROLE 'my_role'; -
すべてのリソースへのアクセスをユーザーに許可する:
GRANT USAGE_PRIV ON RESOURCE * TO 'jack'@'%'; -
指定されたリソースを使用する権限をユーザーに付与します:
GRANT USAGE_PRIV ON RESOURCE 'spark_resource' TO 'jack'@'%'; -
指定されたリソースへのアクセスをロールに付与する:
GRANT USAGE_PRIV ON RESOURCE 'spark_resource' TO ROLE 'my_role'; -
指定されたロールをユーザーに付与する:
GRANT 'role1','role2' TO 'jack'@'%'; -
指定されたワークロードグループ 'g1' をユーザー jack に付与する:
GRANT USAGE_PRIV ON WORKLOAD GROUP 'g1' TO 'jack'@'%'; -
ユーザー jack に付与されたすべてのワークロードグループをマッチ:
GRANT USAGE_PRIV ON WORKLOAD GROUP '%' TO 'jack'@'%'; -
ワークロードグループ 'g1' をロール my_role に付与する:
GRANT USAGE_PRIV ON WORKLOAD GROUP 'g1' TO ROLE 'my_role'; -
jackがdb1配下のview1の作成文を表示することを許可する:
GRANT SHOW_VIEW_PRIV ON db1.view1 TO 'jack'@'%'; -
指定されたcompute groupを使用するユーザー権限を付与する:
GRANT USAGE_PRIV ON COMPUTE GROUP 'group1' TO 'jack'@'%'; -
指定されたcompute groupを使用する権限をroleに付与する:
GRANT USAGE_PRIV ON COMPUTE GROUP 'group1' TO ROLE 'my_role'; -
すべてのcompute groupを使用するユーザー権限を付与する:
GRANT USAGE_PRIV ON COMPUTE GROUP '*' TO 'jack'@'%'; -
指定されたストレージボールトを使用するためのユーザー権限を付与する:
GRANT USAGE_PRIV ON STORAGE VAULT 'vault1' TO 'jack'@'%'; -
指定されたストレージボールトを使用するためのロール権限を付与する:
GRANT USAGE_PRIV ON STORAGE VAULT 'vault1' TO ROLE 'my_role'; -
すべてのストレージボールトを使用するユーザー権限を付与:
GRANT USAGE_PRIV ON STORAGE VAULT '*' TO 'jack'@'%';