ロールを使用すると、個別に各ユーザーの権限を設定することなく、複数のユーザーに同一の権限セットを一括で付与できます。ロールベースのアクセス制御(RBAC)により、権限管理のオーバーヘッドが削減されます。権限をロールに一度だけ割り当てれば、必要に応じてユーザーをロールに追加または削除できます。
MaxCompute では、管理者ロールとリソースロールの 2 種類のロールをサポートしています。一般的な管理タスクには組み込みロールを活用し、チームの組織構造に合わせたカスタムロールを作成することもできます。
ロールの種類
MaxCompute では、ロールが保持できる権限の種類に基づいて分類されます。
| ロールの種類 | 権限範囲 | 権限の付与方法 |
|---|---|---|
| 管理者ロール | 管理権限(ユーザー管理、セキュリティ構成) | ポリシーのみ(ACL は不可) |
| リソースロール | オブジェクトリソース権限(テーブル、パッケージ、クォータ) | ACL またはポリシー |
管理者ロールはリソース権限を保持できません。リソースロールは管理権限を保持できません。
組み込みロール
MaxCompute では、2 つのスコープ(プロジェクトレベルおよびテナントレベル)にわたって 4 つの組み込み管理者ロールを提供しています。
プロジェクトレベルの組み込みロール
Super_Administrator
プロジェクト内で最高レベルの組み込みロールです。すべてのリソース操作権限およびすべての管理権限を保持します。プロジェクトのオーナー、または Super_Administrator ロールが割り当てられたユーザーのみが、他のユーザーにこのロールを割り当てることができます。
Admin
すべてのリソース操作権限および一部の管理権限を備えた組み込み管理者ロールです。制限事項:MaxCompute が提供する組み込み管理者ロールです。すべてのオブジェクトおよびネットワーク接続(NetworkLink)の権限管理に使用されます。
Admin ロールをユーザーに割り当てられるのは、プロジェクトのオーナーのみです。
Admin ロールが割り当てられたユーザーは、他のユーザーに Admin ロールを再割り当てることはできません。
Admin ロールが割り当てられたユーザーは、セキュリティポリシーの構成、認証モデルの変更、および Admin ロール自体の権限変更を行うことはできません。
テナントレベルの組み込みロール
Super_Administrator
Alibaba Cloud アカウントが MaxCompute に対して持つすべての権限を保持しますが、プロジェクトの作成・削除および MaxCompute サービスの有効化の権限を除きます。
Admin
テナント内のすべてのオブジェクトおよびネットワーク接続を管理する権限を保持します。
プロジェクトへのデフォルトアクセス
プロジェクトのオーナーは、自身が作成したプロジェクトに対してすべての権限を持ちます。デフォルトでは、プロジェクトのオーナーのみがプロジェクト内のオブジェクトにアクセスできます。その他のユーザーがプロジェクトのオブジェクトにアクセスするには、プロジェクトのオーナーが明示的に必要な権限を付与する必要があります。
プロジェクトレベルの管理者ロールの権限
以下の表に、各プロジェクトレベルの管理者ロールが持つ権限を示します。
<table> <thead> <tr> <td><p><b>権限の種類</b></p></td> <td><p><b>オブジェクト</b></p></td> <td><p><b>操作</b></p></td> <td><p><b>説明</b></p></td> <td><p><b>プロジェクトオーナー</b></p></td> <td><p><b>Super_Administrator</b></p></td> <td><p><b>Admin</b></p></td> </tr> </thead> <colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup> <tbody> <tr> <td><p>プロジェクトのセキュリティ構成</p></td> <td><p>プロジェクト</p></td> <td><p>SetSecurityConfiguration</p></td> <td><p>プロジェクトのセキュリティ設定を構成します。</p></td> <td><p><img></p></td> <td><p><img></p></td> <td><p><img></p></td> </tr> <tr> <td><p>プロジェクト</p></td> <td><p>GetSecurityConfiguration</p></td> <td><p>プロジェクトのセキュリティ設定を照会します。</p></td> <td><p><img></p></td> <td><p><img></p></td> <td><p><img></p></td> </tr> <tr> <td><p>保護プロジェクトの管理</p></td> <td><p>プロジェクト</p></td> <td><p>AddTrustedProject</p></td> <td><p>保護プロジェクトを追加します。</p></td> <td><p><img></p></td> <td><p><img></p></td> <td><p><img></p></td> </tr> <tr> <td><p>プロジェクト</p></td> <td><p>RemoveTrustedProject</p></td> <td><p>保護プロジェクトを削除します。</p></td> <td><p><img></p></td> <td><p><img></p></td> <td><p><img></p></td> </tr> <tr> <td><p>プロジェクト</p></td> <td><p>ListTrustedProjects</p></td> <td><p>保護プロジェクトを照会します。</p></td> <td><p><img></p></td> <td><p><img></p></td> <td><p><img></p></td> </tr> <tr> <td><p>ユーザー管理</p></td> <td><p>プロジェクト</p></td> <td><p>AddUser</p></td> <td><p>ユーザーを追加します。</p></td> <td><p><img></p></td> <td><p><img></p></td> <td><p><img></p></td> </tr> <tr> <td><p>プロジェクト</p></td> <td><p>RemoveUser</p></td> <td><p>ユーザーを削除します。</p></td> <td><p><img></p></td> <td><p><img></p></td> <td><p><img></p></td> </tr> <tr> <td><p>プロジェクト</p></td> <td><p>ListUsers</p></td> <td><p>ユーザーを照会します。</p></td> <td><p><img></p></td> <td><p><img></p></td> <td><p><img></p></td> </tr> <tr> <td><p>プロジェクト</p></td> <td><p>ListUserRoles</p></td> <td><p>ユーザーに割り当てられたロールを照会します。</p></td> <td><p><img></p></td> <td><p><img></p></td> <td><p><img></p></td> </tr> <tr> <td><p>ロール管理</p></td> <td><p>プロジェクト</p></td> <td><p>CreateRole</p></td> <td><p>ロールを作成します。</p></td> <td><p><img></p></td> <td><p><img></p></td> <td><p><img></p></td> </tr> <tr> <td><p>プロジェクト</p></td> <td><p>DescribeRole</p></td> <td><p>ロールの権限を表示します。</p></td> <td><p><img></p></td> <td><p><img></p></td> <td><p><img></p></td> </tr> <tr> <td><p>プロジェクト</p></td> <td><p>AlterRole</p></td> <td><p>ロールの属性を変更します。</p></td> <td><p><img></p></td> <td><p><img></p></td> <td><p><img></p></td> </tr> <tr> <td><p>プロジェクト</p></td> <td><p>DropRole</p></td> <td><p>ロールを削除します。</p></td> <td><p><img></p></td> <td><p><img></p></td> <td><p><img></p></td> </tr> <tr> <td><p>プロジェクト</p></td> <td><p>ListRoles</p></td> <td><p>ロールを照会します。</p></td> <td><p><img></p></td> <td><p><img></p></td> <td><p><img></p></td> </tr> <tr> <td><p>ロールによる権限管理</p></td> <td><p>ロール</p></td> <td><p>GrantRole</p></td> <td><p>ユーザーにロールを割り当てます。</p></td> <td><p><img></p></td> <td><p><img></p></td> <td><p><img></p></td> </tr> <tr> <td><p>ロール</p></td> <td><p>RevokeRole</p></td> <td><p>ユーザーからロールを取り消します。</p></td> <td><p><img></p></td> <td><p><img></p></td> <td><p><img></p></td> </tr> <tr> <td><p>ロール</p></td> <td><p>ListRolePrincipals</p></td> <td><p>特定のロールが割り当てられたユーザーを照会します。</p></td> <td><p><img></p></td> <td><p><img></p></td> <td><p><img></p></td> </tr> <tr> <td><p>パッケージ管理</p></td> <td><p>プロジェクト</p></td> <td><p>CreatePackage</p></td> <td><p>パッケージを作成します。</p></td> <td><p><img></p></td> <td><p><img></p></td> <td><p><img></p></td> </tr> <tr> <td><p>プロジェクト</p></td> <td><p>ShowPackages</p></td> <td><p>パッケージを表示します。</p></td> <td><p><img></p></td> <td><p><img></p></td> <td><p><img></p></td> </tr> <tr> <td><p>パッケージ</p></td> <td><p>DescribePackage</p></td> <td><p>パッケージの詳細を表示します。</p></td> <td><p><img></p></td> <td><p><img></p></td> <td><p><img></p></td> </tr> <tr> <td><p>パッケージ</p></td> <td><p>DropPackage</p></td> <td><p>パッケージを削除します。</p></td> <td><p><img></p></td> <td><p><img></p></td> <td><p><img></p></td> </tr> <tr> <td><p>パッケージ</p></td> <td><p>InstallPackage</p></td> <td><p>パッケージをインストールします。</p></td> <td><p><img></p></td> <td><p><img></p></td> <td><p><img></p></td> </tr> <tr> <td><p>パッケージ</p></td> <td><p>UninstallPackage</p></td> <td><p>パッケージをアンインストールします。</p></td> <td><p><img></p></td> <td><p><img></p></td> <td><p><img></p></td> </tr> <tr> <td><p>パッケージ</p></td> <td><p>AllowInstallPackage</p></td> <td><p>他のプロジェクトでパッケージをインストールおよび使用できるように許可します。</p></td> <td><p><img></p></td> <td><p><img></p></td> <td><p><img></p></td> </tr> <tr> <td><p>パッケージ</p></td> <td><p>DisallowInstallPackage</p></td> <td><p>他のプロジェクトでパッケージをインストールおよび使用するための権限を取り消します。</p></td> <td><p><img></p></td> <td><p><img></p></td> <td><p><img></p></td> </tr> <tr> <td><p>パッケージ</p></td> <td><p>AddPackageResource</p></td> <td><p>パッケージにリソースを追加します。</p></td> <td><p><img></p></td> <td><p><img></p></td> <td><p><img></p></td> </tr> <tr> <td><p>パッケージ</p></td> <td><p>RemovePackageResource</p></td> <td><p>パッケージからリソースを削除します。</p></td> <td><p><img></p></td> <td><p><img></p></td> <td><p><img></p></td> </tr> <tr> <td><p>ラベル管理</p></td> <td><p>テーブル</p></td> <td><p>GrantLabel</p></td> <td><p>ラベルを使用してロールまたはユーザーに権限を付与します。</p></td> <td><p><img></p></td> <td><p><img></p></td> <td><p><img></p></td> </tr> <tr> <td><p>テーブル</p></td> <td><p>RevokeLabel</p></td> <td><p>ロールまたはユーザーからラベルベースの権限を取り消します。</p></td> <td><p><img></p></td> <td><p><img></p></td> <td><p><img></p></td> </tr> <tr> <td><p>テーブル</p></td> <td><p>ShowLabelGrants</p></td> <td><p>ロールまたはユーザーに付与されたラベルベースの権限を照会します。</p></td> <td><p><img></p></td> <td><p><img></p></td> <td><p><img></p></td> </tr> <tr> <td><p>テーブル</p></td> <td><p>SetDataLabel</p></td> <td><p>ロールまたはユーザーのラベルを構成します。</p></td> <td><p><img></p></td> <td><p><img></p></td> <td><p><img></p></td> </tr> <tr> <td><p>期限切れ権限のクリア</p></td> <td><p>プロジェクト</p></td> <td><p>ClearExpiredGrants</p></td> <td><p>期限切れの権限に関する情報をクリアします。</p></td> <td><p><img></p></td> <td><p><img></p></td> <td><p><img></p></td> </tr> </tbody> </table>
上記の表において、は該当ロールが権限を持つことを示し、
は権限を持たないことを示します。
テナントレベルでのロールの削除
MaxCompute コンソールでテナントレベルのロールを削除するには、以下の手順を実行します。
MaxCompute コンソール にログインし、左上隅からリージョンを選択します。
ロール管理 タブで、対象のロールを見つけ、 削除 をクリックします(操作 列内)。
ロールの削除 ダイアログボックスで、OK をクリックします。
テナントレベルでのロールの変更
ロールのアクセスポリシーのみを変更できます。ロール名は変更できません。
MaxCompute コンソールでテナントレベルのロールのアクセスポリシーを変更するには、以下の手順を実行します。
MaxCompute コンソール にログインし、左上隅からリージョンを選択します。
ロール管理 タブで、対象のロールを見つけ、 権限管理 をクリックします(操作 列内)。
ロールの編集 ダイアログボックスで、OK をクリックします。
テナントレベルでのロールの作成
MaxCompute コンソールでテナントレベルのロールを作成するには、以下の手順を実行します。
MaxCompute コンソール にログインし、左上隅からリージョンを選択します。
ロール管理 タブで、ロールの追加 をクリックします。
ロールの追加 ダイアログボックスで、以下の表に記載されているパラメーターを設定します。
パラメーター名
説明
ロール名
新しいテナントレベルのロールの名前です。この名前は Alibaba Cloud アカウント内で一意である必要があります。また、以下の要件を満たす必要があります。
先頭文字は英字でなければなりません。
英字、アンダースコア(_)、数字のみを使用できます。
長さは 6~64 文字である必要があります。
ポリシーの内容
ロールのアクセスポリシーです。ポリシーテンプレートに基づき、インターフェイス上でポリシーのコードを編集できます。
OK をクリックします。
カスタムロール
組み込みロールがチームの要件に合致しない場合は、カスタムロールを作成してください。利用可能なロールの種類は、スコープによって異なります。
| スコープ | ロールの種類 | 付与可能な権限 |
|---|---|---|
| プロジェクトレベル | 管理者またはリソース | プロジェクト内の管理権限またはオブジェクトリソース権限 |
| テナントレベル | リソースのみ | クォータ、ネットワークリンク、プロジェクトなどのオブジェクトリソースに対する権限 |
プロジェクトレベルのロールの作成
プロジェクトのオーナーおよび組み込みのプロジェクトレベルロールが割り当てられたユーザーは、MaxCompute クライアント、MaxCompute Studio、または DataWorks コンソールを使用して、カスタムロールの作成・照会・削除が可能です。
ロールを作成した後は、ユーザーにロールを割り当てることで、その権限を有効化できます。詳細については、「ユーザーへのロールの割り当て」をご参照ください。
構文
create role <role_name> [privilegeproperties("type"="admin|resource")];パラメーター
| パラメーター | 必須 | 説明 |
|---|---|---|
role_name | はい | ロールの名前です。プロジェクト内で一意である必要があります。ルール:先頭文字は英字であること、英字および数字のみを使用可能であること、長さは 1~64 文字であること。既存のロール名を確認するには、MaxCompute クライアント で list roles; |
privilegeproperties | いいえ | ロールの種類です。"type"="admin" を指定すると管理者ロールが作成され、権限はポリシーのみで付与できます。"type"="resource" を指定するとリソースロールが作成され、権限は ACL またはポリシーで付与できます。省略した場合は、デフォルトでリソースロールが作成されます。 |
例
リソースロール「Worker」を作成します。
create role Worker;管理者ロール「sale_admin」を作成します。
create role sale_admin privilegeproperties("type"="admin");プロジェクトレベルのロールの照会
構文
list roles;例
list roles;出力:
admin
super_administrator
workerプロジェクトレベルのロールの削除
ロールを削除する前に、以下の点にご注意ください。
ロールにユーザーが割り当てられていない場合にのみ、ロールを削除できます。まず、すべてのユーザーからロールを取り消してください。詳細については、「ユーザーからのロールの取り消し」をご参照ください。
ロールを削除しても、その権限は削除されません。ACL、ポリシー、ラベルに基づく権限はプロジェクト内に残ります。同名の新規ロールを作成した場合、これらの残留権限が継承されます。残留権限を削除するには、ロール削除後に
purge privs from roleコマンドを実行してください。
構文
drop role <role_name>;パラメーター
| パラメーター | 必須 | 説明 |
|---|---|---|
role_name | はい | 削除するロールの名前です。既存のロール名を確認するには、MaxCompute クライアント で list roles; |
例
drop role Worker;削除済みロールの権限の削除
ロールを削除した後も、その残留権限(ACL、ポリシー、ラベルに基づく権限)はプロジェクト内に残ります。プロジェクトのオーナー、Admin、または Super_Administrator が以下のコマンドを実行することで、それらを削除できます。
このコマンドは、ロールがすでに削除された後にのみ実行してください。ロールがまだ存在する場合、コマンドの戻り値は次のようになります:"Principal <role_name> still exist in the project"。構文
purge privs from role <role_name>;パラメーター
| パラメーター | 必須 | 説明 |
|---|---|---|
role_name | はい | 権限を削除する対象の削除済みロールの名前です。このコマンドを実行する前に、list roles; を実行して、ロールが存在しないことを確認してください。 |
次のステップ
作成したロールに権限を付与する:「プロジェクトレベルのロールに基づくアクセス制御の実施」
権限を有効化するためにユーザーにロールを割り当てる:「ユーザーへのロールの割り当て」
使用制限
テナントレベルのロールの計画および管理は、以下のリージョンでのみ可能です:中国 (杭州)、中国 (上海)、中国 (北京)、中国 (張家口)、および中国 (深セン)。