すべてのプロダクト
Search
ドキュメントセンター

MaxCompute:ダウンロード制御

最終更新日:Jan 10, 2025

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

必須

オブジェクト名 次のいずれかの方法を使用して、オブジェクトの名前を取得できます。

  • テーブルまたはビュー名: MaxComputeクライアントshow tables; コマンドを実行して、テーブルまたはビュー名を取得できます。

  • インスタンス名: MaxComputeクライアントshow instances; コマンドを実行して、インスタンスのIDを取得できます。 インスタンス名は、MaxComputeのインスタンスIDと同じです。

ロールにダウンロード権限を付与する場合、ワイルドカード (*) を使用してオブジェクトを指定できます。 たとえば、table taobao * は、名前がtaobaoで始まるすべてのテーブルを示します。

subject_type

必須

サブジェクトのタイプ。 有効な値:

  • USER: Alibaba CloudアカウントまたはRAMユーザー。

  • ROLE: ロール。

subject_name

必須

件名の名前。 1回の権限付与操作に指定できるユーザーまたはロールは1つだけです。

MaxComputeクライアントlist users; またはlist roles; コマンドを実行して、アカウントまたはロール名を照会できます。

次の例では、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; 

次のステップ