本文以將單個命名空間授權給某個RAM用戶為例,介紹如何使用ACM的訪問權限控制功能。
遷移到MSE Nacos
ACM進入下線狀態(tài),所有配置管理相關的需求由MSE中的Nacos承接(ACM獨享版,更好的安全和穩(wěn)定性)。您需要在ACM控制臺導出配置,然后在MSE控制臺導入之前導出的配置即可完成遷移。具體操作,請參見將應用配置從ACM遷移到MSE Nacos。
背景信息
以往,當一個RAM用戶(或角色)被授予AliyunACMFullAccess授權策略時,即擁有ACM的完全操作權限,包括對所有配置和所有命名空間的讀寫權限。由于RAM用戶之間的配置并未隔離,因誤操作或惡意操作造成的損失就可能會被放大,并造成嚴重后果。更重要的是,由于對所有授權用戶可見,數據庫賬號密碼等敏感配置面臨著泄露的安全風險。
現在,ACM提供了更細粒度的權限控制,您可以按需為用戶分配最小權限,達到為不同用戶(或角色)授予不同資源操作權限的目的。對應RAM的授權策略,可以分為操作(Action)維度和資源(Resource)維度。
操作(Action)
- 讀:可以讀取Resource所指定范圍的配置,以及讀取命名空間基本信息,對應的RAM授權策略Action為
acms:R
。 - 寫:可以增加、刪除和修改Resource所指定范圍的配置,但無法增加、刪除和修改命名空間,對應的RAM授權策略Action為
acms:W
。 - 完全權限:可以讀寫Resource所指定范圍的配置,并讀取命名空間基本信息。當Resource為
*
時,也可以增加、刪除和修改命名空間,對應的RAM授權策略Action為acms:*
。
資源(Resource)
授權資源的定義規(guī)則為acs:${service-name}:${region-id}:${resource-owner-id}:${resource-type}/${namespace_id}/${resource-name}
。
- 所有資源:對應的RAM授權策略Resource為
*
。 - 單個命名空間:例如命名空間為
1ca01ca0-11b0-1e01-0df1-d1010101bc10
,則對應的RAM授權策略Resource為*:*:*:*:cfg/1ca01ca0-11b0-1e01-0df1-d1010101bc10
。 - 單個命名空間下的某個Group:例如命名空間為
1ca01ca0-11b0-1e01-0df1-d1010101bc10
,Group為DEFAULT_GROUP
,則對應的RAM授權策略Resource為*:*:*:*:cfg/1ca01ca0-11b0-1e01-0df1-d1010101bc10/DEFAULT_GROUP
。 - 單個命名空間下的某個Group的特定配置項:例如命名空間為
1ca01ca0-11b0-1e01-0df1-d1010101bc10
,Group為DEFAULT_GROUP
,配置項的DataId為com.alibaba.acm.test
,則對應的RAM授權策略Resource為*:*:*:*:cfg/1ca01ca0-11b0-1e01-0df1-d1010101bc10/DEFAULT_GROUP/com.alibaba.acm.test
。
步驟一:創(chuàng)建RAM自定義授權策略
步驟二:創(chuàng)建RAM用戶并授權
步驟三:登錄RAM用戶并驗證權限
- 返回到RAM控制臺。
- 在概覽頁面上單擊賬號管理區(qū)域的登錄鏈接,并以您新建的用戶登錄。
- 訪問ACM控制臺,驗證當前可以操作的只有剛剛設置授權策略中的命名空間。
更多示例
- 授予單個命名空間(例如
1ca01ca0-11b0-1e01-0df1-d1010101bc10
)的只讀權限。{ "Version": "1", "Statement": [ { "Action": [ "acms:R" ], "Resource": "*:*:*:*:cfg/1ca01ca0-11b0-1e01-0df1-d1010101bc10", "Effect": "Allow" } ] }
- 授予單個命名空間(例如
1ca01ca0-11b0-1e01-0df1-d1010101bc10
)中單個Group(例如DEFAULT_GROUP
)的讀寫權限。{ "Version": "1", "Statement": [ { "Action": [ "acms:*" ], "Resource": "*:*:*:*:cfg/1ca01ca0-11b0-1e01-0df1-d1010101bc10/DEFAULT_GROUP", "Effect": "Allow" } ] }
- 授予單個命名空間(例如
1ca01ca0-11b0-1e01-0df1-d1010101bc10
)中多個Group(例如DEFAULT_GROUP
、DEFAULT_GROUP_1
)的只讀權限。{ "Version": "1", "Statement": [ { "Action": [ "acms:R" ], "Resource": [ "*:*:*:*:cfg/1ca01ca0-11b0-1e01-0df1-d1010101bc10/DEFAULT_GROUP", "*:*:*:*:cfg/1ca01ca0-11b0-1e01-0df1-d1010101bc10/DEFAULT_GROUP_1" ], "Effect": "Allow" } ] }
- 授予單個命名空間(例如1ca01ca0-11b0-1e01-0df1-d1010101bc10)中某個Group(例如DEFAULT_GROUP)下特定配置項(com.alibaba.acm.test)只讀權限。
{ "Version": "1", "Statement": [ { "Action": [ "acms:R" ], "Resource": "*:*:*:*:cfg/1ca01ca0-11b0-1e01-0df1-d1010101bc10/DEFAULT_GROUP/com.alibaba.acm.test", "Effect": "Allow" } ] }
- 授予所有命名空間中單個Group(例如DEFAULT_GROUP)的讀寫權限。
{ "Version": "1", "Statement": [ { "Action": [ "acms:*" ], "Resource": [ "*:*:*:*:cfg/*/DEFAULT_GROUP" ], "Effect": "Allow" } ] }
- 授予單個Region(例如杭州
cn-hangzhou
)單個命名空間(例如1ca01ca0-11b0-1e01-0df1-d1010101bc10
)的讀寫權限。{ "Version": "1", "Statement": [ { "Action": [ "acms:*" ], "Resource": [ "*:*:cn-hangzhou:*:cfg/1ca01ca0-11b0-1e01-0df1-d1010101bc10" ], "Effect": "Allow" } ] }
備注
- 只有當授權策略操作(Action)為
acms:*
并且資源(Resource)為*
時,被授予該授權策略的用戶(或角色)才能增加、刪除和修改命名空間。 - 由于存在緩存機制,授權策略的添加和修改會延遲生效,但通常都會在10秒內生效。
- 通過ECS實例RAM角色訪問ACM時,授予如上所述授權策略,同樣可以實現細粒度的權限控制。