このトピックでは、MaxCompute におけるテナントレベルのリソースに対して、細かい粒度で設定可能なプロジェクトレベルのアクセス権限を構成できる機能であるプロジェクトレベルのテナントリソースアクセス制御について説明します。
背景情報
MaxCompute のリソースオブジェクトには、テナントオブジェクトとプロジェクトレベルのオブジェクトが含まれます。
テナントオブジェクト:外部データソース、ネットワーク接続、カスタムイメージ、クォータグループなどが該当します。テナント管理者は RAM ポリシーを用いて、これらのリソースに対する権限を制御します。
プロジェクトレベルのオブジェクト:スキーマ、テーブル、ロール、インスタンス、リソース、関数、ビューなど、プロジェクトに属するオブジェクトです。プロジェクト管理者は MaxCompute 独自の権限付与モデルを用いて、これらのオブジェクトに対する権限を制御します。
テナントオブジェクトは複数のプロジェクト間で共用できます。デフォルトでは、MaxCompute はプロジェクトが特定のテナントオブジェクトを利用する権限を持っているかをチェックしません。したがって、テナントオブジェクトの所有者が特定のプロジェクトによる利用を許可しない場合、プロジェクトレベルのテナントリソースアクセス制御を有効化することで、当該リソースを明示的に特定のプロジェクトに紐付けられます。これは任意の強化型アクセス制御モデルです。
利用方法
MaxCompute では、プロジェクトレベルでテナントオブジェクトへのアクセスを制御するための、2 つのセキュリティモデルを提供しています。
プロジェクトレベルのテナントリソースアクセス制御のスイッチは、すべてのテナントオブジェクトに適用されます。このスイッチを有効化すると、すべてのテナントリソースに対して権限チェックが実行されるようになります。
本機能は現在プレビュー段階であり、直接有効化できません。本機能をご利用になりたい場合は、チケットを送信してください。
モード 1:プロジェクトレベルのテナントリソースアクセス制御を有効化
テナントリソースの作成者は、リソースとプロジェクトとの間にマウント関係を設定することで、どのプロジェクトが当該リソースを利用可能かを指定できます。
その後、プロジェクト管理者は、権限付与モデルを通じて、プロジェクト内のユーザーにリソースを使用するための権限を付与します。
プロジェクトレベルのテナントリソースアクセス制御を有効化することで、特定のテナントオブジェクトをどのプロジェクトが利用可能かを制御できます。現時点では、テナント管理者が全プロジェクトに対してこの機能を強制的に適用するためのスイッチは提供されていません。
モード 2:プロジェクトレベルのテナントリソースアクセス制御を無効化
プロジェクト内でタスクを実行する権限を持つユーザーは、そのタスクに必要なテナントリソースを自由に利用できます。
たとえテナントリソースの作成者がリソースとプロジェクトの間でマウント関係を設定したり、プロジェクト管理者がポリシーを用いてユーザーに「利用」権限を付与したとしても、プロジェクトレベルのテナントリソースアクセス制御が無効化されている場合には、これらの設定は一切効力を発揮しません。ただし、テナントレベルのポリシー承認メカニズムによる権限付与は、この設定の有無に関わらず引き続き有効です。
プロジェクトレベルのテナントリソースアクセス制御の有効化
プロジェクトレベルのテナントリソースアクセス制御を有効化するには、以下の手順を実行します:
テナントオブジェクトのプロジェクトへのマウント:
MaxCompute コンソール にログインし、左上隅からリージョンを選択します。
左側のナビゲーションウィンドウより、対象オブジェクトの設定ページへ移動します:、構成の管理 > ネットワーク接続、構成の管理 > 外部データソース、または 構成の管理 > イメージ管理。
対象オブジェクトの操作列で、強化されたアクセス制御 をクリックし、マウント先のプロジェクトを選択して設定を完了します。
マウント済みのテナントオブジェクトを確認します:
左側のナビゲーションウィンドウより、 を選択します。プロジェクト管理 ページで、対象プロジェクトの操作列にある管理 をクリックして、プロジェクト設定ページを開きます。
プロジェクト設定 ページで、パラメーター設定 タブを選択します。権限属性 セクションで、編集 をクリックします。その後、プロジェクトにバインドされたテナントリソースの表示 をクリックして、プロジェクトとネットワーク接続、外部データソース、カスタムイメージ、クォータグループなどのリソースとのマウント状況を確認します。
プロジェクトにマウント済みのテナントオブジェクトに対してポリシーを適用します:
左側のナビゲーションウィンドウより、 を選択します。プロジェクト管理 ページで、対象プロジェクトの操作列にある管理 をクリックして、プロジェクト設定ページを開きます。
プロジェクト設定 ページで、ロール権限 タブを選択します。対象のプロジェクトレベルのロールを見つけ、操作列のロールの編集 をクリックします。
ロールの編集 ダイアログボックスで、権限付与方法 を ポリシー に設定します。
ポリシー権限付与 スクリプトボックスで、ロールポリシーを変更できます。
たとえば、以下のポリシーでは、プロジェクト
project_a内のユーザーaが500 CUのクォータを利用する権限を付与しています:{ "Statement":[ { "Action":[ "odps:Usage" ], "Effect":"Allow", "Resource":[ "acs:odps:*:regions/*/quotas/500cu" ] } ], "Version":"1" }ユーザー
aにプロジェクトproject_a内でのテナントリソース利用権限を付与した後、プロジェクトレベルのテナントリソースアクセス制御が有効化されている場合、ユーザーまたはロール単位でテナントリソースへのアクセスを制御できます。ポリシー設定の詳細については、「ポリシーに基づくアクセス制御」をご参照ください。
プロジェクトで使用されるテナントリソースの照会
プロジェクトが使用するテナントリソースを照会する方法は、シナリオに応じて異なります。
テナントリソース | シナリオ | 照会方法 |
クォータグループ | プロジェクトはデフォルトクォータを使用します。 | デフォルトのコンピューティングクォータは、 ページのプロジェクト一覧で確認できます(MaxCompute コンソール 内)。 |
ジョブレベルでクォータが指定されている場合 | SQL ステートメントを実行する前に、実行時パラメーターで指定されたコンピューティングクォータを確認します。
| |
クォータルールは、プロジェクトとタスクを指定します。 | ||
ネットワーク接続 | VPC 内のデータソースにアクセスするためにネットワーク接続を使用する外部テーブルを照会する場合 |
|
VPC アクセス用の UDF を含む SQL ステートメントを実行する前に、ネットワーク接続が指定されている場合 | SQL ステートメントを実行する前に、実行時パラメーターで指定されたネットワーク接続を確認します:
| |
外部データソースは、ネットワーク接続を参照します。 | MaxCompute コンソールの ページにあるリストでネットワーク接続を表示します。 | |
MaxCompute 上の Spark ジョブがネットワーク接続を使用している場合 | ||
外部データソース | 外部データソースを参照する外部スキーマからのテーブルのクエリ |
|
カスタムイメージ | UDF がカスタムイメージを参照している場合 |
関連ドキュメント
テナントリソースに関する詳細については、以下のトピックをご参照ください: