このトピックでは、タグを使用して、Resource Access Management (RAM) ユーザーにElastic Compute Service (ECS) インスタンスへのアクセスをグループごとに許可する方法について説明します。 承認後、RAMユーザーはタグ付きリソースのみを表示および管理できます。
シナリオ
この例では、Alibaba Cloudアカウント内に10個のECSインスタンスがあります。 開発者チームに5つのインスタンスを管理し、オペレーターチームに他の5つのインスタンスを管理する権限を付与する必要があります。 また、各チームが、各チームに管理を許可したインスタンスのみを表示できるようにします。
解決策
各チームのECSインスタンスにタグを追加します。
開発者チームのECSインスタンスにタグを追加し、オペレーターチームのECSインスタンスに別のタグを追加します。
RAMユーザーをグループ化します。
開発者チームとオペレーターチームのRAMユーザーグループを作成します。 次に、ビジネス要件に基づいてRAMユーザーをRAMユーザーグループに追加します。
タグを使用してRAMユーザーグループに権限を付与します。
2つのカスタムポリシーを作成し、カスタムポリシーのCondition要素でタグを指定します。 タグは、承認のために以下の条件キーをサポートします。 次に、ビジネス要件に基づいて、作成したカスタムポリシーをRAMユーザーグループにアタッチします。 これにより、RAMユーザーグループ内のRAMユーザーは、RAMユーザーグループの権限を継承します。
acs:RequestTag/<tag-key>
: リクエストで渡されるタグ。 この条件キーは、API操作を呼び出すときにリクエストにタグを指定する必要があることを示します。acs:ResourceTag/<tag-key>
: 要求されたリソースに追加されるタグ。 この条件キーは、操作を実行するリソースにタグを追加する必要があることを示します。
下表に詳細を示します。
チーム | RAMユーザーグループ | RAMポリシー | タグ |
開発者チーム | 開発者 | policyForDevTeam | タグキー: チーム。 タグ値: dev。 |
オペレータチーム | operator | policyForOpsTeam | タグキー: チーム。 タグ値: ops。 |
手順
Alibaba CloudアカウントまたはAliyunRAMFullAccessおよびAliyunECSFullAccess権限を持つRAMユーザーを使用して、次の操作を実行できます。
ECSコンソールで、タグを作成し、ECSインスタンスにタグを追加します。
team:dev
タグを5つのECSインスタンスに追加し、team:ops
タグを他の5つのECSインスタンスに追加します。 詳細については、「タグの作成または追加」をご参照ください。RAMコンソールで、RAMユーザーグループを作成します。
開発者チームとオペレーターチーム用に、developerとoperatorという名前の2つのRAMユーザーグループを作成します。 詳細については、「RAMユーザーグループの作成」をご参照ください。
RAMコンソールで、RAMユーザーを作成し、RAMユーザーを対応するRAMユーザーグループに追加します。
ビジネス要件に基づいて各チームに特定の数のRAMユーザーを作成し、RAMユーザーグループの開発者またはオペレーターにRAMユーザーを追加します。 詳細については、「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ユーザーがECSインスタンスのタグを変更した場合、RAMユーザーはECSインスタンスに対する関連する権限を持ちません。
RAMユーザーグループに権限を付与します。
カスタムポリシーpolicyForDevTeamをRAMユーザーグループ開発者に、カスタムポリシーpolicyForOpsTeamをRAMユーザーグループ演算子にアタッチします。 詳細については、「RAMユーザーグループへの権限付与」をご参照ください。
説明権限付与後、RAMユーザーグループのRAMユーザーはRAMユーザーグループの権限を継承します。
設定結果の確認
RAMユーザーとしてECSコンソールにログインします。
左側のナビゲーションウィンドウで、 を選択します。
上部のナビゲーションバーで、リージョンを選択します。
[インスタンス] ページで、検索ボックスの横にある [タグでフィルタリング] をクリックし、タグキーとタグ値を選択します。
たとえば、RAMユーザーグループ開発者のRAMユーザーは、
team:dev
タグを使用して、権限を持つECSインスタンスを検索できます。重要RAMユーザーは、タグが追加されたECSインスタンスを表示できます。 それ以外の場合、RAMユーザーはECSインスタンスを表示できません。
権限を持つECSインスタンスを表示および管理します。
関連ドキュメント
このトピックで説明されている手順を使用して、グループごとに他のECSインスタンスへのアクセスを許可できます。 ECSリソースには、ブロックストレージデバイス、スナップショット、イメージ、セキュリティグループ、elastic network Interface (ENI) 、専用ホスト、SSHキーペアが含まれます。