タグを使用して Elastic Compute Service (ECS) インスタンスをグループ化し、Resource Access Management (RAM) ユーザーに割り当てられたインスタンスのみへのアクセス権を付与します。
利用シーン
ご利用の Alibaba Cloud アカウントが 10 台の ECS インスタンスを所有しているとします。開発者チームに 5 台のインスタンスへのアクセス権を付与し、運用チームに残りの 5 台へのアクセス権を付与します。各チームは、割り当てられたインスタンスの表示と管理のみに制限されます。
ソリューション
-
タグを使用して、異なるチームの ECS インスタンスを識別します。
2 つのタグを作成して、開発者チームと運用チームのインスタンスを識別します。
-
RAM ユーザーをグループ化します。
developerとoperatorという名前の 2 つの RAM ユーザーグループを作成し、各チームの RAM ユーザーを対応するグループに追加します。 -
タグに基づいて RAM ユーザーグループに権限を付与します。
タグベースの条件を持つ
Condition要素を使用してリソース範囲を定義する 2 つのカスタムポリシーを作成し、各ポリシーを対応するグループにアタッチします。グループ内の RAM ユーザーは、グループのポリシー権限を継承します。-
acs:RequestTag/<tag-key>:API リクエストに存在する必要があるタグ。 -
acs:ResourceTag/<tag-key>:アクセス対象のリソースにアタッチされている必要があるタグ。
-
次の表にリソースプランを示します。
|
チーム |
RAM ユーザーグループ |
RAM ポリシー |
タグ |
|
開発者チーム |
developer |
policyForDevTeam |
タグキー: team、タグ値: dev |
|
運用チーム |
operator |
policyForOpsTeam |
タグキー: team、タグ値: ops |
操作手順
AliyunRAMFullAccess と AliyunECSFullAccess の権限を持つ Alibaba Cloud アカウントまたは RAM ユーザーでログインします。
-
ECS コンソールで、ご利用の ECS インスタンスにタグを作成して関連付けます。
5 台の ECS インスタンスにタグ
team:devを、残りの 5 台のインスタンスにタグteam:opsを関連付けます。タグの作成と関連付け。 -
RAM コンソールで、RAM ユーザーグループを作成します。
developerとoperatorの 2 つの RAM ユーザーグループを作成します。RAM ユーザーグループの作成。 -
RAM コンソールで、RAM ユーザーを作成し、対応する RAM ユーザーグループに追加します。
各チームの RAM ユーザーを作成し、
developerまたはoperatorグループに追加します。RAM ユーザーの作成。RAM ユーザーグループへの RAM ユーザーの追加。 -
RAM コンソールで、カスタムポリシーを作成します。
policyForDevTeamとpolicyForOpsTeamの 2 つのカスタムポリシーを作成します。カスタムポリシーの作成。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 ユーザーは、所属するグループから自動的に権限を継承します。
結果の確認
-
ECS コンソールに RAM ユーザーとしてログインします。
-
左側のナビゲーションウィンドウで、 を選択します。
-
上部のナビゲーションバーで、リージョンを選択します。
-
[インスタンス] ページで、検索ボックスの横にある [タグでフィルター] をクリックし、適切なタグキーと値を選択します。
たとえば、
developerグループの RAM ユーザーは、team:devタグを選択することで、権限のあるインスタンスをフィルターできます。重要RAM ユーザーは、権限のあるタグに一致する ECS インスタンスのみを表示できます。タグフィルターを使用しない場合、インスタンスリストは空で表示されます。
-
権限のある ECS インスタンスを表示および管理します。
詳細情報
ブロックストレージ、スナップショット、イメージ、セキュリティグループ、Elastic Network Interface、専用ホスト、SSH キーペアなど、他の ECS リソースにも同じタグベースの権限付与を適用できます。