ユーザーまたはロールに対して、デフォルトのアクセスレベルを超える感度レベルでのデータへのアクセスを許可します。
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
対象の MaxCompute プロジェクトにおいて、Project Owner または Admin のロールを有すること
アクセスを許可するテーブルまたはビューの名前です(
show tables;を MaxCompute クライアント で実行して確認します)アクセス権を付与するユーザーまたはロールの名前(確認するには、MaxCompute クライアントで
list users;またはlist roles;を実行します)
注意事項
列レベルの LABEL 付与は、同一ユーザーに対するテーブルレベルの LABEL 付与をオーバーライドします。
構文
grant Label <number> on table <table_name> [(<column_list>)] to {USER|ROLE} <name> [with exp <days>];パラメーター
| パラメーター | 必須 | 説明 |
|---|---|---|
number | はい | 付与する最高感度レベル。有効な値:0~9(感度レベルに対応する LABEL)。 |
table_name | はい | テーブルまたはビューの名前。 |
column_list | いいえ | LABEL アクセスを許可する列。複数の列を指定する場合は、カンマ(,)で区切ります。省略した場合、付与はテーブル全体に適用されます。 |
name | はい | ユーザーまたはロールの名前。 |
days | いいえ | 権限の有効期間(日単位)。有効な値:0 ~ 2<sup>63</sup> − 1。デフォルト値:180 日。 |
例
以下の例では、test_project_a プロジェクトを使用します。このプロジェクトには、shop_name、customer_id、および total_price の列を持つ sale_detail テーブルが含まれています。Bob@aliyun.com はプロジェクトオーナーです。Allen は Bob@aliyun.com に所属する RAM ユーザーであり、test_project_a のメンバーです。
ユーザーに対するテーブルレベルの LABEL アクセスの付与
Allen に、感度レベル 3 以下で sale_detail 内のすべてのデータへのアクセスを付与します。有効期間は 4 日間です。
-- Bob@aliyun.com としてプロジェクトに切り替えます
use test_project_a;
-- sale_detail テーブルの感度レベル 3 以下にあるデータへのアクセスを Allen に付与します(有効期限は 4 日間)
grant Label 3 on table sale_detail to USER RAM$Bob@aliyun.com:Allen with exp 4;
-- 権限付与を確認します
show label grants on table sale_detail for USER RAM$Bob@aliyun.com:Allen;出力結果には、各列に対する付与された LABEL および有効期限が表示されます。
User Label: 1
+-------------+--------------+--------------------------+
| Column | GrantedLabel | Expires |
+-------------+--------------+--------------------------+
| total_price | 3 | 2021-12-31T19:56:18+0800 |
+-------------+--------------+--------------------------+ユーザーに対する列レベルの LABEL アクセスの付与
Allen ユーザーに、感度レベル 4 以下で特定の列 (shop_name、customer_id、total_price) へのアクセスを付与します。有効期間は 10 日間です。列レベルの権限付与は、同一ユーザーに対する既存のテーブルレベルの権限付与をオーバーライドします。
-- 感度レベル 4 以下で特定の列のデータへの Allen のアクセスを許可し、10 日間有効
grant Label 4 on table sale_detail(shop_name, customer_id, total_price) to USER RAM$Bob@aliyun.com:Allen with exp 10;
-- 許可を確認する
show label grants on table sale_detail for USER RAM$Bob@aliyun.com:Allen;出力結果には、列レベルの付与内容が確認できます。
User Label: 1
+-------------+--------------+--------------------------+
| Column | GrantedLabel | Expires |
+-------------+--------------+--------------------------+
| customer_id | 4 | 2022-01-06T19:58:00+0800 |
+-------------+--------------+--------------------------+
| shop_name | 4 | 2022-01-06T19:58:00+0800 |
+-------------+--------------+--------------------------+
| total_price | 4 | 2022-01-06T19:58:00+0800 |
+-------------+--------------+--------------------------+ロールに対する LABEL アクセスの付与
複数のユーザーに対して一度に LABEL アクセスを適用するには、個別のユーザーではなくロールに対して LABEL を付与します。以下の例では、sale_detail のデータを感度レベル 3 以下で data_analyst ロールに 30 日間有効な形でアクセスを許可します。
grant Label 3 on table sale_detail to ROLE data_analyst with exp 30;次のステップ
SET LABEL:ユーザーまたはロールに LABEL アクセスを付与する前に、テーブルまたは列に感度レベルの LABEL を設定します。
REVOKE:アクセスが必要なくなった場合、ユーザーまたはロールから明示的に付与された LABEL を削除します。
CLEAR EXPIRED GRANTS:有効期限が切れた権限をクリーンアップします。