本文介紹了如何使用標籤對ECS執行個體進行分組並授權,以限制RAM使用者只能查看和管理被授權的ECS執行個體。
應用情境
假設您的阿里雲帳號(主帳號)購買了10個ECS執行個體,其中5個想要授權給developer團隊,另外5個授權給operator團隊。企業希望每個團隊只能查看和管理被授權的ECS執行個體,未被授權的ECS執行個體不允許查看。
解決方案
按標籤標識不同團隊的ECS執行個體。
規劃兩個標籤,分別用來標識developer團隊和operator團隊的ECS執行個體。
將RAM使用者分組。
規劃兩個RAM使用者組,分別對應developer團隊和operator團隊,然後將對應團隊的RAM使用者加入到對應的RAM使用者組。
基於標籤鑒權對RAM使用者組進行授權。
規劃兩個自訂權限原則,使用如下標籤鑒權Condition確定資源範圍。然後,將不同的權限原則授權給不同的RAM使用者組,RAM使用者組中的RAM使用者將繼承RAM使用者組的許可權。
acs:RequestTag/<tag-key>
:請求中傳遞的標籤資訊。即使用者在調用API的時候,請求參數裡面必須攜帶的標籤。acs:ResourceTag/<tag-key>
:請求訪問的資源上綁定的標籤資訊。即使用者在操作某個資源的時候,資源上必須具備的標籤。
具體規劃資訊如下:
團隊 | RAM使用者組 | RAM權限原則 | 標籤 |
developer團隊 | developer | policyForDevTeam | 標籤鍵:team;標籤值:dev。 |
operator團隊 | operator | policyForOpsTeam | 標籤鍵:team;標籤值:ops。 |
操作步驟
您可以使用阿里雲帳號(主帳號)或具有許可權(AliyunRAMFullAccess和AliyunECSFullAccess)的RAM使用者完成下述操作。
在ECS控制台,為ECS執行個體建立並綁定標籤。
為5個ECS執行個體綁定標籤
team:dev
,另外5個ECS執行個體綁定標籤team:ops
。具體操作,請參見建立或綁定標籤。在RAM控制台,建立RAM使用者組。
建立2個RAM使用者組:developer、operator,分別對應developer和operator團隊。具體操作,請參見建立RAM使用者組。
在RAM控制台,建立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使用者組授權。
為RAM使用者組developer授予自訂權限原則policyForDevTeam;為RAM使用者組operator授予自訂權限原則policyForOpsTeam。具體操作,請參見為RAM使用者組授權。
說明授權後RAM使用者將繼承對應RAM使用者組的許可權。
驗證結果
使用RAM使用者登入ECS控制台。
在左側導覽列,選擇 。
在頂部功能表列左上方處,選擇地區。
在執行個體頁面,單擊搜尋欄旁邊的標籤篩選,選擇對應的標籤鍵和標籤值。
例如:在RAM使用者組developer中的RAM使用者,可以通過標籤
team:dev
篩選有許可權的ECS執行個體。重要只有當RAM使用者選擇了對應標籤後,RAM使用者才能查看到綁定了該標籤的ECS執行個體。否則,RAM使用者無法查看到任何ECS執行個體。
查看和管理有許可權的ECS執行個體。
更多資訊
使用標籤對Block Storage、快照、鏡像、安全性群組、彈性網卡、Dedicated Host、SSH金鑰組等ECS資源進行分組授權的方法與上述對執行個體分組授權的方法相同。