これにより、異なるユーザーに対して異なるクラウドリソースの権限を付与できます。
背景情報
タグを使用してクラウドリソースを識別および分類できます。Resource Access Management (RAM) はポリシーを使用してこれらのリソースへのアクセスと操作を制御します。タグと RAM を組み合わせることで、ポリシー内の条件としてタグを使用し、クラウドリソースに対するきめ細かい権限管理を実現できます。
タグに基づく RAM ユーザー権限の制御ロジック(タグベース認証とも呼ばれます)は次のとおりです。

タグをサポートする ECI リソースには、ECI インスタンス、イメージキャッシュ、仮想ノードが含まれます。ECI リソースにタグをアタッチできるのは、作成時または更新時のみです。詳細については、「ECI インスタンスの管理にタグを使用する」をご参照ください。
設定例
例となるシナリオ
このトピックでは、以下のシナリオを使用してタグベース認証を説明します。
特定のタグ(例:env:test)が付与された ECI リソースに対してのみ操作を許可するように RAM ユーザーを制限する必要があると仮定します(下図参照)。
具体的な要件は次のとおりです。
要件 1:ECI リソースを作成する場合、ユーザーは作成時に
env:testタグを付与する必要があります。要件 2:ユーザーは
env:testタグが付与された ECI リソースに対してのみ操作できます。要件 3:ECI リソースをクエリする場合、ユーザーは
env:testタグが付与されたリソースのみを表示できます。
ステップ 1:カスタムポリシーの設定と付与
Alibaba Cloud アカウントで RAM コンソール にログインします。
左側のナビゲーションウィンドウで、Permissions > Policies を選択します。
Policies ページで、Create Policy をクリックします。
カスタムポリシーを設定します。
引用ポリシー タブをクリックします。
表示されるダイアログボックスで、右側のフィルターオプションから システムポリシー を選択します。次に、AliyunECIFullAccess を検索して選択し、インポート をクリックします。
AliyunECIFullAccess は、ECI リソースを管理するためのデフォルトのシステムポリシーです。ECI リソースの操作、セキュリティグループや VPC などの関連リソースのクエリ、ECI のサービスリンクロールの作成に関する権限が含まれています。
JSON タブをクリックします。
エディター内のポリシー内容を変更し、次のステップ をクリックします。
説明ポリシーは一連のアクセス権限のセットです。バージョン番号とステートメントのリストで構成されています。各ステートメントには、効果(Effect)、操作(Action)、リソース(Resource)、およびオプションの条件(Condition)が含まれます。詳細については、「ポリシーの構造と構文」および「ポリシー要素」をご参照ください。
ポリシーの
Condition要素に、タグベースの条件を追加して権限を制限できます。サポートされているタグ条件キーは次のとおりです。タグ条件キー
説明
acs:RequestTagリクエストに特定のタグを含めるよう制限します。
API リクエストにタグパラメーターが含まれていない場合、ポリシー内で
acs:RequestTagを使用できません。そうしないと、認証が失敗します。acs:ResourceTag特定のタグが付与されたリソースに対してのみ操作を許可します。
API リクエストにリソース ID パラメーターが含まれていない場合、ポリシー内で
acs:ResourceTagを使用できません。そうしないと、認証が失敗します。説明権限ポリシーを設計する際は、ビジネス要件および API オペレーションの特性(リソース ID を必要とするか、タグの受け渡しをサポートしているかなど)に基づいて、
acs:RequestTagまたはacs:ResourceTagを設定してください。詳細については、「API 認証」をご参照ください。例となるシナリオの要件を満たすために、次のようにポリシーを設計します。
要件
ポリシー
env:testタグが付与されている場合にのみ、ECI リソースを作成できます。{ "Effect": "Allow", "Action": "eci:Create*", "Resource": "*", "Condition": { "StringEquals": { "acs:RequestTag/env": "test" } } }ユーザーは env:test タグが付与された ECI リソースに対してのみ操作できます。
{ "Effect": "Allow", "Action": "eci:*", "Resource": "*", "Condition": { "StringEquals": { "acs:ResourceTag/env": "test" } } }ECI リソースをクエリする場合、ユーザーは env:test タグが付与されたリソースのみを表示できます。
{ "Effect": "Allow", "Action": "eci:Describe*", "Resource": "*", "Condition": { "StringEquals": { "acs:RequestTag/env": "test" } } }AliyunECIFullAccess の権限を含む完全なポリシー例は次のとおりです。
{ "Version": "1", "Statement": [{ "Effect": "Allow", "Action": "eci:Create*", "Resource": "*", "Condition": { "StringEquals": { "acs:RequestTag/env": "test" } } }, { "Effect": "Allow", "Action": "eci:*", "Resource": "*", "Condition": { "StringEquals": { "acs:ResourceTag/env": "test" } } }, { "Effect": "Allow", "Action": "eci:Describe*", "Resource": "*", "Condition": { "StringEquals": { "acs:RequestTag/env": "test" } } }, { "Action": [ "ecs:DescribeSecurityGroups" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "vpc:DescribeVSwitches", "vpc:DescribeVpcs", "vpc:DescribeEipAddresses" ], "Resource": "*", "Effect": "Allow" }, { "Action": "ram:CreateServiceLinkedRole", "Resource": "*", "Effect": "Allow", "Condition": { "StringEquals": { "ram:ServiceName": [ "eci.aliyuncs.com", "vnode.eci.aliyuncs.com" ] } } } ] }説明OpenAPI を使用して ECI リソースを操作する場合は、AliyunECIFullAccess ポリシーで十分です。ECI コンソールを使用する場合は、追加の権限を付与する必要があります。詳細については、「RAM ユーザーへの権限付与」をご参照ください。
ポリシー名を入力し、はい をクリックします。
カスタムポリシーを RAM ユーザーに付与します。
左側のナビゲーションウィンドウで、Identities > Users を選択します。
RAM ユーザーを作成します。
RAM ユーザーがない場合は、管理上のニーズに基づいて作成してください。詳細については、「RAM ユーザーの作成」をご参照ください。
RAM ユーザーに権限を付与します。
カスタムポリシーを RAM ユーザーに付与します。詳細については、「RAM ユーザーの権限管理」をご参照ください。
ステップ 2:ポリシーの検証
RAM ユーザーとして OpenAPI Explorer にログインします。
ポリシーが有効であることを確認します。
以下のテストでは、ECI インスタンスを例として使用します。
ECI インスタンスの作成
env:testタグを設定した場合、インスタンスは正常に作成されます。タグを設定しない場合、または別のタグを設定した場合、作成は失敗し、権限拒否エラーが返されます。
ECI インスタンスの削除
ECI インスタンスに
env:testタグが付与されている場合、削除は成功します。ECI インスタンスに
env:testタグが付与されていない場合、削除は失敗し、権限拒否エラーが返されます。
ECI インスタンスのクエリ
env:testタグが付与されたインスタンスを指定し、クエリでタグを指定しない場合、クエリは指定された ECI インスタンスの情報を返します。env:testタグが付与されていないインスタンスを指定した場合、クエリは空の結果を返します。インスタンスを指定せず、クエリで
env:testタグのみを設定した場合、クエリはenv:testタグが付与されたすべてのインスタンスの情報を返します。インスタンスもタグも指定しない場合、クエリは空の結果を返します。
API 認証
タグベースポリシーを持つ RAM ユーザーによる API 呼び出しの認証方法を次の表に示します。
操作 | 説明 |
CreateContainerGroup や CreateImageCache などの作成操作 | これらの操作ではリソース ID が不要なため、認証は
|
DescribeContainerGroups や DescribeImageCaches などのクエリ操作 | これらの操作では、リソース ID を指定することも、タグを提供することも可能です。そのため、認証は
説明 クエリ操作の認証が失敗した場合、エラーではなく空の結果が返されます。 |
UpdateContainerGroup や UpdateImageCache などの更新操作 | これらの操作ではリソース ID が必要なため、認証は
説明 タグを更新する際、RAM ユーザーはリソースの現在のタグに対する権限と、新しいタグを適用する権限の両方を保持している必要があります。これには、元のタグと新しいタグの両方に対するポリシー条件が必要になる場合があります。 |
RestartContainerGroup や ExecContainerCommand などのその他の操作 | これらの操作ではリソース ID が必要なため、認証は
|