タグを使用して ECS インスタンスをグループ化し、RAM ユーザーが割り当てられたインスタンスにのみアクセスできるようにします。
ユースケース
Alibaba Cloud アカウントが 10 台の ECS インスタンスを所有しています。developer チームに 5 台のインスタンスへのアクセスを、operator チームに残りの 5 台へのアクセスを付与し、各チームが割り当てられたインスタンスの表示と管理のみを行えるように制限したいとします。
ソリューション
-
タグを使用して、チームごとの ECS インスタンスを識別します。
developerチームとoperatorチームのインスタンスを識別するために、2 つのタグを作成します。 -
RAM ユーザーをグループ化します。
developerとoperatorという名前の RAM ユーザーグループを 2 つ作成し、各チームの RAM ユーザーを対応するグループに追加します。 -
タグに基づいて RAM ユーザーグループに権限を付与します。
Condition要素にタグベースの条件を設定してリソース範囲を定義するカスタムポリシーを 2 つ作成し、それぞれを対応するグループにアタッチします。グループ内の RAM ユーザーは、グループのポリシー権限を継承します。-
acs:RequestTag/<tag-key>: API リクエストに含める必要があるタグ。 -
acs:ResourceTag/<tag-key>: アクセス対象のリソースにアタッチする必要があるタグ。
-
次の表に、リソース計画を示します。
|
チーム |
RAM ユーザーグループ |
RAM ポリシー |
タグ |
|
developer チーム |
developer |
policyForDevTeam |
タグキー: team、タグ値: dev |
|
operator チーム |
operator |
policyForOpsTeam |
タグキー: team、タグ値: ops |
操作手順
AliyunRAMFullAccess および AliyunECSFullAccess 権限を持つ Alibaba Cloud アカウントまたは RAM ユーザーとしてサインインします。
-
ECS コンソールで、ECS インスタンスにタグを作成してバインドします。
5 台の ECS インスタンスにタグ
team:devをバインドし、残りの 5 台のインスタンスにタグteam:opsをバインドします。タグを作成してバインドする -
RAM コンソールで、RAM ユーザーグループを作成します。
2 つの RAM ユーザーグループ
developerとoperatorを作成します。RAM ユーザーグループを作成する -
RAM コンソールで、RAM ユーザーを作成し、対応する RAM ユーザーグループに追加します。
各チームの RAM ユーザーを作成し、
developerまたはoperatorグループに追加します。RAM ユーザーを作成するRAM ユーザーを RAM ユーザーグループに追加する -
RAM コンソールで、カスタムポリシーを作成します。
2 つのカスタムポリシー
policyForDevTeamとpolicyForOpsTeamを作成します。カスタムポリシーを作成するpolicyForDevTeamのポリシードキュメント:{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "ecs:*", "Resource": "*", "Condition": { "StringEquals": { "acs:RequestTag/team": [ "dev" ] } } }, { "Effect": "Allow", "Action": "ecs:*", "Resource": "*", "Condition": { "StringEquals": { "acs:ResourceTag/team": [ "dev" ] } } }, { "Effect": "Allow", "Action": [ "ecs:DescribeTags", "ecs:ListTagResources" ], "Resource": "*" }, { "Effect": "Deny", "Action": [ "ecs:DeleteTags", "ecs:UntagResources", "ecs:CreateTags", "ecs:TagResources" ], "Resource": "*" } ] }policyForOpsTeamのポリシードキュメント:{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "ecs:*", "Resource": "*", "Condition": { "StringEquals": { "acs:RequestTag/team": [ "ops" ] } } }, { "Effect": "Allow", "Action": "ecs:*", "Resource": "*", "Condition": { "StringEquals": { "acs:ResourceTag/team": [ "ops" ] } } }, { "Effect": "Allow", "Action": [ "ecs:DescribeTags", "ecs:ListTagResources" ], "Resource": "*" }, { "Effect": "Deny", "Action": [ "ecs:DeleteTags", "ecs:UntagResources", "ecs:CreateTags", "ecs:TagResources" ], "Resource": "*" } ] }次の表で、各ポリシーステートメントを説明します。
ポリシーステートメント
説明
{ "Effect": "Allow", "Action": "ecs:*", "Resource": "*", "Condition": { "StringEquals": { "acs:RequestTag/team": [ "dev" ] } } }リクエストにタグ
team:devが含まれている場合、リソースの作成やフィルタリングを含む ECS 操作を許可します。{ "Effect": "Allow", "Action": "ecs:*", "Resource": "*", "Condition": { "StringEquals": { "acs:ResourceTag/team": [ "dev" ] } } }タグ
team:devを持つ ECS インスタンスに対する管理操作を許可します。{ "Effect": "Allow", "Action": [ "ecs:DescribeTags", "ecs:ListTagResources" ], "Resource": "*" }ユーザーが ECS インスタンスのすべてのタグを表示することを許可します。
説明すべてのタグを一覧表示する必要がない場合は、このステートメントを削除してください。削除しても、ユーザーはタグキーとタグ値を手動で入力することで ECS インスタンスを絞り込めます。
{ "Effect": "Deny", "Action": [ "ecs:DeleteTags", "ecs:UntagResources", "ecs:CreateTags", "ecs:TagResources" ], "Resource": "*" }タグの削除、アンバインド、作成、バインドの権限を拒否します。
RAM ユーザーがタグを変更してリソースへのアクセス権を失うことを防ぎます。
-
RAM ユーザーグループに権限を付与します。
policyForDevTeamをdeveloperグループに、policyForOpsTeamをoperatorグループにアタッチします。RAM ユーザーグループに権限を付与する説明RAM ユーザーは、グループから自動的に権限を継承します。
結果の確認
-
RAM ユーザーとして ECS コンソールにログオンします。
-
左側のナビゲーションウィンドウで、 を選択します。
-
上部メニューで、リージョンを選択します。
-
「[インスタンス]」ページで、検索ボックスの横にある [Filter by Tag] をクリックし、適切なタグキーとタグ値を選択します。
例:
developerグループの RAM ユーザーは、タグteam:devを選択して認可されたインスタンスを絞り込めます。重要RAM ユーザーは、認可されたタグに一致する ECS インスタンスのみを表示できます。タグで絞り込まない場合、インスタンスリストには何も表示されません。
-
認可された ECS インスタンスを表示して管理します。
詳細情報
同じタグベースの認可を、ブロックストレージ、スナップショット、イメージ、セキュリティグループ、Elastic Network Interface、専用ホスト、SSH キーペアなどの ECS リソースにも適用できます。