Elastic Compute Service (ECS) インスタンスにタグをアタッチし、Resource Access Management (RAM) のカスタムポリシーで権限付与されたタグを指定できます。これにより、タグを使用して、RAM ユーザーが特定の ECS インスタンスのみを表示および管理するように制限できます。
背景情報
次の図は、タグベースの認証とも呼ばれる、タグに基づいて RAM ユーザーの権限を制限するためのロジックを示しています。
カスタムポリシーでは、Condition 要素で権限付与されたタグを指定できます。タグは、次の条件キーをサポートしています:
acs:RequestTag/<tag-key>: リクエストで渡されるタグ情報。これは、ユーザーが API 操作を呼び出すときに、タグをリクエストパラメーターに含める必要があることを意味します。acs:ResourceTag/<tag-key>: リクエストされたリソースにアタッチされているタグ情報。これは、ユーザーがリソースに対して操作を実行するときに、リソースに指定されたタグがなければならないことを意味します。
手順
このセクションでは、Alice という名前の RAM ユーザーが、タグ owner:alice および environment:production がアタッチされている ECS インスタンスのみを表示および管理できるようにする方法の例を示します。Alice は他の ECS インスタンスを表示または管理することはできません。
この権限付与プロセス中も、ECS インスタンスは通常どおり実行され続けます。
アカウント管理者として次のステップを実行します。
RAM コンソールで、Alice という名前の RAM ユーザーを作成します。
詳細については、「RAM ユーザーの作成」をご参照ください。
必要な ECS インスタンスにタグをアタッチします。
この例では、タグ
owner:aliceとenvironment:productionを ECS インスタンスにアタッチします。次のいずれかのメソッドを使用してタグをアタッチできます:
ECS コンソールで。詳細については、「タグの作成とアタッチ」をご参照ください。
RAM コンソールで、UseTagAccessRes という名前のカスタムポリシーを作成します。
次のコードはポリシードキュメントを示しています。詳細については、「カスタムポリシーの作成」をご参照ください。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "ecs:*", "Resource": "*", "Condition": { "StringEquals": { "acs:ResourceTag/owner": [ "alice" ], "acs:ResourceTag/environment": [ "production" ] } } }, { "Effect": "Allow", "Action": "ecs:*", "Resource": "*", "Condition": { "StringEquals": { "acs:RequestTag/owner": [ "alice" ], "acs:RequestTag/environment": [ "production" ] } } }, { "Effect": "Allow", "Action": [ "ecs:List*", "ecs:DescribeInstanceStatus", "ecs:DescribeInstanceVncUrl", "ecs:DescribeInstanceAutoRenewAttribute", "ecs:DescribeInstanceRamRole", "ecs:DescribeInstanceTypeFamilies", "ecs:DescribeInstanceTypes", "ecs:DescribeInstanceAttachmentAttributes", "ecs:DescribeInstancesFullStatus", "ecs:DescribeInstanceHistoryEvents", "ecs:DescribeInstanceMonitorData", "ecs:DescribeInstanceMaintenanceAttributes", "ecs:DescribeInstanceModificationPrice", "ecs:DescribeA*", "ecs:DescribeC*", "ecs:DescribeD*", "ecs:DescribeE*", "ecs:DescribeH*", "ecs:DescribeIm*", "ecs:DescribeInv*", "ecs:DescribeK*", "ecs:DescribeL*", "ecs:DescribeM*", "ecs:DescribeN*", "ecs:DescribeP*", "ecs:DescribeR*", "ecs:DescribeS*", "ecs:DescribeT*", "ecs:DescribeZ*", "vpc:DescribeVpcs", "vpc:DescribeVSwitches" ], "Resource": "*" }, { "Effect": "Deny", "Action": [ "ecs:DeleteTags", "ecs:UntagResources", "ecs:CreateTags", "ecs:TagResources" ], "Resource": "*" } ] }ポリシーの説明:
ポリシー内容
説明
{ "Effect": "Allow", "Action": "ecs:*", "Resource": "*", "Condition": { "StringEquals": { "acs:RequestTag/owner": "alice", "acs:RequestTag/environment": "production" } } }タグ
owner:aliceおよびenvironment:productionによる ECS インスタンスのフィルター処理を許可します。{ "Effect": "Allow", "Action": "ecs:*", "Resource": "*", "Condition": { "StringEquals": { "acs:ResourceTag/owner": [ "alice" ], "acs:ResourceTag/environment": [ "production" ] } } }タグ
owner:aliceおよびenvironment:productionがアタッチされている ECS インスタンスでの管理操作を許可します。{ "Effect": "Allow", "Action": [ "ecs:List*", "ecs:DescribeInstanceStatus", "ecs:DescribeInstanceVncUrl", "ecs:DescribeInstanceAutoRenewAttribute", "ecs:DescribeInstanceRamRole", "ecs:DescribeInstanceTypeFamilies", "ecs:DescribeInstanceTypes", "ecs:DescribeInstanceAttachmentAttributes", "ecs:DescribeInstancesFullStatus", "ecs:DescribeInstanceHistoryEvents", "ecs:DescribeInstanceMonitorData", "ecs:DescribeInstanceMaintenanceAttributes", "ecs:DescribeInstanceModificationPrice", "ecs:DescribeA*", "ecs:DescribeC*", "ecs:DescribeD*", "ecs:DescribeE*", "ecs:DescribeH*", "ecs:DescribeIm*", "ecs:DescribeInv*", "ecs:DescribeK*", "ecs:DescribeL*", "ecs:DescribeM*", "ecs:DescribeN*", "ecs:DescribeP*", "ecs:DescribeR*", "ecs:DescribeS*", "ecs:DescribeT*", "ecs:DescribeZ*", "vpc:DescribeVpcs", "vpc:DescribeVSwitches" ], "Resource": "*" }ECS インスタンスに関する情報の表示を許可します。
{ "Effect": "Deny", "Action": [ "ecs:DeleteTags", "ecs:UntagResources", "ecs:CreateTags", "ecs:TagResources" ], "Resource": "*" }タグの削除、デタッチ、作成、アタッチを拒否します。
これにより、RAM ユーザーがタグを変更して権限を失うことを防ぎます。
RAM コンソールで、RAM ユーザー Alice に必要な権限を付与します。
リソース範囲を [アカウントレベル] に設定し、プリンシパルとして RAM ユーザー Alice を選択し、カスタムポリシー UseTagAccessRes を選択します。詳細については、「RAM ユーザーへの権限付与」をご参照ください。
結果の確認
RAM ユーザー Alice として ECS コンソール にログオンします。
詳細については、「RAM ユーザーとして Alibaba Cloud 管理コンソールにログオンする」をご参照ください。
左側のナビゲーションウィンドウで、 を選択します。
トップメニューバーの左上隅で、リージョンを選択します。
[インスタンス] ページで、検索バーの横にある [タグフィルタリング] をクリックし、
owner:aliceおよびenvironment:productionタグを選択します。
重要RAM ユーザーは、指定されたタグでフィルターした後にのみ、それらのタグを持つ ECS インスタンスを表示できます。そうしないと、ECS インスタンスは表示されません。
これで、
owner:aliceおよびenvironment:productionタグがアタッチされている ECS インスタンスのみを表示および管理できます。
リファレンス
ECS の RAM 認証ルールについての詳細については、「権限付与情報」をご参照ください。