MaxCompute プロジェクトのデータセキュリティを確保するため、プロジェクトオーナーまたは権限を持つユーザーは、最小権限の原則に従ってメンバーの権限を管理する必要があります。このトピックでは、MaxCompute の権限システムの概要について説明します。
権限システム
|
カテゴリ |
説明 |
|
プリンシパル |
MaxCompute は、以下のタイプのプリンシパルをサポートしています:
|
|
オブジェクト |
MaxCompute は、プロジェクト、テーブル、モデル、リソース、関数、インスタンスなどのオブジェクトに対して、きめ細かな制御を提供します。その権限付与方法を使用して、ユーザー権限を正確に管理できます。各オブジェクトの詳細な権限リストについては、「MaxCompute の権限」をご参照ください。 |
|
アクセス制御 |
MaxCompute は、さまざまな要件を満たすために、以下の柔軟な権限付与方法を提供します:
|
|
ロールベースの権限付与 |
複数のユーザーに同じ権限を付与するには、ロールを使用して権限付与プロセスを簡素化できます。ロールベースの権限付与操作の詳細については、「プロジェクトレベルのロール権限付与」をご参照ください。 |
|
ユーザーへの権限付与 |
以下の方法でユーザーに権限を付与できます:
ユーザーへの権限付与操作の詳細については、「コマンドを使用したユーザー権限の管理」をご参照ください。 |
|
権限情報のクエリ |
プロジェクトメンバーの権限を表示して、権限が有効になっていることを確認します。権限のクエリ方法の詳細については、「権限情報のクエリ」をご参照ください。 |
DataWorks には独自の権限システムがあります。DataWorks を使用して MaxCompute プロジェクトを管理する場合、DataWorks のユーザーおよびロール管理機能を使用して、ロールの割り当てや権限の管理を行うことができます。DataWorks と MaxCompute の権限関係の詳細については、「MaxCompute と DataWorks の権限関係」をご参照ください。
認証フロー
ユーザーが MaxCompute オブジェクトに対して操作を実行すると、MaxCompute はリクエストを認証し、必要な権限を確認します。リソースの所有者 (プライマリ Alibaba Cloud アカウント) は最高レベルの権限を持ち、すべての操作を実行でき、RAM ユーザーまたは RAM ロールに管理権限を付与できます。プライマリ Alibaba Cloud アカウントおよび管理権限を持つユーザーは、他のユーザーに権限を付与できます。これにより、誰が権限を付与されるか、どのオブジェクトにアクセスできるか、それらのオブジェクトに対してどの操作を実行できるかが決まります。
オブジェクトと特定の操作に応じて、MaxCompute の認証プロセスには RAM 認証と MaxCompute サービス認証が含まれます。次の図は、さまざまなユーザー操作の認証フローを示しています。
RAM 認証
ユーザーが MaxCompute コンソールでサービスの有効化、リソースの購入、クォータ、プロジェクト、またはテナントの管理などの操作を実行すると、Alibaba Cloud は RAM を使用してリクエストを認証し、ユーザーの権限を検証します。認証に失敗した場合、操作はブロックされます。
-
RAM 認証が必要な操作のリストについては、「RAM の権限」をご参照ください。
-
RAM ユーザーまたは RAM ロールにシステム権限ポリシーを付与するには、「RAM ユーザーの権限の管理」をご参照ください。
MaxCompute サービス認証
-
プロジェクトレベルの操作認証
MaxCompute のプロジェクトレベルの操作には、プロジェクトレベルのオブジェクト操作とプロジェクトレベルの管理操作が含まれます。
-
プロジェクトレベルのオブジェクト操作権限:プロジェクト内のオブジェクト (プロジェクト、テーブル、モデル、関数、リソース、インスタンスなど) に対する操作の権限です。例としては、
CreateTable、CreateModel、CreateInstance、SelectTableなどがあります。詳細については、「プロジェクトおよびプロジェクト内オブジェクトの権限リスト」をご参照ください。 -
プロジェクトレベルの管理権限:プロジェクトのセキュリティ設定、プロジェクトのユーザーとロールの権限管理、パッケージの管理、ラベルベースのアクセス制御、および期限切れの権限のクリアなどの権限です。詳細については、「プロジェクト管理権限のリスト」をご参照ください。
MaxCompute のプロジェクトレベルの操作の認証フローは次のとおりです:
-
ユーザー認証。詳細については、「ユーザー認証」をご参照ください。
-
Alibaba Cloud アカウント (プライマリアカウントまたは RAM ユーザー) を使用して MaxCompute コンソールにログインできます。
-
odpscmd や JDBC などのツールを使用して MaxCompute に接続する場合、アクセスキー ID とアクセスキーシークレットを提供する必要があります。
-
ユーザーが MaxCompute に接続すると、システムはユーザーが現在のプロジェクトのメンバーであるかどうかを確認します。管理者が
add user "xxx"コマンドを実行してユーザーをプロジェクトに追加した後にのみ、ユーザーはプロジェクト内で操作を実行できます。
-
-
リクエスト元のチェック (IP アドレスチェック):システムは IP アドレスホワイトリストをチェックします。詳細については、「IP アドレスホワイトリストの管理」をご参照ください。
-
プロジェクトステータスのチェック:システムはプロジェクトが正常な状態であるかを確認します。
-
MaxCompute 権限のチェック:ユーザーがプロジェクトに追加された後、操作を実行するために必要な権限を付与される必要があります。これらの権限は、ACL ベースのアクセス制御、ポリシーベースのアクセス制御、ダウンロード権限制御、ラベルベースのアクセス制御、パッケージを使用したプロジェクト間のリソースアクセスなど、さまざまな権限付与方法を通じて付与できます。プロジェクトレベルのユーザーの管理方法については、「コマンドを使用したユーザー権限の管理」をご参照ください。
-
-
テナントレベルの操作認証
MaxCompute のテナントレベルの操作権限には、テナントレベルのオブジェクト操作権限とテナントレベルの管理権限が含まれます。
-
テナントレベルのオブジェクト操作権限には、クォータや NetworkLink などのテナントレベルのオブジェクトに対する操作が含まれます。例としては、
use quotaやCreateNetworkLinkなどがあります。操作のリストについては、「テナント内オブジェクトの権限リスト」をご参照ください。テナントレベルのオブジェクト操作により、単一のアカウントで複数のプロジェクトオブジェクトを管理することも可能になり、権限管理が簡素化されます。
-
テナントレベルの管理権限は、テナントレベルでユーザーとロールを管理するために使用されます。これらの権限には、テナントレベルのユーザーの追加または削除、テナントレベルのロールの作成または削除、テナントレベルのユーザーとロールのリストとその権限の表示、ユーザーへのテナントレベルのロールの付与、ユーザーからのテナントレベルのロールの取り消し、プロジェクトへのテナントレベルのロールの追加、およびプロジェクトからのテナントレベルのロールの削除が含まれます。
ユーザーがこれらの操作を実行しようとすると、MaxCompute はユーザーを認証し、ユーザーが必要な権限を持っているかどうかを検証します。権限がない場合、操作はブロックされます。
-
権限付与フロー
以下は、MaxCompute における一般的な権限付与フローです。
-
フロー 1:オブジェクトに対する操作権限をユーザーに直接付与する
プロジェクトオーナーまたは組み込みの管理ロールを持つユーザーがターゲットユーザーを MaxCompute プロジェクトに追加した後、権限を持つユーザーが ACL ベースのアクセス制御を使用して、オブジェクトに対する操作権限をターゲットユーザーに付与します。

