MaxCompute では、ACL に基づくアクセス制御方法またはポリシーに基づくアクセス制御方法を使用して、特定のオブジェクトに対する指定された操作権限をユーザーまたはロールから取り消すことができます。
前提条件
ACL に基づくアクセス制御方法またはポリシーに基づくアクセス制御方法を使用する前に、以下の条件が満たされていることを確認してください。
権限を取り消すユーザーのアカウント、または権限を取り消すロールの名前を取得済みである必要があります。 ロールまたはアカウントが MaxCompute プロジェクトに追加されている必要があります。 ユーザーのアカウントが Alibaba Cloud アカウントの場合、Alibaba Cloud アカウントを
ALIYUN$Alibaba Cloud アカウントの形式で記録します。 ユーザーのアカウントが RAM ユーザーの場合、RAM ユーザーをRAM$RAM ユーザーが所属する Alibaba Cloud アカウント:RAM ユーザーの名前の形式で記録します。MaxCompute クライアントで
list users;またはlist roles;コマンドを実行して、ユーザーアカウントまたはロールの名前を照会できます。権限を取り消すオブジェクトのタイプ、オブジェクトの名前、およびオブジェクトに対して拒否する操作を取得済である必要があります。
オブジェクトタイプと各タイプのオブジェクトでサポートされている操作の詳細については、「MaxCompute の権限」をご参照ください。
制限事項
ACL に基づくアクセス制御方法を使用する前に、以下の制限事項にご注意ください。
ACL に基づくアクセス制御方法を使用する場合、既存のオブジェクトと既存のサブジェクトに対してのみ権限を付与できます。 オブジェクトを削除してから同じ名前のオブジェクトを作成した場合、新しいオブジェクトは削除されたオブジェクトに対する権限を継承しません。
ACL に基づくアクセス制御方法では、
[with grant option]句を使用した権限付与はサポートされていません。 たとえば、ユーザー A がユーザー B にオブジェクトへのアクセスを許可した場合、ユーザー B はユーザー C に同じオブジェクトへのアクセスを許可できません。ACL に基づくアクセス制御方法は、ホワイトリストメカニズムのみに基づいて実装されます。 このメソッドを使用してオブジェクトに対する操作を拒否することはできません。
ポリシーに基づくアクセス制御を使用する場合、既存のロール対してのみ権限を付与できます。
注意事項
ACL に基づくアクセス制御方法を使用する前に、以下の項目にご注意ください。
オブジェクトを削除すると、MaxCompute は ACL に基づくアクセス制御方法を使用して付与されたオブジェクトに対するすべての権限を取り消します。
ユーザーが削除された後も、ユーザーに付与された権限は保持されます。ユーザーがプロジェクトに再度追加されると、ユーザーの過去のアクセス権限が再び有効になります。削除されたユーザーの残留権限情報をクリアする方法については、「削除されたユーザーの残留権限情報を完全にクリアする」をご参照ください。
ポリシーに基づくアクセス制御方法を使用する前に、以下の項目にご注意ください。
ポリシーに基づくアクセス制御方法を使用して、存在しないオブジェクトに対する権限を付与できます。 権限が付与されている既存のオブジェクトを削除しても、そのオブジェクトに関連する権限情報は保持されます。 その結果、削除されたオブジェクトと同じ名前のオブジェクトを作成すると、セキュリティ上のリスクが生じる可能性があります。
ユーザーが削除された後も、ユーザーに付与された権限は保持されます。ユーザーがプロジェクトに再度追加されると、ユーザーの過去のアクセス権限が再び有効になります。削除されたユーザーの残留権限情報をクリアする方法については、「削除されたユーザーの残留権限情報を完全にクリアする」をご参照ください。
構文
ACL に基づくアクセス制御の無効化
revoke <actions> on <object_type> <object_name> [(<column_list>)] from <subject_type> <subject_name>;ポリシーに基づくアクセス制御の無効化
revoke <actions> on <object_type> <object_name> from ROLE <role_name> privilegeproperties ("policy" = "true", "allow"="{true|false}");
パラメーター
パラメーター | 必須 / 任意 | 説明 | |
actions | 必須 | 許可されている操作です。 1 つの文で 1 つ以上の操作を指定できます。 複数の操作を指定する場合はコンマ (,) で区切ります。 サポートされている操作の詳細については、「MaxCompute の権限」をご参照ください。 | |
object_type | 必須 | 権限が付与されているオブジェクトのタイプです。 1 つの文に指定できるオブジェクトの種類は 1 種類のみです。 サポートされているオブジェクトタイプの詳細については、「MaxCompute の権限」をご参照ください。 | |
object_name | 必須 | 権限が付与されているオブジェクトの名前です。 以下のいずれかの方法を使用して、オブジェクトの名前を取得できます。
このパラメーターを設定する際、アスタリスク (*) を使用できます。 たとえば、このパラメーターを 説明 アスタリスク (*) は、subject_type の値が ROLE の場合のみ使用できます。 | |
column_list | 任意 | アクセス制御を実行する列の名前。 このパラメーターは、object_type パラメーターを Table に設定し、テーブルで列レベルのアクセス制御を実行する場合のみ必要です。 1 つの文に 1 つ以上の列名を指定できます。 複数の列名を指定する場合はコンマ (,) で区切ります。 説明 このパラメーターは、Describe、Select、Alter、Update、Drop、および ShowHistory 権限とすべての権限を管理する特定の列を指定するために使用されます。 テーブル内の列に機密レベルが指定されている場合、ラベルに基づくアクセス制御方法を使用して、列内の機密データに対するアクセス権限を管理できます。 ラベルに基づくアクセス制御方法の詳細については、「ラベルに基づくアクセス制御」をご参照ください。 | |
subject_type | 必須 | 権限が付与されている対象のタイプです。 有効値:
| |
subject_name | 必須 | 権限が付与されているユーザーのアカウント、または権限が付与されているロールの名前です。 1 つの文に指定できるアカウントまたはロールは 1 つのみです。 MaxCompute クライアントで | |
role_name | 必須 | 権限が付与されているロールの名前です。 1 つの文に指定できるロールは 1 つだけです。 MaxCompute クライアントで | |
privilegeproperties | policy | 必須 | この値は true に設定します。 true は、ポリシーに基づくアクセス制御が使用されていることを示します。 |
allow | ホワイトリストメカニズムを使用する場合は必須 | 指定したオブジェクトに対して指定した操作を許可するかどうかを指定します。 有効値:
| |
環境
このトピックで説明されているコマンドは、以下のプラットフォームで実行できます。
MaxCompute クライアントを使用して MaxCompute プロジェクトにアクセスし、権限付与コマンドを実行します。
例
たとえば、Alibaba Cloud アカウント Bob@aliyun.com が、プロジェクト test_project_a の所有者であったとします。 Allen、Alice、Tom は、Alibaba Cloud アカウント Bob@aliyun.com の RAM ユーザーです。 以下の例では、文は MaxCompute クライアントで実行されます。
例 1:ユーザーからの権限の取り消し
この例では、例 1 および例 2 で RAM ユーザー Allen および Alice に付与されている権限が取り消されます。 文のサンプル:
-- Go to the test_project_a project by using the Alibaba Cloud account Bob@aliyun.com. use test_project_a; -- Revoke the Describe and Select permissions from the RAM user Allen. revoke Describe, Select on table sale_detail (shop_name, customer_id) from USER RAM$Bob@aliyun.com:Allen; -- Revoke all permissions on the table from the RAM user Alice. revoke All on table sale_detail (shop_name, customer_id) from USER RAM$Bob@aliyun.com:Alice; -- Query the permissions of the RAM user Allen. The RAM user Allen does not have the Describe and Select permissions. show grants for RAM$Bob@aliyun.com:Allen; -- Query the permissions of the RAM user Alice. The RAM user Alice does not have the permissions on the table. show grants for RAM$Bob@aliyun.com:Alice;例 2:複数のユーザーからロールを使用して付与された同じ権限を取り消す
この例では、RAM ユーザーの Alice と Tom、および Alibaba Cloud アカウント Lily@aliyun.com に付与されている同じ権限が取り消されます。 文のサンプル:
-- Go to the test_project_a project by using the Alibaba Cloud account Bob@aliyun.com. use test_project_a; -- Revoke the role Worker from the RAM users Alice and Tom and the Alibaba Cloud account Lily@aliyun.com. revoke Worker from RAM$Bob@aliyun.com:Alice; revoke Worker from RAM$Bob@aliyun.com:Tom; revoke Worker from ALIYUN$Lily@aliyun.com; -- Query the permissions of the Alibaba Cloud account Lily@aliyun.com. The Alibaba Cloud account Lily@aliyun.com does not have the permissions of the role Worker. show grants for ALIYUN$Lily@aliyun.com;
ユーザーまたはロールからパッケージへのアクセス権限を取り消す
パッケージがインストールされている MaxCompute プロジェクトのユーザーまたはロールから、パッケージに対するアクセス権限を取り消します。
構文
revoke <actions> on package <project_name>.<package_name> from {USER|ROLE} <name>;パラメーター
パラメーター
必須 / 任意
説明
actions
必須
パッケージ内のリソースに対する操作です。 この値は [Read] に設定します。
project_name
必須
パッケージが属する MaxCompute プロジェクトの名前です。
MaxCompute console にログインします。上部のナビゲーションバーで、リージョンを選択します。[プロジェクト管理] タブで、MaxCompute プロジェクトの名前を取得します。
package_name
必須
パッケージの名前です。
MaxComputeクライアントで
show packages;コマンドを実行して、作成したパッケージに関する情報を取得できます。name
必須
パッケージに対するアクセス権限を取り消すユーザーアカウントまたはロールの名前です。 1 つの文に指定できるユーザーアカウントまたはロールは 1 つだけです。
MaxCompute クライアントで
list users;またはlist roles;コマンドを実行して、ユーザーアカウントまたはロールの名前を取得できます。例
Bella から指定されたパッケージに対するアクセス権限を取り消します。 文のサンプル:
-- Revoke the access permissions on the specified package from Bella. revoke Read on package test_project_a.datashare from user RAM$Amy@aliyun.com:Bella;
明示的な権限付与を使用して付与されたラベルに基づく権限を取り消す
プロジェクト所有者または管理者ロールを割り当てられたユーザーが、明示的な権限付与を使用して付与されたラベルベースの権限を取り消します。
構文
revoke Label on table <table_name> [(<column_list>)] from {USER|ROLE} <name>;注意事項
テーブルに対して明示的に設定されたラベルに基づく権限を取り消すと、テーブル内の列に対して明示的に設定されたラベルに基づく権限も取り消されます。
明示的に設定されたラベルに基づく権限を取り消しても、ユーザーまたはロールに対して設定されているアクセスレベルのラベルは影響を受けません。 例えば、ラベルに基づくアクセス制御により、アクセスレベルが 2 のユーザーは、機密レベルが 3 以下のテーブルデータにアクセスすることができます。 ラベルに基づくアクセス制御を無効化した場合、ユーザーは機密レベルが 2 以下のテーブルデータにアクセスできます。
パラメーター
パラメーター
必須 / 任意
説明
table_name
必須
テーブルまたはビューの名前です。
MaxCompute クライアントで
show tables;コマンドを実行して、テーブルまたはビューの名前を取得できます。column_list
任意
このパラメーターは、テーブルまたはビューの指定した列の機密データに対するアクセス権限を取り消す場合に必要です。 複数の列名を指定できます。 その場合はコンマ (,) で区切ります。
name
必須
ユーザーまたはロールの名前です。
MaxCompute クライアントで
list users;またはlist roles;コマンドを実行して、ユーザーアカウントまたはロールの名前を取得できます。例
以下の例では、test_project_a プロジェクトに shop_name、customer_id、および total_price 列を含む sale_detail という名前のテーブルが格納されています。 Bob@aliyun.com は、test_project_a プロジェクトの所有者です。 Allen は、Alibaba Cloud アカウント Bob@aliyun.com に属し、test_project_a プロジェクトに追加されている RAM ユーザーです。
Allen から機密レベルの高いデータにアクセスする権限を取り消します。 文のサンプル:
-- Revoke the permissions to access data whose sensitivity level is lower than or equal to 3 in the shop_name, customer_id, and total_price columns of the sale_detail table from Allen. revoke Label on table sale_detail(shop_name, customer_id, total_price) from USER RAM$Bob@aliyun.com:Allen; -- View the permissions that are granted to Allen. show label grants on table sale_detail for USER RAM$Bob@aliyun.com:Allen; -- The following result is returned: User Label: 1 +-------------+--------------+--------------------------+ | Column | GrantedLabel | Expires | +-------------+--------------+--------------------------+ | total_price | 3 | 2021-12-31T19:56:18+0800 | +-------------+--------------+--------------------------+ -- Revoke the permissions to access sensitive data in the sale_detail table from Allen. revoke Label on table sale_detail from USER RAM$Bob@aliyun.com:Allen; -- View the permissions that are granted to Allen. show label grants on table sale_detail for USER RAM$Bob@aliyun.com:Allen; -- The following result is returned: User Label: 1
ロールからユーザーを取り消す
特定のロールからユーザーを取り消します。
構文
revoke <role_name> from <user_name>;パラメーター
role_name:必須パラメーターです。 ユーザーを取り消すロールの名前です。
user_name:必須パラメーターです。 取り消す Alibaba Cloud アカウントまたは RAM ユーザーの名前です。 Alibaba Cloud アカウントの形式は、
ALIYUN$****@aliyun.com;です。 RAM ユーザーの形式は、RAM$****です。
例
-- Revoke the Alibaba Cloud account alice@aliyun.com from the player role. revoke player from ALIYUN$alice@aliyun.com;
関連する文
CREATE PACKAGE:パッケージを作成します。
CREATE ROLE:MaxCompute プロジェクトにロールを作成します。
SET LABEL:MaxCompute では、ラベルに基づくアクセス制御方法を使用できます。 この方法を使用すると、プロジェクトレベルで、ユーザーまたはロールに対するアクセスレベルのラベルと、テーブルデータまたは列データに対する機密レベルのラベルを設定できます。
GRANT:MaxCompute では、ACL に基づくアクセス制御方法を使用できます。 この方法を使用すると、オブジェクトに対する権限をユーザーまたはロールに付与し、オブジェクトに対して 1 つ以上の指定された操作を許可できます。