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

MaxCompute:ダウンロード権限コントロール

最終更新日:Mar 27, 2026

ダウンロード権限コントロールを使用すると、誰が Tunnel コマンドを介して MaxCompute プロジェクトからデータをエクスポートできるかを管理できます。この機能がない場合、プロジェクト内のすべてのユーザーとロールは、任意のテーブルやインスタンスを自由にダウンロードできるため、データ漏洩のリスクが生じます。この機能を有効にすると、明示的なダウンロード権限を持つユーザーまたはロールのみがデータをエクスポートできるようになります。

仕組み

デフォルトでは、新しいプロジェクトではダウンロード権限コントロールは無効になっています。プロジェクトレベルで有効にすると、すべての Tunnel ベースのダウンロード操作は、明示的な権限に基づいてゲートされます。

次の表は、どのオブジェクトがダウンロード権限をサポートしているか、またどのように権限を付与できるかを示しています:

オブジェクトタイプ有効な値ワイルドカードのサポート
Tableテーブル名またはビュー名ロールベースのみ (*)
Instanceインスタンス名 (インスタンス ID と同じ)ワイルドカードはサポートされていません

2 つの権限付与モデルが利用可能です:

モデル仕組み最適なケース
シングルユーザー権限付与特定のテーブルまたはインスタンスに対するダウンロード権限を 1 人のユーザーに直接付与します個人ユーザー向けのターゲットアクセス
ロールベースの権限付与ロールにダウンロード権限を付与し、そのロールを複数のユーザーに割り当てますグループのアクセス管理。オブジェクト名でワイルドカード (*) をサポートします

制限事項と注意事項

制限事項:

  • 権限付与は、既存のサブジェクト (ユーザーまたはロール) とオブジェクトにのみ適用されます。将来のサブジェクトやオブジェクトに事前に権限を付与することはできません。

  • ユーザーに直接権限を付与する場合、オブジェクト名でワイルドカード (*) はサポートされません。この制限は、意図しない広範なアクセス権の付与を防ぐために存在します。ワイルドカードパターンが必要な場合は、ロールベースの権限付与を使用してください。

注意事項:

  • オブジェクトが削除されると、MaxCompute はそのオブジェクトに対するすべてのダウンロード権限を自動的に取り消します。

  • ユーザーがプロジェクトから削除されても、その権限は保持されます。ユーザーが再度追加されると、それらの権限は再びアクティブになります。残存する権限情報を完全にクリアする方法については、「削除されたユーザーの残存権限情報を完全にクリアする」をご参照ください。

ダウンロード権限コントロールの有効化

必要な権限: プロジェクトオーナーまたは Super_Administrator ロール。

プロジェクトレベルで次のコマンドを実行します:

setproject odps.security.enabledownloadprivilege=true;

ダウンロード権限コントロールを無効にするには:

setproject odps.security.enabledownloadprivilege=false;

ダウンロード権限の付与と取り消し

必要な権限: オブジェクトに対する権限の付与または取り消しについては、「権限」の Authorized by 列をご参照ください。

すべてのコマンドは、MaxCompute クライアントMaxCompute Studio、またはDataWorks コンソールで実行します。

    ワークフロー

    シングルユーザー権限付与とロールベース権限付与の両方で、以下のシーケンスに従います:

    1. ユーザーまたはロールがプロジェクトメンバーであることを確認します。MaxCompute クライアントで list users; または list roles; を実行して、名前を検索します。ユーザーまたはロールを追加するには、ユーザーの計画と管理またはロールの計画をご参照ください。

    2. コントロールするテーブルまたはインスタンスの名前を確認します。show tables; または show instances; を実行して、利用可能なオブジェクトをリスト表示します。

    3. grant または revoke コマンドを実行します。

    4. show grants または describe role で結果を確認します。

    構文

    ダウンロード権限を付与する場合:

    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はいオブジェクトのタイプ。有効な値:TableInstance。コマンドごとに 1 つのオブジェクトタイプを指定します。
    object_nameはいテーブル、ビュー、またはインスタンスの名前。ロールベースの権限付与では、ワイルドカードがサポートされています。たとえば、table taobao* は、名前が taobao で始まるすべてのテーブルに一致します。show tables; または show instances; を実行して名前を取得します。
    subject_typeはいサブジェクトのタイプ。有効な値:USER (Alibaba Cloud アカウントまたは RAM ユーザー)、ROLE (ロール)。
    subject_nameはいユーザーまたはロールの名前。コマンドごとに 1 つのサブジェクトを指定します。Alibaba Cloud アカウントには ALIYUN$<account> を、RAM ユーザーには RAM$<account>:<username> を使用します。list users; または list roles; を実行して名前を取得します。

    以下の例では、username@example.comtest_project_a を所有しているという設定を使用します。Allen、Tom、Alice はそのアカウント配下の RAM ユーザーです。プロジェクトではダウンロード権限コントロールが有効になっています。

    例 1:RAM ユーザーにダウンロード権限を付与する

    Allen をプロジェクトに追加し、sale_detail テーブルに対するダウンロード権限を付与します:

    -- プロジェクトに切り替えます。
    use test_project_a;
    -- Allen をプロジェクトメンバーとして追加します。
    add user RAM$username@example.com:Allen;
    -- Allen に sale_detail に対するダウンロード権限を付与します。
    grant Download on table sale_detail to USER RAM$username@example.com:Allen;
    -- Allen の権限を確認します。
    show grants for RAM$username@example.com:Allen;

    期待される出力:

    Authorization Type: ACL
    [user/RAM$username@example.com:Allen]
    A       projects/test_project_a/tables/sale_detail: Download

    例 2:RAM ユーザーからダウンロード権限を取り消す

    例 1 で付与した権限を取り消します:

    -- プロジェクトに切り替えます。
    use test_project_a;
    -- Allen のダウンロード権限を取り消します。
    revoke Download on table sale_detail from USER RAM$username@example.com:Allen;
    -- 権限が削除されたことを確認します。
    show grants for RAM$username@example.com:Allen;

    例 3:ロールを介して複数のユーザーにダウンロード権限を付与する

    Alice と Tom に、名前が tb_ で始まるすべてのテーブルに対するダウンロード権限を付与します:

    -- プロジェクトに切り替えます。
    use test_project_a;
    -- Alice と Tom をプロジェクトメンバーとして追加します。
    add user RAM$username@example.com:Alice;
    add user RAM$username@example.com:Tom;
    -- ロールを作成します。
    create role Worker;
    -- ロールを Alice と Tom に割り当てます。
    grant Worker TO RAM$username@example.com:Alice;
    grant Worker TO RAM$username@example.com:Tom;
    -- Worker ロールにすべての tb_* テーブルに対するダウンロード権限を付与します。
    grant Download on table tb_* to ROLE Worker;
    -- ロールの権限を確認します。
    describe role Worker;

    期待される出力:

    Authorization Type: Policy
    [role/worker]
    A       projects/test_project_a/tables/tb_*: Download

    例 4:ロールベースのダウンロード権限を取り消す

    例 3 で Alice と Tom に付与した権限を取り消します:

    -- プロジェクトに切り替えます。
    use test_project_a;
    -- Worker ロールを Alice と Tom から削除します。
    revoke Worker from RAM$username@example.com:Alice;
    revoke Worker from RAM$username@example.com:Tom;
    -- Alice の権限にダウンロードアクセスが含まれなくなったことを確認します。
    show grants for RAM$username@example.com:Alice;

    次のステップ