MaxCompute プロジェクトにユーザーを追加した後、そのユーザーが操作を実行するために必要なパーミッションを付与します。MaxCompute では、2 種類の権限付与方式がサポートされています:プロジェクトレベルのロールをユーザーに割り当てる方法、およびユーザーに直接パーミッションを付与する方法です。
前提条件
開始する前に、ユーザーが MaxCompute プロジェクトに追加済みであることを確認してください。詳細については、「ユーザー計画と管理」をご参照ください。
ロールを割り当ててパーミッションを付与
プロジェクトレベルのロールを割り当てる方式は推奨される方法です。ユーザーにロールを割り当てると、そのユーザーは該当ロールが持つすべてのパーミッションを継承します。これにより、単一のロールを変更するだけで、複数のユーザーに対するパーミッションの更新または削除が可能です。
ユーザーへのロールの割り当て
構文
grant <role_name> to <user_name>;
必須パラメーター
| パラメーター | 説明 |
|---|---|
role_name |
割り当てるロールの名前です。利用可能なロールの一覧を表示するには、MaxCompute クライアントで list roles; |
user_name |
ユーザー名です。ユーザーは既にプロジェクトに追加済みである必要があります。サポートされる形式は以下のとおりです:Alibaba Cloud アカウント(ALIYUN$<account_id>)、RAM ユーザー(RAM$<account_id>:<RAM user ID>)、または RAM ロール(RAM$<account_id>:role/<RAM role name>)。プロジェクトのメンバー一覧を表示するには、MaxCompute クライアントで list users;)実行します コマンドを実行します。 |
使用上の注意点
-
1 つのロールを複数のユーザーに割り当てることができます。
-
1 人のユーザーが複数のロールを持つことができます。
例
Alibaba Cloud アカウント、RAM ユーザー、RAM ロールの各ユーザーに Worker ロールを割り当てます:
-- プロジェクトに切り替えます。
use test_project_a;
-- Alibaba Cloud アカウントに Worker ロールを割り当てます。
grant Worker to ALIYUN$5527xxxxxxxx5788;
-- RAM ユーザーに Worker ロールを割り当てます。
grant Worker to RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
-- RAM ロールに Worker ロールを割り当てます。
grant Worker to `RAM$5527xxxxxxxx5788:role/ram_role`;
ユーザーからのロールの取り消し
構文
revoke <role_name> from <user_name>;
必須パラメーター
| パラメーター | 説明 |
|---|---|
role_name |
取り消すロールの名前。利用可能なロールをリスト表示するには、MaxCompute クライアントで list roles;
|
user_name |
ユーザーの名前。サポートされているフォーマット:Alibaba Cloud アカウント (ALIYUN$<account_id>)、RAM ユーザー (RAM$<account_id>:<RAM user ID>)、または RAM ロール (`RAM$<account_id>:role/<RAM role name>)。プロジェクトメンバーをリスト表示するには、MaxCompute クライアントで list users;` を実行します。 |
使用上の注意点
-
ユーザーからロールを取り消すと、そのユーザーが当該ロールから継承していたすべてのパーミッションが失われます。ただし、同じロールが割り当てられている他のユーザーには影響しません。
例
Alibaba Cloud アカウント、RAM ユーザー、RAM ロールの各ユーザーから Worker ロールを取り消します:
-- プロジェクトに切り替えます。
use test_project_a;
-- Alibaba Cloud アカウントから Worker ロールを取り消します。
revoke Worker from ALIYUN$5527xxxxxxxx5788;
-- RAM ユーザーから Worker ロールを取り消します。
revoke Worker from RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
-- RAM ロールから Worker ロールを取り消します。
revoke Worker from `RAM$5527xxxxxxxx5788:role/ram_role`;
ロールベースの権限付与における一般的なシナリオ
| シナリオ | アプローチ |
|---|---|
| ロールを介したユーザーへのオブジェクト操作権限の付与 | ACL ベースのアクセスの制御またはポリシー ベースのアクセスの制御を使用してロールに権限を付与し、その後、ユーザーにロールを割り当てます。 |
| ロールを介したユーザーへのダウンロード権限の付与 | ダウンロード コントロールを使用してロールにダウンロード権限を付与し、その後、ユーザーにロールを割り当てます。 |
| ロールを介した機密データへのアクセスの付与 | ラベル ベースのアクセス制御を使用してロールにラベル権限を付与し、その後、ユーザーにロールを割り当てます。 |
ロール経由でオブジェクト操作のパーミッションを付与
ACL ベースのアクセス制御またはポリシーベースのアクセス制御を用いてロールにパーミッションを付与し、その後複数のユーザーにロールを割り当てます。
ロールへのパーミッション付与の詳細については、「ロールへのオブジェクト操作パーミッションの付与」をご参照ください。
例
プロジェクトオーナー(ALIYUN$5527xxxxxxxx5789)が、RAM ユーザーのアレン、アリス、トムに対して、test_project_a プロジェクト内でテーブル、モデル、関数、インスタンスを作成する権限およびすべてのオブジェクト一覧を表示する権限を付与する必要があります:
-- プロジェクトに切り替えます。
use test_project_a;
-- RAM ユーザーをプロジェクトに追加します。
add user RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
add user RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1650;
add user RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1651;
-- ロールを作成します。
create role Worker;
-- ACL ベースのアクセス制御を用いてロールにパーミッションを付与します(方法 1)。
grant CreateTable, CreateFunction, CreateInstance, List on project test_project_a to ROLE Worker;
-- ポリシーベースのアクセス制御を用いてロールにパーミッションを付与します(方法 2)。
grant CreateTable, CreateFunction, CreateInstance, List
on project test_project_a
to ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
-- 3 人のユーザー全員にロールを割り当てます。
grant Worker to RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
grant Worker to RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1650;
grant Worker to RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1651;
ロールベースのユーザーからオブジェクト操作のパーミッションを取り消す
以下の 2 つの方法があります。影響を受けるユーザー数に応じて選択してください:
-
ロールからパーミッションを取り消す — ロールが割り当てられているすべてのユーザーが即座に当該パーミッションを失います。
-
特定のユーザーからロールを取り消す — 当該ユーザーのみがパーミッションを失い、他のユーザーには影響しません。
例
ロール Worker を持つアレン、アリス、トムからオブジェクト操作のパーミッションを取り消します:
方法 1:ロール Worker からパーミッションを取り消す(3 人のユーザーすべてに影響):
-- test_project_a プロジェクトに切り替えます。
use test_project_a;
-- ユーザー アレンからパーミッションを取り消します。
revoke Label 4 on table sale_detail from USER RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;-- test_project_a プロジェクトに切り替えます。
use test_project_a;
-- ユーザー アレンにパーミッションを付与します。
grant Label 4 on table sale_detail to USER RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;-- test_project_a プロジェクトに切り替えます。
use test_project_a;
-- アレンからダウンロードパーミッションを取り消します。
revoke Download on table sale_detail from USER RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;-- test_project_a プロジェクトに切り替えます。
use test_project_a;
-- アレンにダウンロードパーミッションを付与します。
grant Download on table sale_detail to USER RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;-- test_project_a プロジェクトに切り替えます。
use test_project_a;
-- トムからパーミッションを取り消します。
revoke All on instance 202112300224**** from USER RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1651;-- test_project_a プロジェクトに切り替えます。
use test_project_a;
-- トムからパーミッションを取り消します。
revoke Read, Write on function udf_test from USER RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1651;-- test_project_a プロジェクトに切り替えます。
use test_project_a;
-- アリスからパーミッションを取り消します。
revoke Read, Write on resource udtf.jar from USER RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1650;-- test_project_a プロジェクトに切り替えます。
use test_project_a;
-- アレンからパーミッションを取り消します。
revoke Describe, Select on table sale_detail from USER RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;-- test_project_a プロジェクトに切り替えます。
use test_project_a;
-- Alibaba Cloud ユーザーからパーミッションを取り消します。
revoke CreateTable, CreateFunction, CreateInstance, List on project test_project_a from user ALIYUN$5527xxxxxxxx5788;-- test_project_a プロジェクトに切り替えます。
use test_project_a;
-- トムを test_project_a プロジェクトに追加します。
add user RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1651;
-- トムにパーミッションを付与します。
grant All on instance 202112300224**** to USER RAM$5527xxxxxxxx5789:2763xxxxxxxxxx1651;-- test_project_a プロジェクトに切り替えます。
use test_project_a;
-- トムを test_project_a プロジェクトに追加します。
add user RAM$5527xxxxxxxx5789:2763xxxxxxxxxx1651;
-- トムにパーミッションを付与します。
grant Read, Write on function udf_test to USER RAM$5527xxxxxxxx5789:2763xxxxxxxxxx1651;-- test_project_a プロジェクトに切り替えます。
use test_project_a;
-- アリスを test_project_a プロジェクトに追加します。
add user RAM$5527xxxxxxxx5789:2763xxxxxxxxxx1650;
-- アリスにパーミッションを付与します。
grant Read, Write on resource udtf.jar to USER RAM$5527xxxxxxxx5789:2763xxxxxxxxxx1650;-- test_project_a プロジェクトに切り替えます。
use test_project_a;
-- アレンを test_project_a プロジェクトに追加します。
add user RAM$5527xxxxxxxx5789:2763xxxxxxxxxx1649;
-- RAM ロールを test_project_a プロジェクトに追加します。
add user `RAM$5527xxxxxxxx5789:role/ram_role`;
-- RAM ユーザー アレンにパーミッションを付与します。
grant CreateTable, List on project test_project_a to USER RAM$5527xxxxxxxx5789:2763xxxxxxxxxx1649;
grant Describe, Select on table sale_detail to USER RAM$5527xxxxxxxx5789:2763xxxxxxxxxx1649;
-- RAM ロールにパーミッションを付与します。
grant CreateTable, List on project test_project_a to USER `RAM$5527xxxxxxxx5789:role/ram_role`;
grant Describe, Select on table sale_detail to USER `RAM$5527xxxxxxxx5789:role/ram_role`;-- ALIYUN$5527xxxxxxxx5789 が test_project_a プロジェクトに切り替えます。
use test_project_a;
-- MaxCompute プロジェクトに ALIYUN$5527xxxxxxxx5788 を追加します。
add user ALIYUN$5527xxxxxxxx5788;
-- ALIYUN$5527xxxxxxxx5789 が ALIYUN$5527xxxxxxxx5788 にパーミッションを付与します。
grant CreateTable, CreateFunction, CreateInstance, List on project test_project_a to user ALIYUN$5527xxxxxxxx5788;-- test_project_a プロジェクトに切り替えます。
use test_project_a;
-- ユーザーから Worker ロールを取り消します。アレンは最大感度レベル 2 のデータのみにアクセス可能になります。アリスとトムは引き続き最大感度レベル 4 のデータにアクセスできます。
revoke Worker from RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;-- test_project_a プロジェクトに切り替えます。
use test_project_a;
-- Worker ロールを作成します。
create role Worker;
-- Worker ロールにパーミッションを付与します。
grant Label 4 on table <table_name> to ROLE Worker; -- table_name は送信先テーブルの名前です。
-- ユーザーに Worker ロールを割り当てます。
grant Worker to RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
grant Worker to RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1650;
grant Worker to RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1651;-- test_project_a プロジェクトに切り替えます。
use test_project_a;
-- ユーザーから Worker ロールを取り消します。アレンのみがダウンロードパーミッションを失います。
revoke Worker from RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;-- Bob が test_project_a プロジェクトに切り替えます。
use test_project_a;
-- Bob がアレン、アリス、トムを test_project_a プロジェクトに追加します。
add user RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
add user RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1650;
add user RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1651;
-- Bob が Worker ロールを作成します。
create role Worker;
-- Bob が Worker ロールにパーミッションを付与します。
grant download on table sale_detail to ROLE Worker;
-- ユーザーに Worker ロールを割り当てます。
grant Worker to RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
grant Worker to RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1650;
grant Worker to RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1651;-- test_project_a プロジェクトに切り替えます。
use test_project_a;
-- ユーザーから Worker ロールを取り消します。アレンのみが CreateTable、CreateFunction、CreateInstance、List の各パーミッションを失います。
revoke Worker from RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;-- プロジェクトに切り替えます。
use test_project_a;
-- ロールから ACL ベースのパーミッションを取り消します。
revoke CreateTable, CreateModel, CreateFunction, CreateInstance, List on project test_project_a from ROLE Worker;
-- ロールからポリシーベースのパーミッションを取り消します。
revoke CreateTable, CreateModel, CreateFunction, CreateInstance, List
on project test_project_a
from ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
方法 2:アレンのみから Worker ロールを取り消します:
-- プロジェクトに切り替えます。
use test_project_a;
-- アレンからロールを取り消します。アリスとトムには影響しません。
revoke Worker from RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
ロール経由でダウンロードパーミッションを付与
ダウンロード制御メカニズムを用いてロールにダウンロードパーミッションを付与し、その後ユーザーにロールを割り当てます。
ロールへのダウンロードパーミッション付与の詳細については、「ロールへのダウンロードパーミッションの付与」をご参照ください。
例
RAM ユーザーのアレン、アリス、トムに、test_project_a プロジェクト内の特定のテーブルからデータをダウンロードする権限を付与します:
-- プロジェクトに切り替えます。
use test_project_a;
-- RAM ユーザーをプロジェクトに追加します。
add user RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
add user RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1650;
add user RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1651;
-- ロールを作成します。
create role Worker;
-- テーブルに対するロールのダウンロードパーミッションを付与します。
grant Download on table sale_detail to ROLE Worker;
-- 3 人のユーザー全員にロールを割り当てます。
grant Worker to RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
grant Worker to RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1650;
grant Worker to RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1651;
ロールベースのユーザーからダウンロードパーミッションを取り消す
以下の 2 つの方法があります:
-
ロールからパーミッションを取り消す — ロールが割り当てられているすべてのユーザーが当該パーミッションを失います。
-
特定のユーザーからロールを取り消す — 当該ユーザーのみがパーミッションを失います。
例
方法 1:ロール Worker からダウンロードパーミッションを取り消す(アレン、アリス、トムに影響):
-- プロジェクトに切り替えます。
use test_project_a;
revoke Download on table sale_detail from ROLE Worker;
方法 2:アレンのみから Worker ロールを取り消す:
-- プロジェクトに切り替えます。
use test_project_a;
revoke Worker from RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
ロール経由で機密データへのアクセスを付与
ラベルベースのアクセス制御またはポリシーベースのアクセス制御を用いてロールにラベル付きデータへのアクセス権を付与し、その後ユーザーにロールを割り当てます。
ロールへのラベルパーミッション付与の詳細については、「高秘密度データへのアクセス権をロールに付与」をご参照ください。
例
アレン、アリス、トムのデータアクセスレベルは 2 です。これらのユーザーに test_project_a プロジェクト内の感度レベル 4 のデータへのアクセス権を付与します:
-- プロジェクトに切り替えます。
use test_project_a;
-- ロールを作成します。
create role Worker;
-- ロールに感度レベル 4 のデータへのアクセス権を付与します。
grant Label 4 on table <table_name> to ROLE Worker;
-- ユーザーにロールを割り当てます。
grant Worker to RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
grant Worker to RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1650;
grant Worker to RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1651;
ロールベースのユーザーから機密データへのアクセスを取り消す
以下の 2 つの方法があります:
-
ロールからパーミッションを取り消す — ロールが割り当てられているすべてのユーザーがアクセス権を失います。
-
特定のユーザーからロールを取り消す — 当該ユーザーのみがアクセス権を失います。
例
方法 1:ロール Worker からラベルパーミッションを取り消す(アレン、アリス、トムはアクセスレベル 2 に戻ります):
-- プロジェクトに切り替えます。
use test_project_a;
revoke Label on table <table_name> from ROLE Worker;
方法2: Allen のみから Worker ロールを取り消す (Alice と Tom はアクセスレベル4を保持します):
-- プロジェクトに切り替えます。
use test_project_a;
revoke Worker from RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
ユーザーに直接パーミッションを付与
ロールベースの権限付与が該当しない場合に、ユーザーに直接パーミッションを付与します。
ユーザーがプロジェクトから削除された後も、ACL ベース、ラベルベース、ポリシーベースのパーミッションはプロジェクト内に残存します。これらの残存パーミッションをクリアするには、purge privs コマンドを使用します。詳細については、「削除済みユーザーからの残存パーミッションのクリア」をご参照ください。
以下のツールで直接権限付与がサポートされています:
ユーザーへのオブジェクト操作パーミッションの付与
ACL ベースのアクセス制御を用いて、ユーザーにプロジェクト、テーブル、モデル、リソース、関数、またはインスタンスに対する操作パーミッションを付与します。
各オブジェクトタイプごとの必要な特権については、「プロジェクトおよびプロジェクト内のオブジェクトに対するパーミッション」の「承認元」列をご参照ください。
このセクションのすべての grant コマンドで共通して使用可能なオプションパラメーターは以下のとおりです:
オプションパラメーター(すべてのオブジェクトタイプに適用)
| パラメーター | 説明 | デフォルト値 |
|---|---|---|
conditions |
リクエストソースまたはアクセス方法によってアクセスを制限します。書式: "<var_name> <Operation> constant" and ...。サポートされる値については、「条件」をご参照ください。 |
条件制限なし |
expires |
パーミッションの有効期間(日数)。この期間が過ぎると、MaxCompute が自動的にパーミッションを削除します。 | 永続的 |
プロジェクトに対するパーミッションの付与
構文
grant Read|Write|List|CreateTable|CreateInstance|CreateFunction|CreateResource|All
on project <project_name>
to USER <user_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];
必須パラメーター
| パラメーター | 説明 |
|---|---|
project_name |
プロジェクト名です。リージョンを選択した後、MaxCompute コンソールの プロジェクト管理 |
user_name |
パーミッションを付与するユーザーです。ユーザーは既にプロジェクトに追加済みである必要があります。サポートされる形式は以下のとおりです:Alibaba Cloud アカウント(ALIYUN$<account_id>)、RAM ユーザー(RAM$<account_id>:<RAM user ID>)、または RAM ロール(RAM$<account_id>:role/<RAM role name> )。 |
テーブルに対するパーミッションの付与
構文
grant Describe|Select|Alter|Update|Drop|ShowHistory|All
on table <table_name> [(<column_list>)]
to USER <user_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];
必須パラメーター
| パラメーター | 説明 |
|---|---|
table_name |
テーブル名です。テーブル一覧を表示するには、MaxCompute クライアントで show tables; コマンドを実行します。 |
user_name |
パーミッションを付与するユーザーです。サポートされる形式は、Alibaba Cloud アカウント、RAM ユーザー、または RAM ロールです。 |
オプションパラメーター
| パラメーター | 説明 | デフォルト値 |
|---|---|---|
column_list |
カンマで区切られた 1 つ以上の列名です。特定の列に限定してパーミッションを制限する場合に指定します。 | すべての列 |
モデルに対するパーミッションの付与
構文
grant Describe|Execute|Alter|Drop|All
on MODEL <model_name>
to USER <user_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];
必須パラメーター
| パラメーター | 説明 |
|---|---|
model_name |
モデル名です。モデル一覧を表示するには、MaxCompute クライアントで list models; コマンドを実行します。 |
user_name |
パーミッションを付与するユーザーです。サポートされる形式は、Alibaba Cloud アカウント、RAM ユーザー、または RAM ロールです。 |
リソースに対するパーミッションの付与
構文
grant Read|Write|Delete|All
on resource <resource_name>
to USER <user_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];
必須パラメーター
| パラメーター | 説明 |
|---|---|
resource_name |
リソース名です。リソース一覧を表示するには、MaxCompute クライアントで list resources; コマンドを実行します。 |
user_name |
パーミッションを付与するユーザーです。サポートされる形式は、Alibaba Cloud アカウント、RAM ユーザー、または RAM ロールです。 |
関数に対するパーミッションの付与
構文
grant Read|Write|Delete|Execute|All
on function <function_name>
to USER <user_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];
必須パラメーター
| パラメーター | 説明 |
|---|---|
function_name |
関数名です。関数一覧を表示するには、MaxCompute クライアントで list functions; コマンドを実行します。 |
user_name |
パーミッションを付与するユーザーです。サポートされる形式は、Alibaba Cloud アカウント、RAM ユーザー、または RAM ロールです。 |
インスタンスに対するパーミッションの付与
構文
grant Read|Write|All
on instance <instance_id>
to USER <user_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];
必須パラメーター
| パラメーター | 説明 |
|---|---|
instance_id |
インスタンス ID です。インスタンス一覧を表示するには、MaxCompute クライアントで show instances; コマンドを実行します。 |
user_name |
パーミッションを付与するユーザーです。サポートされる形式は、Alibaba Cloud アカウント、RAM ユーザー、または RAM ロールです。 |
例
以下の例ではすべて test_project_a プロジェクトを使用し、プロジェクトオーナーは ALIYUN$5527xxxxxxxx5789 です。
例 1: Alibaba Cloud アカウントに、プロジェクト内でテーブル、関数、インスタンスを作成し、すべてのオブジェクト一覧を表示する権限を付与します:
-- プロジェクトに切り替えます。
use test_project_a;
-- Alibaba Cloud アカウントをプロジェクトに追加します。
add user ALIYUN$5527xxxxxxxx5788;
-- 必要なプロジェクトレベルのパーミッションを付与します。
grant CreateTable, CreateFunction, CreateInstance, List on project test_project_a to user ALIYUN$5527xxxxxxxx5788;
例 2: RAM ユーザーおよび RAM ロールに、プロジェクト内でテーブルを作成し、すべてのオブジェクト一覧を表示する権限、および特定のテーブルからメタデータとデータを読み取る権限を付与します:
-- プロジェクトに切り替えます。
use test_project_a;
-- RAM ユーザーおよび RAM ロールをプロジェクトに追加します。
add user RAM$5527xxxxxxxx5789:2763xxxxxxxxxx1649;
add user `RAM$5527xxxxxxxx5789:role/ram_role`;
-- プロジェクトレベルのパーミッションを付与します。
grant CreateTable, List on project test_project_a to USER RAM$5527xxxxxxxx5789:2763xxxxxxxxxx1649;
grant CreateTable, List on project test_project_a to USER `RAM$5527xxxxxxxx5789:role/ram_role`;
-- テーブルレベルのパーミッションを付与します。
grant Describe, Select on table sale_detail to USER RAM$5527xxxxxxxx5789:2763xxxxxxxxxx1649;
grant Describe, Select on table sale_detail to USER `RAM$5527xxxxxxxx5789:role/ram_role`;
例 3: RAM ユーザーにリソースに対する読み取りおよび書き込みアクセス権を付与します:
-- プロジェクトに切り替えます。
use test_project_a;
add user RAM$5527xxxxxxxx5789:2763xxxxxxxxxx1650;
grant Read, Write on resource udtf.jar to USER RAM$5527xxxxxxxx5789:2763xxxxxxxxxx1650;
例 4: RAM ユーザーに関数に対する読み取りおよび書き込みアクセス権を付与します:
-- プロジェクトに切り替えます。
use test_project_a;
add user RAM$5527xxxxxxxx5789:2763xxxxxxxxxx1651;
grant Read, Write on function udf_test to USER RAM$5527xxxxxxxx5789:2763xxxxxxxxxx1651;
例 5: RAM ユーザーにインスタンスに対するすべてのパーミッションを付与します:
-- プロジェクトに切り替えます。
use test_project_a;
add user RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1651;
grant All on instance 202112300224**** to USER RAM$5527xxxxxxxx5789:2763xxxxxxxxxx1651;
ユーザーからのオブジェクト操作パーミッションの取り消し
ユーザーのプロジェクト、テーブル、モデル、リソース、関数、またはインスタンスに対する操作パーミッションを取り消します。
各オブジェクトタイプごとの必要な特権については、「プロジェクトおよびプロジェクト内のオブジェクトに対するパーミッション」の「承認元」列をご参照ください。
プロジェクトに対するパーミッションの取り消し
構文
revoke Read|Write|List|CreateTable|CreateInstance|CreateFunction|CreateResource|All
on project <project_name>
from USER <user_name>;
必須パラメーター
| パラメーター | 説明 |
|---|---|
project_name |
プロジェクト名です。リージョンを選択した後、MaxCompute コンソールの プロジェクト管理 |
user_name |
パーミッションを取り消すユーザーです。サポートされる形式は以下のとおりです:Alibaba Cloud アカウント(ALIYUN$<account_id>)、RAM ユーザー(RAM$<account_id>:<RAM user ID>)、または RAM ロール(RAM$<account_id>:role/<RAM role name> )。 |
テーブルに対するパーミッションの取り消し
構文
revoke Describe|Select|Alter|Update|Drop|ShowHistory|All
on table <table_name> [(<column_list>)]
from USER <user_name>;
必須パラメーター
| パラメーター | 説明 |
|---|---|
table_name |
テーブル名です。テーブル一覧を表示するには、MaxCompute クライアントで show tables; コマンドを実行します。 |
user_name |
パーミッションを取り消すユーザーです。サポートされる形式は、Alibaba Cloud アカウント、RAM ユーザー、または RAM ロールです。 |
モデルに対するパーミッションの取り消し
構文
revoke Describe|Execute|Alter|Drop|All
on MODEL <model_name>
from USER <user_name>;
必須パラメーター
| パラメーター | 説明 |
|---|---|
model_name |
モデル名です。モデル一覧を表示するには、MaxCompute クライアントで list models; コマンドを実行します。 |
user_name |
パーミッションを取り消すユーザーです。サポートされる形式は、Alibaba Cloud アカウント、RAM ユーザー、または RAM ロールです。 |
リソースに対するパーミッションの取り消し
構文
revoke Read|Write|Delete|All
on resource <resource_name>
from USER <user_name>;
必須パラメーター
| パラメーター | 説明 |
|---|---|
resource_name |
リソース名です。リソース一覧を表示するには、MaxCompute クライアントで list resources; コマンドを実行します。 |
user_name |
パーミッションを取り消すユーザーです。サポートされる形式は、Alibaba Cloud アカウント、RAM ユーザー、または RAM ロールです。 |
関数に対するパーミッションの取り消し
構文
revoke Read|Write|Delete|Execute|All
on function <function_name>
from USER <user_name>;
必須パラメーター
| パラメーター | 説明 |
|---|---|
function_name |
関数名です。関数一覧を表示するには、MaxCompute クライアントで list functions; コマンドを実行します。 |
user_name |
パーミッションを取り消すユーザーです。サポートされる形式は、Alibaba Cloud アカウント、RAM ユーザー、または RAM ロールです。 |
インスタンスに対するパーミッションの取り消し
構文
revoke Read|Write|All
on instance <instance_id>
from USER <user_name>;
必須パラメーター
| パラメーター | 説明 |
|---|---|
instance_id |
インスタンス ID です。インスタンス一覧を表示するには、MaxCompute クライアントで show instances; コマンドを実行します。 |
user_name |
パーミッションを取り消すユーザーです。サポートされる形式は、Alibaba Cloud アカウント、RAM ユーザー、または RAM ロールです。 |
例
例 1: Alibaba Cloud アカウントの、プロジェクト内でテーブル、関数、インスタンスを作成し、すべてのオブジェクト一覧を表示する権限を取り消します:
use test_project_a;
revoke CreateTable, CreateFunction, CreateInstance, List on project test_project_a from user ALIYUN$5527xxxxxxxx5788;
例 2: RAM ユーザーのテーブルに対する読み取りおよびメタデータアクセス権を取り消します:
use test_project_a;
revoke Describe, Select on table sale_detail from USER RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
例 3: RAM ユーザーのリソースに対する読み取りおよび書き込みアクセス権を取り消します:
use test_project_a;
revoke Read, Write on resource udtf.jar from USER RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1650;
例 4: RAM ユーザーの関数に対する読み取りおよび書き込みアクセス権を取り消します:
use test_project_a;
revoke Read, Write on function udf_test from USER RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1651;
例 5: RAM ユーザーのインスタンスに対するすべてのパーミッションを取り消します:
use test_project_a;
revoke All on instance 202112300224**** from USER RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1651;
ユーザーへのダウンロードパーミッションの付与
ダウンロードパーミッションを付与する前に、プロジェクトでダウンロード制御が有効化されている必要があります。
構文
grant Download on {Table|Resource|Function|Instance} <object_name> to USER <user_name>;
必須パラメーター
| パラメーター | 説明 |
|---|---|
object_name |
オブジェクト名です。名前を確認するには、MaxCompute クライアントで show tables;、list resources;、list functions;、または show instances; コマンドを実行します。 |
user_name |
パーミッションを付与するユーザーです。サポートされる形式は以下のとおりです:Alibaba Cloud アカウント(ALIYUN$<account_id>)、RAM ユーザー(RAM$<account_id>:<RAM user ID>)、または RAM ロール(RAM$<account_id>:role/<RAM role name> )。 |
例
RAM ユーザーに特定のテーブルからデータをダウンロードする権限を付与します(プロジェクトでダウンロード制御が有効化されている必要があります):
use test_project_a;
grant Download on table sale_detail to USER RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
ユーザーからのダウンロードパーミッションの取り消し
構文
revoke Download on {Table|Resource|Function|Instance} <object_name> from USER <user_name>;
必須パラメーター
| パラメーター | 説明 |
|---|---|
object_name |
オブジェクト名です。名前を確認するには、MaxCompute クライアントで show tables;、list resources;、list functions;、または show instances; コマンドを実行します。 |
user_name |
パーミッションを取り消すユーザーです。サポートされる形式は、Alibaba Cloud アカウント、RAM ユーザー、または RAM ロールです。 |
例
use test_project_a;
revoke Download on table sale_detail from USER RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
ユーザーへの機密データへのアクセス権の付与
ラベルベースのアクセス制御を用いて、ユーザーにラベル付きデータへのアクセス権を付与します。
構文
grant Label <number> on table <table_name> [(<column_list>)] to USER <user_name> [with exp <days>];
必須パラメーター
| パラメーター | 説明 |
|---|---|
number |
ユーザーがアクセスできる最高感度レベルです。有効な値:0~9。 |
table_name |
テーブルまたはビュー名です。テーブル一覧を表示するには、MaxCompute クライアントで show tables; コマンドを実行します。 |
user_name |
アクセス権を付与するユーザーです。サポートされる形式は、Alibaba Cloud アカウント、RAM ユーザー、または RAM ロールです。 |
オプションパラメーター
| パラメーター | 説明 | デフォルト値 |
|---|---|---|
column_list |
カンマで区切られた 1 つ以上の列名です。特定の列に限定してアクセス権を制限する場合に指定します。 | すべての列 |
days |
パーミッションの有効期間(日数)。有効な値:0~2<sup>63</sup>–1。 | 180 日 |
例
RAM ユーザーのアレンのデータアクセスレベルは 2 です。アレンに sale_detail テーブル内の感度レベル 4 のデータへのアクセス権を付与します:
use test_project_a;
grant Label 4 on table sale_detail to USER RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
ユーザーからの機密データへのアクセス権の取り消し
構文
revoke Label <number> on table <table_name> [(<column_list>)] from USER <user_name>;
必須パラメーター
| パラメーター | 説明 |
|---|---|
number |
取り消す感度レベルです。有効な値:0~9。 |
table_name |
テーブルまたはビュー名です。 |
user_name |
アクセス権を取り消すユーザーです。サポートされる形式は、Alibaba Cloud アカウント、RAM ユーザー、または RAM ロールです。 |
オプションパラメーター
| パラメーター | 説明 | デフォルト値 |
|---|---|---|
column_list |
カンマで区切られた 1 つ以上の列名です。特定の列のみのアクセス権を取り消す場合に指定します。 | すべての列 |
例
sale_detail テーブル内の感度レベル 4 のデータに対するアレンのアクセス権を取り消します:
use test_project_a;
revoke Label 4 on table sale_detail from USER RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
削除済みユーザーからの残存パーミッションのクリア
ユーザーがプロジェクトから削除されても、ACL ベース、ラベルベース、ポリシーベースのパーミッションはプロジェクト内に残存します。ユーザーが後で再びプロジェクトに追加された場合、これらのパーミッションが復元されます。これは、ユーザーが意図とは異なる役割で再追加された場合に、データセキュリティリスクを引き起こす可能性があります。
プロジェクトオーナー、または Admin ロールまたは Super_Administrator ロールが割り当てられたユーザーが、削除済みユーザーのすべての残存パーミッションをパージできます。
構文
purge privs from user <user_name>;
必須パラメーター
| パラメーター | 説明 |
|---|---|
user_name |
権限をクリアする削除済みユーザーの名前。サポートされている形式: Alibaba Cloud アカウント (ALIYUN$<account_id>)、RAM ユーザー (RAM$<account_id>:<RAM user ID>)、または RAM ロール ( RAM$<account_id>:role/<RAM role name> )。 |
purge privsコマンドをプロジェクト内にまだ存在するユーザーに対して実行すると、"Principal <username> still exist in the project"のエラーが返されます。remove user <user_name>コマンドでユーザーを削除した後、purge privsコマンドを実行してください。
次のステップ
パーミッションを付与した後、ユーザーが保持しているパーミッションを確認します。詳細については、「パーミッションの照会」をご参照ください。