本文介紹如何在容器計算服務 ACS(Container Compute Service)中授權RAM用戶容器鏡像服務 ACR(Container Registry)指定命名空間的權限。
步驟一:修改服務角色授權策略
用戶首次訪問ACS控制臺將授權創建服務角色AliyunCCManagedAcrRole,授權ACS通過該服務角色訪問ACR容器鏡像服務獲取臨時賬號密碼,用于啟動ACS Pod實例。該服務角色默認授權策略如下:
{
"Version": "1",
"Statement": [
{
"Action": [
"cr:GetAuthorizationToken",
"cr:ListInstanceEndpoint",
"cr:PullRepository"
],
"Resource": [
"*"
],
"Effect": "Allow"
}
]
}
默認授權策略中的*
,表示完全匹配,例如"Resource"為"*",表示授予所有地域、命名空間下的所有ACR資源實例cr:GetAuthorizationToken
,cr:ListInstanceEndpoint
,cr:PullRepository
的操作權限。該默認授權策略授權范圍較大,請您盡快自定義修改授權策略,將"Resource"限制在指定范圍,樣例如下:
acs:cr:::repository/$instanceid/$namespace/
表示指定鏡像倉庫實例ID和命名空間授權。acs:cr:*::repository/$instanceid/
表示指定鏡像倉庫實例ID授權。
步驟二:創建自定義策略
使用阿里云賬號登錄RAM控制臺。
在左側導航欄,選擇權限管理 > 權限策略。
在權限策略頁面,單擊創建權限策略。
在創建權限策略頁面,單擊腳本編輯頁簽。
將以下策略內容復制到文本框中,然后根據實際情況替換策略內容中的
$instanceid
和$namespace
,單擊下一步。{ "Statement": [ { "Effect": "Allow", "Action": [ "cr:ListInstance*", "cr:GetInstance*", "cr:ListSignature*" ], "Resource": "*" }, { "Action": [ "cr:*" ], "Effect": "Allow", "Resource": [ "acs:cr:*:*:repository/$instanceid/$namespace/*", "acs:cr:*:*:repository/$instanceid/$namespace" ] }, { "Action": [ "cr:List*" ], "Effect": "Allow", "Resource": [ "acs:cr:*:*:repository/$instanceid/*", "acs:cr:*:*:repository/$instanceid/*/*" ] } ], "Version": "1" }
說明策略內容中的
*
,表示完全匹配,例如:cr:ListInstance*
表示授予cr:ListInstance開頭的所有action。設置
acs:cr:*:*:repository/$instanceid/$namespace/*
為acs:cr:*:*:repository/cri-123456/ns/*
,表示將參數$instanceid
與$namespace
替換為需授權的容器鏡像服務實例ID和Namespace名稱,授予所有地域下ID為cri-123456的實例的ns命名空間下的所有權限。
輸入權限策略名稱和備注。
單擊確定。
步驟三:授予RAM用戶自定義策略
使用阿里云賬號登錄RAM控制臺。
在左側導航欄,選擇身份管理 > 用戶。
在用戶頁面,單擊目標RAM用戶操作列的添加權限。
在添加權限面板,為RAM用戶添加權限。
選擇授權應用范圍。
說明整個云賬號:權限在當前阿里云賬號內生效。
指定資源組:權限在指定的資源組內生效。指定資源組授權生效的前提是該云服務已支持資源組。更多信息,請參見支持資源組的云服務。
輸入授權主體。授權主體即需要授權的RAM用戶,系統會自動填入當前的RAM用戶,您也可以添加其他RAM用戶。
選擇權限策略。
說明每次最多綁定5條策略,如需綁定更多策略,請分次操作。
單擊確認新增授權。
說明使用RAM用戶登錄容器鏡像控制臺。您可以在容器鏡像控制臺授予的命名空間下進行構建、推送、拉取鏡像等操作。