MaxComputeはダウンロード制御機能を提供します。 この機能を使用すると、Tunnelコマンドを使用してテーブルまたはインスタンスをダウンロードするためのユーザーまたはロールの権限を管理できます。 これにより、プロジェクトデータのセキュリティが向上し、データ漏洩が防止されます。 このトピックでは、MaxComputeのダウンロード制御に使用されるコマンドについて説明します。 このトピックでは、これらのコマンドを使用してダウンロード制御を実行する方法の例も示します。
背景情報
Tunnelコマンドを実行して、MaxComputeプロジェクトのテーブルまたはインスタンスをダウンロードできます。 ただし、ダウンロード操作はデータリークを引き起こす可能性があります。 データ漏洩を防ぐには、ダウンロード権限を制御する必要があります。
MaxComputeプロジェクトを作成すると、プロジェクトのダウンロード制御機能はデフォルトで無効になります。 プロジェクト内のすべてのユーザーまたはロールは、プロジェクト内のすべてのテーブルとインスタンスをダウンロードできます。 プロジェクト所有者またはSuper_Administratorロールを持つユーザーは、プロジェクトレベルでsetproject odps.security.enabledownloadprivilege=true | false; コマンドを実行して、ダウンロード制御機能を有効または無効にできます。
次の表に、ダウンロード制御機能が適切なシナリオを示します。
シナリオ | 説明 | 承認された | 操作プラットフォーム |
シングルユーザー権限付与 | 指定したテーブルまたはインスタンスをダウンロードする権限を1人のユーザーに付与します。 | 権限付与の列を参照してください。 | |
ロールベースの権限付与 | 単一のロールに、指定したテーブルまたはインスタンスをダウンロードする権限を付与し、そのロールを複数のユーザーに割り当てます。 これにより、ユーザーにダウンロード権限が付与されます。 |
前提条件
ダウンロード制御機能を使用する前に、次の情報が取得されていることを確認してください。
権限を付与するユーザーのアカウントまたは権限を付与するロールの名前を取得します。 ロールまたはアカウントがMaxComputeプロジェクトに追加されます。 ユーザーのアカウントがAlibaba Cloudアカウントの場合、Alibaba Cloudアカウントをの形式で記録します。
ALIYUN$<account_id> ユーザーのアカウントがRAMユーザーの場合は、RAMユーザーを RAM$<account_id >:< RAMユーザーID> をします。 ユーザーのアカウントがRAMロールの場合は、RAMロールを 'RAM$<account_id>:role/<RAMロールの名前> '
MaxComputeクライアントで
list users;またはlist roles;コマンドを実行して、アカウントまたはロール名を照会できます。オブジェクトの型と名前。
MaxComputeクライアントで
show tables;、list resources;、list functions;、またはshow instances;ステートメントを実行して、テーブル (ビュー) またはインスタンスの名前を取得できます。
制限事項
ダウンロード制御機能を使用する前に、次の制限事項に注意してください。
既存のサブジェクトとオブジェクトのみがダウンロード制御の承認をサポートしています。
ユーザーにダウンロード権限を付与する場合、ワイルドカード (*) を使用してオブジェクトを指定することはできません。 ワイルドカード (*) を使用してオブジェクトを指定する必要がある場合は、ロールベースの権限付与を実行できます。
注意事項
ダウンロードコントロール機能を使用する前に、次の点に注意してください。
オブジェクトを削除すると、MaxComputeはオブジェクトに対して付与されたすべてのダウンロード権限を自動的に取り消します。
ユーザーが削除されると、ユーザーに付与された権限は保持されます。 ユーザーがプロジェクトに再度追加されると、ユーザーの履歴アクセス権限が再度有効になります。 削除されたユーザーの残りの権限情報をクリアする方法の詳細については、「削除されたユーザーの残りの権限情報を完全にクリアする」をご参照ください。
構文
ダウンロード権限を付与するために使用するコマンドの構文
grant Download on <object_type> <object_name> to <subject_type> <subject_name>;ダウンロード権限を取り消すコマンドの構文
revoke Download on <object_type> <object_name> from <subject_type> <subject_name>;
ダウンロード制御コマンドで使用するパラメーターを次の表に示します。
パラメーター | 必須 | 説明 |
object_type | 必須 | オブジェクトのタイプです。 1回の承認操作で指定できるオブジェクトタイプは1つだけです。 有効な値:
|
object_name | 必須 | オブジェクト名 次のいずれかの方法を使用して、オブジェクトの名前を取得できます。
ロールにダウンロード権限を付与する場合、ワイルドカード (*) を使用してオブジェクトを指定できます。 たとえば、 |
subject_type | 必須 | サブジェクトのタイプ。 有効な値:
|
subject_name | 必須 | 件名の名前。 1回の権限付与操作に指定できるユーザーまたはロールは1つだけです。 MaxComputeクライアントで |
例
次の例では、username@example.comはtest_project_aプロジェクトの所有者です。 Allen、Tom、Aliceは、username@example.comアカウントに属するRAMユーザーです。 ダウンロード制御機能は、test_project_aプロジェクトに対して有効になっています。 次の例では、すべての権限付与操作がMaxComputeクライアントで実行されます。
例1: RAMユーザーにダウンロード権限を付与します。
test_project_aプロジェクトにAllenを追加し、sale_detailテーブルからデータをダウンロードする権限をAllenに付与します。 サンプルコマンド:
-- Go to the test_project_a project by using the Alibaba Cloud account Bob@aliyun.com. use test_project_a; -- Add Allen as a project member. add user RAM$username@example.com:Allen; -- Grant Allen the permissions to download data from the sale_detail table in the test_project_a project. grant Download on table sale_detail to USER RAM$username@example.com:Allen; -- Query the permissions of Allen. show grants for RAM$username@example.com:Allen; -- The following result is returned. The result indicates that Allen has download permissions. Authorization Type: ACL [user/RAM$username@example.com:Allen] A projects/test_project_a/tables/sale_detail: Download例2: RAMユーザーからダウンロード権限を取り消す。
例1で付与されているダウンロード権限をAllenから取り消します。
-- Go to the test_project_a project by using the Alibaba Cloud account Bob@aliyun.com. use test_project_a; -- Revoke the download permissions from Allen. revoke Download on table sale_detail from USER RAM$username@example.com:Allen; -- Query the permissions of Allen. The permissions of Allen do not include the download permissions. show grants for RAM$username@example.com:Allen;例3: ロールに基づいて複数のRAMユーザーにダウンロード権限を付与します。
test_project_aプロジェクトで、名前がtb_で始まるテーブルからデータをダウンロードする権限をAliceとTomに付与します。 サンプルコマンド:
-- Go to the test_project_a project by using the Alibaba Cloud account Bob@aliyun.com. use test_project_a; -- Add Alice and Tom as project members. add user RAM$username@example.com:Alice; add user RAM$username@example.com:Tom; -- Create a role named Worker. create role Worker; -- Assign the Worker role to Alice and Tom. grant Worker TO RAM$username@example.com:Alice; grant Worker TO RAM$username@example.com:Tom; -- Grant the Worker role the permissions to download the tables whose name starts with tb_ in the test_project_a project. grant Download on table tb_* to ROLE Worker; -- Query the permissions of Alice. describe role Worker; -- The following result is returned. A indicates that the download permissions are granted to Alice. Authorization Type: Policy [role/worker] A projects/test_project_a/tables/tb_*: Download例4: 複数のRAMユーザーのロールに基づいて付与されているダウンロード権限を取り消します。
AliceとTomから、例3のWorkerロールに基づいて付与されたダウンロード権限を取り消します。
-- Go to the test_project_a project by using the Alibaba Cloud account Bob@aliyun.com. use test_project_a; -- Revoke the Worker role from Alice and Tom. revoke Worker from RAM$username@example.com:Alice; revoke Worker from RAM$username@example.com:Tom; -- Query the permissions of Alice. The permissions of Allen do not include the download permissions. show grants for RAM$username@example.com:Alice;
次のステップ
ダウンロード制御機能を理解したら、ビジネス要件に基づいて次の操作を実行できます。