-
フロー 2:ロールを使用してオブジェクトに対する操作権限を複数のユーザーに付与する
プロジェクトオーナーまたは組み込みの管理ロールを持つユーザーがターゲットユーザーとロールを MaxCompute プロジェクトに追加した後、権限を持つユーザーが ACL ベースのアクセス制御、ポリシーベースのアクセス制御、またはダウンロード権限制御を使用して、オブジェクトに対する操作権限をターゲットロールに付与します。その後、そのロールをターゲットユーザーに割り当てます。

-
フロー 3:機密性の高いデータへのアクセス権限をユーザーに直接付与する
プロジェクトオーナーまたは組み込みの管理ロールを持つユーザーがターゲットユーザーを MaxCompute プロジェクトに追加した後、プロジェクトオーナーまたは Admin ロールを持つユーザーがターゲットユーザーに許可されたアクセスレベルを設定できます。ユーザーが特定の機密性の高いデータにアクセスする必要がある場合は、ラベルベースのアクセス制御を使用してアクセス権を付与できます。

-
フロー 4:ロールを使用して機密性の高いデータへのアクセス権限を複数のユーザーに付与する
プロジェクトオーナーまたは組み込みの管理ロールを持つユーザーがターゲットユーザーを MaxCompute プロジェクトに追加した後、プロジェクトオーナーまたは Admin ロールを持つユーザーがターゲットユーザーに許可されたアクセスレベルを設定できます。複数のユーザーが同じ機密性の高いデータにアクセスできるようにするには、ロールを作成し、ラベルベースのアクセス制御を使用してそのロールに機密性の高いデータへのアクセス権を付与し、その後そのロールをユーザーに割り当てます。

