彈性伸縮對伸縮組進行分類管理并控制其訪問權限,既可以精細地授權某個伸縮組權限,也可以對帶有某個標簽的伸縮組進行分組授權。本文為您介紹如何通過標簽鑒權控制RAM用戶的權限,實現不同用戶能夠擁有不同的訪問和控制權限,提高管理效率,同時降低信息泄露風險。
背景信息
標簽是云資源的標識,可以幫助您從不同維度對具有相同特征的云資源進行分類、搜索和聚合。更多信息,請參見標簽概述。
訪問控制RAM可基于權限策略,管理用戶身份,控制云資源的訪問和操作。更多信息,請參見什么是訪問控制。
通過標簽和訪問控制RAM結合,并將標簽作為權限策略的匹配條件,您可以實現對彈性伸縮的精細化管理。
基于標簽控制RAM用戶權限(即標簽鑒權)的邏輯如下:
不支持標簽鑒權的API接口說明
為某RAM用戶授予標簽鑒權的權限策略后,該RAM用戶調用下列API接口時不支持使用標簽鑒權管理彈性伸縮。
接口 | 不支持標簽鑒權 |
DescribeRegions | 是 |
定時任務未綁定伸縮組時:
| 是 |
報警任務未綁定伸縮組時:
| 是 |
示例場景說明
本文以下列場景作為示例,說明如何實現標簽鑒權。
假如已創建2個伸縮組用于游戲開發時使用,且各伸縮組標簽(Tag)包含環境和項目兩個維度,即environment和team。您需要控制某RAM用戶對下列伸縮組擁有不同的特定權限,伸縮組詳情如下所示:
伸縮組 | 伸縮組名稱 | 伸縮組的標簽 |
伸縮組1 | asg-001 |
|
伸縮組2 | asg-002 |
|
具體場景如下所示:
場景1:不允許創建不帶標簽的伸縮組,僅當創建時為伸縮組1綁定
environment:test
和team:game1
標簽后,伸縮組1才可以創建成功。場景2:查詢伸縮組時,只允許查看伸縮組1(即綁定
environment:test
和team:game1
標簽)資源。場景3:只允許操作伸縮組1(即綁定
environment:test
和team:game1
標簽)的資源功能,不允許操作伸縮組2(即綁定environment:dev
和team:game2
標簽)資源。
操作步驟
操作前,請您確保已創建RAM用戶。若未創建請您先創建RAM用戶,具體操作,請參見創建RAM用戶。
創建2個伸縮組。
登錄RAM控制臺。
創建自定義策略。
具體操作,請參見創建自定義權限策略。
您可以在策略(
Condition
)中為云資源設置多個標簽條件來限制對彈性伸縮資源的操作權限。支持的標簽鑒權條件如下所示:標簽鑒權條件
說明
acs:RequestTag
限制在請求中必須傳入特定的標簽。
如果API請求中沒有標簽參數,則不能使用
acs:RequestTag
,否則會導致鑒權失敗。acs:ResourceTag
限制指定的資源必須包含特定的標簽。
如果API請求中沒有資源ID參數,則不能使用
acs:ResourceTag
,否則會導致鑒權失敗。{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "ess:Create*", "Resource": "*", "Condition": { "StringEquals": { "acs:RequestTag/environment": "test", "acs:RequestTag/team": "game1" } } }, { "Effect": "Allow", "Action": "ess:Describle*", "Resource": "*", "Condition": { "StringEquals": { "acs:RequestTag/environment": "test", "acs:RequestTag/team": "game1" } } }, { "Action": "ess:*", "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "acs:ResourceTag/environment": "test", "acs:ResourceTag/Team": "game1" } } }, { "Effect": "Allow", "Action": [ "ess:Describe*", "ess:List*", "ess:DescribeRegions", "ess:CreateScheduledTask", "ess:ModifyScheduledTask", "ess:DescribeScheduledTasks", "ess:DeleteScheduledTask", "ess:CreateAlarm", "ess:DescribeAlarms", "ess:ModifyAlarm", "ess:EnableAlarm", "ess:DeleteAlarm" ], "Resource": "*" } ] }
場景1:不允許創建不帶標簽的伸縮組1
即僅當創建時為伸縮組1綁定
environment:test
和team:game1
標簽后,伸縮組1才可以創建成功。對應的自定權限策略如下所示:
{ "Effect": "Allow", "Action": "ess:Create*", "Resource": "*", "Condition": { "StringEquals": { "acs:RequestTag/environment": "test", "acs:RequestTag/team": "game1" } } }
場景2:只允許查詢綁定標簽的伸縮組1
即伸縮組1綁定
environment:test
和team:game1
標簽后,查詢伸縮組時只能查詢到伸縮組1的資源。對應的自定權限策略如下所示:
{ "Effect": "Allow", "Action": "ess:Describle*", "Resource": "*", "Condition": { "StringEquals": { "acs:RequestTag/environment": "test", "acs:RequestTag/team": "game1" } } }
場景3:只允許操作伸縮組1,不允許操作伸縮組2
即伸縮組1綁定了
environment:test
和team:game1
標簽,而伸縮組2綁定environment:dev
和team:game2
標簽。對應的自定權限策略如下所示:
{ "Version": "1", "Statement": [ { "Action": "ess:*", "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "acs:ResourceTag/environment": "test", "acs:ResourceTag/Team": "game1" } } }, { "Action": "ess:*", "Effect": "Deny", "Resource": "*", "Condition": { "StringEquals": { "acs:ResourceTag/environment": "dev", "acs:ResourceTag/team": "game2" } } }, { "Effect": "Allow", "Action": [ "ess:DescribeRegions", "ess:CreateScheduledTask", "ess:ModifyScheduledTask", "ess:DescribeScheduledTasks", "ess:DeleteScheduledTask", "ess:CreateAlarm", "ess:DescribeAlarms", "ess:ModifyAlarm", "ess:EnableAlarm", "ess:DeleteAlarm" ], "Resource": "*" } ] }
將自定義策略授權給您希望控制訪問的RAM用戶。
具體操作,請參見為RAM用戶授權。
驗證權限策略是否生效。
創建伸縮組1驗證場景1
伸縮組1已綁定標簽
environment:test
和team:game1
),伸縮組1可成功創建。沒有設置標簽或者設置了其他標簽,則提示無權限創建。
查詢伸縮組驗證場景2
指定查詢伸縮組1(已綁定標簽
environment:test
和team:game1
),但查詢時未篩選標簽選項,則可以查詢到該伸縮組信息。指定查詢除伸縮組1外的某個未綁定標簽
environment:test
和team:game1
的伸縮組,則查詢結果為空。沒有指定具體某伸縮組,僅搜索
environment:test
和team:game1
標簽,則查詢出來所有帶該標簽的伸縮組。
刪除伸縮組來驗證場景3
刪除的伸縮組1已綁定標簽
environment:test
和team:game1
,則可以刪除該伸縮組。刪除的伸縮組2未綁定標簽
environment:test
和team:game1
或設置了其他標簽,則提示無權限刪除該伸縮組。
相關文檔
通過API方式創建、查看或刪除伸縮組,更多信息,請參見CreateScalingGroup、DescribeScalingGroups或DeleteScalingGroup。
通過API方式創建一個自定義權限策略,更多信息,請參見CreatePolicy - 創建一個權限策略。
通過API方式為RAM用戶授權,更多信息,請參見AttachPolicyToUser - 為指定用戶添加權限。
如果創建了多個伸縮組,您可以創建資源組對伸縮組進行分組管理,具體操作,請參見通過資源組精細化管理伸縮組。
如果您需要通過資源鑒權的方式分權管理彈性伸縮,具體操作,請參見通過資源鑒權管理彈性伸縮。