通過標(biāo)簽實(shí)現(xiàn)精細(xì)化權(quán)限管理
SMC資源綁定標(biāo)簽后,您可以使用標(biāo)簽為資源做分類并控制訪問。本文介紹如何基于標(biāo)簽控制RAM用戶以及STS(Security Token Service)角色的權(quán)限,實(shí)現(xiàn)不同的用戶可以擁有不同云資源的訪問和操作權(quán)限。
前提條件
使用阿里云賬號(hào)已創(chuàng)建RAM用戶。具體操作,請(qǐng)參見創(chuàng)建RAM用戶。
背景信息
標(biāo)簽可用于標(biāo)識(shí)云資源,實(shí)現(xiàn)分類管理資源;訪問控制RAM可基于權(quán)限策略,控制云資源的訪問和操作權(quán)限。結(jié)合標(biāo)簽和RAM,將標(biāo)簽作為權(quán)限策略的匹配條件,可以實(shí)現(xiàn)云資源精細(xì)化權(quán)限管理。
基于標(biāo)簽控制RAM用戶權(quán)限(即標(biāo)簽鑒權(quán))的邏輯如下:
支持綁定標(biāo)簽的SMC資源包括遷移源和遷移任務(wù),遷移源僅支持創(chuàng)建后為其綁定標(biāo)簽。更多信息,請(qǐng)參見使用標(biāo)簽管理遷移源和遷移任務(wù)。
應(yīng)用場景示例
本文以下述場景作為示例,說明如何實(shí)現(xiàn)標(biāo)簽鑒權(quán)。
假設(shè)您需要控制某一RAM用戶只能操作特定(假設(shè)綁定了smc:test標(biāo)簽)的SMC資源,如下圖所示:
場景示例如下:
場景1:不允許創(chuàng)建不帶標(biāo)簽的遷移任務(wù),僅當(dāng)創(chuàng)建時(shí)為SMC遷移任務(wù)綁定
smc:test
標(biāo)簽才可以創(chuàng)建成功。場景2:只能操作帶有特定標(biāo)簽
smc:test
的SMC資源,包括修改資源屬性,刪除資源,給資源打標(biāo)簽等操作,不允許操作其它SMC資源。
步驟一:配置自定義權(quán)限策略并授權(quán)
本步驟以在RAM控制臺(tái)配置自定義為例,您也可以通過RAM API CreatePolicy創(chuàng)建一個(gè)自定義策略,權(quán)限策略配置請(qǐng)參見權(quán)限策略配置說明。
使用阿里云賬號(hào)登錄RAM控制臺(tái)。
在左側(cè)導(dǎo)航欄選擇 。
在權(quán)限策略頁面,單擊創(chuàng)建權(quán)限策略。
在創(chuàng)建權(quán)限策略頁面,單擊腳本編輯頁簽。
完成權(quán)限策略的配置。
權(quán)限策略是一組訪問權(quán)限的集合。權(quán)限策略的結(jié)構(gòu)包括版本號(hào)和授權(quán)語句列表,每條授權(quán)語句包括授權(quán)效果(Effect)、操作(Action)、資源(Resource)以及條件(Condition,可選項(xiàng))。更多信息,請(qǐng)參見權(quán)限策略基本元素和權(quán)限策略語法和結(jié)構(gòu)。
根據(jù)需要修改權(quán)限策略后,單擊確定。
在權(quán)限策略的
Condition
中,您可以增加需要匹配標(biāo)簽的條件來限制操作權(quán)限,支持的標(biāo)簽條件的關(guān)鍵字如下表所示:標(biāo)簽條件關(guān)鍵字
說明
acs:RequestTag
限制在請(qǐng)求中必須傳入特定的標(biāo)簽。
如果API請(qǐng)求中沒有標(biāo)簽參數(shù),則不能使用acs:RequestTag,否則會(huì)導(dǎo)致鑒權(quán)失敗。
acs:ResourceTag
限制指定的資源必須包含特定的標(biāo)簽。
如果API請(qǐng)求中沒有資源ID參數(shù),則不能使用acs:ResourceTag,否則會(huì)導(dǎo)致鑒權(quán)失敗。
說明設(shè)計(jì)權(quán)限策略時(shí),您可以根據(jù)各操作接口特性(API請(qǐng)求是否需要指定資源ID、是否支持傳入標(biāo)簽),結(jié)合實(shí)際業(yè)務(wù)需求,來設(shè)置
acs:RequestTag
或acs:ResourceTag
。更多信息,請(qǐng)參見API接口標(biāo)簽鑒權(quán)說明。{ "Statement": [ { "Action": "smc:CreateReplicationJob", "Condition": { "StringEquals": { "acs:RequestTag/smc": "test" } }, "Effect": "Allow", "Resource": "*" }, { "Action": "smc:*", "Condition": { "StringEquals": { "acs:ResourceTag/smc": "test" } }, "Effect": "Allow", "Resource": "*" }, { "Action": [ "*:TagResources", "*:UntagResources" ], "Effect": "Deny", "Resource": "*" }, { "Action": [ "*:List*", "*:Describe*" ], "Effect": "Allow", "Resource": "*" } ], "Version": "1" }
以上策略內(nèi)容可以實(shí)現(xiàn)如下權(quán)限控制:
場景
權(quán)限策略
場景1:不允許創(chuàng)建不帶標(biāo)簽的遷移任務(wù),僅當(dāng)創(chuàng)建時(shí)為SMC遷移任務(wù)綁定
smc:test
標(biāo)簽才可以創(chuàng)建成功。{ "Statement": [ { "Action": "smc:CreateReplicationJob", "Condition": { "StringEquals": { "acs:RequestTag/smc": "test" } }, "Effect": "Allow", "Resource": "*" }, { "Action": [ "*:List*", "*:Describe*" ], "Effect": "Allow", "Resource": "*" } ], "Version": "1" }
場景2:只能操作帶有特定標(biāo)簽(即綁定
smc:test
標(biāo)簽)的SMC資源,包括修改資源屬性,刪除資源等操作,不允許操作其它SMC資源。{ "Statement": [ { "Action": "smc:*", "Condition": { "StringEquals": { "acs:ResourceTag/smc": "test" } }, "Effect": "Allow", "Resource": "*" }, { "Action": [ "*:TagResources", "*:UntagResources" ], "Effect": "Deny", "Resource": "*" }, { "Action": [ "*:List*", "*:Describe*" ], "Effect": "Allow", "Resource": "*" } ], "Version": "1" }
在彈出的創(chuàng)建權(quán)限策略對(duì)話框中,輸入權(quán)限策略名稱和備注后,單擊確定。
將自定義策略授權(quán)給RAM用戶。
在左側(cè)導(dǎo)航欄選擇 。
為RAM用戶授予新創(chuàng)建的自定義權(quán)限策略。
具體操作,請(qǐng)參見為RAM用戶授權(quán)。
步驟二:驗(yàn)證權(quán)限策略是否生效
使用RAM用戶登錄SMC控制臺(tái)或OpenAPI平臺(tái)。
本步驟以SMC控制臺(tái)操作驗(yàn)證為例。
測試權(quán)限策略是否生效。
測試權(quán)限如下:
創(chuàng)建遷移任務(wù):
已綁定
smc:test
標(biāo)簽的遷移源,則可以創(chuàng)建遷移任務(wù)。沒有綁定標(biāo)簽或者綁定了其它標(biāo)簽的遷移源,則無法創(chuàng)建遷移任務(wù),提示沒有權(quán)限。
刪除遷移源:
刪除綁定
smc:test
標(biāo)簽的遷移源,則可以刪除。刪除沒有綁定
smc:test
標(biāo)簽的遷移源,則無法刪除,提示沒有權(quán)限。
API接口標(biāo)簽鑒權(quán)說明
為某一RAM用戶授予含有標(biāo)簽鑒權(quán)的權(quán)限策略后,該RAM用戶調(diào)用各API接口時(shí)的鑒權(quán)情況如下表所示:
接口 | 鑒權(quán)說明 |
CreateReplicationJob接口 | 該接口無需指定資源ID,匹配
|
ModifyReplicationJobAttribute接口 | 該接口必須指定資源ID,匹配
|
StartReplicationJob、StopReplicationJob、DeleteSourceServer等其他操作接口 | 該類接口必須指定資源ID,匹配
|