使用標簽對ECS實例進行分組授權
本文介紹了如何使用標簽對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實例。
更多信息
使用標簽對塊存儲、快照、鏡像、安全組、彈性網卡、專有宿主機、SSH密鑰對等ECS資源進行分組授權的方法與上述對實例分組授權的方法相同。