-
フロー 5:プロジェクト間でリソースにアクセスし、ターゲットプロジェクトのユーザーにパッケージ内のリソースへのアクセス権を直接付与する
ソースプロジェクトのプロジェクトオーナーはパッケージを作成し、それにリソースを追加してから、ターゲットプロジェクトにパッケージをインストールする権限を付与します。ターゲットプロジェクトのプロジェクトオーナーはパッケージをインストールし、ACL ベースのアクセス制御またはラベルベースのアクセス制御を使用してユーザーに権限を付与します。

-
フロー 6:プロジェクト間でリソースにアクセスし、ロールを使用してパッケージ内のリソースへのアクセス権をユーザーに付与する
ソースプロジェクトのプロジェクトオーナーはパッケージを作成し、それにリソースを追加してから、ターゲットプロジェクトにパッケージをインストールする権限を付与します。ターゲットプロジェクトのプロジェクトオーナーはパッケージをインストールし、ACL ベースのアクセス制御またはラベルベースのアクセス制御を使用してロールに権限を付与し、その後そのロールをユーザーに割り当てます。

MaxCompute と DataWorks の権限関係
両サービス間の権限関係を理解する前に、まず MaxCompute プロジェクトと DataWorks ワークスペースの関係を理解する必要があります:
-
MaxCompute プロジェクトを作成する際、DataWorks ワークスペースが [Basic Mode] の場合、単一の MaxCompute プロジェクトにバインドされます。
-
DataWorks ワークスペースが [Standard Mode] の場合、MaxCompute 開発プロジェクト (_dev) と MaxCompute 本番プロジェクト (Prod) の両方にバインドされます。
また、MaxCompute プロジェクトのアカウントレベルの権限ポリシーを決定する [MaxCompute訪問者ID] を設定する必要もあります。
MaxCompute の権限システムをアクセス制御に使用しても、DataWorks UI でのユーザー操作には影響しません。DataWorks は、MaxCompute プロジェクトの権限を視覚的に管理する方法を提供します。ただし、DataWorks でユーザーにロールを割り当てると、MaxCompute リソースに対する権限に影響する可能性があります。
DataWorks と MaxCompute はどちらもユーザーとロールの概念を使用します。両者の権限関係は次のとおりです:
-
ロールとロール権限
データ開発中にプロジェクトメンバーが必要とする MaxCompute リソース権限を提供するために、DataWorks はいくつかの MaxCompute ロールを事前定義しています。次の表は、MaxCompute ロールと DataWorks の事前定義ロールとの間の権限関係を示しています。
マッピング
権限詳細
DataWorks のロールまたは ID
MaxCompute のロール
開発環境の権限
本番環境の権限
説明
ワークスペース管理者
Role_Project_Admin
MaxCompute コンピュートエンジンレベル:現在のプロジェクトにおける project/table/function/resource/instance/job に対するすべての権限、および
packageに対するread権限。DataWorks レベル:データ開発を実行し、タスクを本番環境にデプロイできます。
デフォルトでは、このロールには権限がありません。権限には、セキュリティセンターでの承認が必要です。
このロールを持つユーザーは、ワークスペースの基本プロパティ、データソース、コンピュートエンジンの構成、およびメンバーを管理できます。また、他のメンバーにワークスペース管理者、開発、O&M、デプロイ、およびビジターのロールを割り当てることができます。
開発
Role_Project_Dev
MaxCompute コンピュートエンジンレベル:現在のプロジェクトにおける projects、tables、functions、resources、instances、jobs に対するすべての権限、および
packageのread権限。DataWorks レベル:データ開発を実行できますが、タスクを本番環境にデプロイすることはできません。
デフォルトでは、このロールには権限がありません。権限には、セキュリティセンターでの承認が必要です。
このロールを持つユーザーは、ワークフロー、スクリプトファイル、リソース、UDF、およびデプロイメントパッケージを作成できます。また、テーブルの作成と削除もできますが、デプロイメントは実行できません。
O&M
Role_Project_Pe
現在のプロジェクトの project、function、resource、instance、job オブジェクトに対するすべての権限、およびパッケージに対する読み取り権限、テーブルに対する読み取り/記述権限を持ちます。
説明このロールは MaxCompute コンピュートエンジンレベルの権限を持っていますが、O&M ロールを持つユーザーは DataWorks の UI から直接ノードを実行することはできません。
デフォルトでは、このロールには権限がありません。権限には、セキュリティセンターでの承認が必要です。
ワークスペース管理者が O&M ロールを付与します。このロールを持つユーザーは、デプロイメントとオンライン O&M を実行できますが、データ開発は実行できません。
デプロイ
Role_Project_Deploy
デフォルトでは権限はありません。
デフォルトでは、このロールには権限がありません。権限には、セキュリティセンターでの承認が必要です。
このロールは O&M ロールに似ていますが、オンライン O&M の権限は含まれていません。
ビジター
Role_Project_Guest
デフォルトでは権限はありません。
デフォルトでは、このロールには権限がありません。権限には、セキュリティセンターでの承認が必要です。
このロールを持つユーザーは、表示専用のアクセス権を持ちます。ワークフロー、コード、その他の項目を編集することはできません。
セキュリティ管理者
Role_Project_Security
デフォルトでは権限はありません。
デフォルトでは、このロールには権限がありません。権限には、セキュリティセンターでの承認が必要です。
セキュリティ管理者は、機密ルールの構成やデータリスクの監査など、データセキュリティガードモジュールでのみ使用されます。
データアナリスト
Role_Project_Data_Analyst
デフォルトでは、このロールには権限がありません。権限には、セキュリティセンターでの承認が必要です。
データ分析モジュールでの操作のみに権限を付与します。
モデル設計者
Role_Project_Erd
デフォルトでは権限はありません。
デフォルトでは、このロールには権限がありません。権限には、セキュリティセンターでの承認が必要です。
このロールを持つユーザーは、データモデリングでモデルを表示し、Data warehouse 計画、データ標準、ディメンションモデリング、およびデータメトリックを管理できます。このロールは、モデルを公開する権限を付与しません。
データガバナンス管理者
Role_Project_Data_Governance
デフォルトでは権限はありません。
デフォルトでは、このロールには権限がありません。権限には、セキュリティセンターでの承認が必要です。
このロールは データガバナンスセンターにのみ適用されます。ユーザーは、管理するワークスペースでガバナンスの問題の表示、ガバナンス計画の定義、確認項目の有効化ができます。データ開発や O&M の権限は付与されません。
ワークスペースの所有者 (Alibaba Cloud アカウント)
Project Owner
MaxCompute プロジェクトの所有者として、このロールはプロジェクトに対するすべての権限を持ちます。
すべての権限を持ちます。
N/A
N/A
Super_Administrator
MaxCompute プロジェクトのスーパー管理者として、このロールは管理権限と、その中のすべてのリソースタイプに対するすべての権限を持ちます。
すべての権限を持ちます。
N/A
N/A
Admin
プロジェクトが作成されると、固定された権限セットを持つ Admin ロールが自動的に作成されます。このロールは、プロジェクト内のすべてのオブジェクトにアクセスし、ユーザーとロールを管理および承認できます。プロジェクトの所有者とは異なり、Admin ロールは他のユーザーに Admin 権限を割り当てたり、プロジェクトのセキュリティ設定を構成したり、プロジェクトの認証モデルを変更したりすることはできません。プロジェクトの所有者は、セキュリティ管理を委任するために Admin ロールをユーザーに割り当てることができます。
すべての権限を持ちます。
N/A
N/A
Role_Project_Scheduler
デフォルトでは権限はありません。
MaxCompute コンピュートエンジンレベル:現在のプロジェクトの project、table、function、resource、instance、job オブジェクトに対するすべての権限、およびパッケージに対する読み取り権限を持ちます。
DataWorks レベル:本番スケジューリング環境で実行 ID として使用されます。
説明RAM ユーザーまたは RAM ロールが MaxCompute プロジェクトの本番環境のスケジューリングアクセス ID として設定されている場合 (つまり、本番データソースを作成するときに Default Access Identity として構成されている場合)、DataWorks はそのユーザーまたはロールを MaxCompute プロジェクトの Role_Project_Scheduler ロールにマッピングします。デフォルトのアクセス ID の構成方法についての詳細は、「MaxCompute コンピュートエンジンのバインド」をご参照ください。
本番環境で MaxCompute タスクをスケジューリングして実行するための統一された ID として機能します。
-
ユーザーとユーザー権限
-
DataWorks ワークスペースでは、プロジェクトオーナーは Alibaba Cloud アカウントである必要があり、プロジェクトメンバーはプロジェクトを所有する Alibaba Cloud アカウントの RAM ユーザーのみです。DataWorks の ワークスペース管理 を使用して、ユーザーを追加し、ロールを割り当てることができます。
-
MaxCompute プロジェクトでは、Alibaba Cloud アカウントはプロジェクトオーナーまたはプロジェクトメンバーになることができます。プロジェクトメンバーは、Alibaba Cloud アカウントの RAM ユーザーにすることもできます。
add user xxx;コマンドを実行してユーザーを追加できます。add role xxx;およびgrant role xxx to user xxx;コマンドを実行して、ロールを追加し、それをユーザーに割り当てることができます。
次の図は、さまざまなワークスペースモードとサポートされているビジターアイデンティティにおけるユーザーと権限の関係を示しています。
説明DataWorks ロールに対応する MaxCompute の権限は固定されています。ユーザーが DataWorks ロールを通じて権限を取得し、その後コマンドを使用して追加の MaxCompute 権限を付与された場合、MaxCompute でのユーザーの実際の権限は、DataWorks に表示される権限とは異なる場合があります。
-