Auto Scaling對伸縮組進行分類管理並控制其存取權限,既可以精細地授權某個伸縮組許可權,也可以對帶有某個標籤的伸縮組進行分組授權。本文為您介紹如何通過標籤鑒權控制RAM使用者的許可權,實現不同使用者能夠擁有不同的訪問和控制許可權,提高管理效率,同時降低資訊泄露風險。
背景資訊
標籤是雲資源的標識,可以協助您從不同維度對具有相同特徵的雲資源進行分類、搜尋和彙總。更多資訊,請參見標籤。
存取控制RAM可基於權限原則,系統管理使用者身份,控制雲資源的訪問和操作。更多資訊,請參見什麼是存取控制。
通過標籤和存取控制RAM結合,並將標籤作為權限原則的匹配條件,您可以實現對Auto Scaling的精細化管理。
基於標籤控制RAM使用者權限(即標籤鑒權)的邏輯如下:
不支援標籤鑒權的API介面說明
為某RAM使用者授予標籤鑒權的權限原則後,該RAM使用者調用下列API介面時不支援使用標籤鑒權管理Auto Scaling。
介面 | 不支援標籤鑒權 |
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
)中為雲資源設定多個標籤條件來限制對Auto Scaling資源的操作許可權。支援的標籤鑒權條件如下所示:標籤鑒權條件
說明
acs:RequestTag
限制在請求中必須傳入特定的標籤。
如果API請求中沒有標籤參數,則不能使用
acs:RequestTag
,否則會導致鑒權失敗。acs:ResourceTag
限制指定的資源必須包含特定的標籤。
如果API請求中沒有資源ID參數,則不能使用
acs:ResourceTag
,否則會導致鑒權失敗。情境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 - 為指定使用者添加許可權。
如果建立了多個伸縮組,您可以建立資源群組對伸縮組進行分組管理,具體操作,請參見通過資源群組精細化管理伸縮組。
如果您需要通過資源鑒權的方式分權管理Auto Scaling,具體操作,請參見通過資源鑒權管理Auto Scaling。