若您期望使不同的RAM使用者擁有訪問鏡像資源的不同許可權,並且同時也支援提供臨時的訪問授權,您可以藉助阿里雲許可權管理機制存取控制(簡稱RAM)和安全憑證管理(簡稱STS)為帳號進行鑒權。
前提條件
已使用阿里雲帳號建立RAM使用者。具體操作,請參見建立RAM使用者。
背景資訊
阿里雲許可權管理機制包括存取控制(簡稱RAM)和安全憑證管理(簡稱STS),靈活使用RAM和STS,可以極大地提高管理的靈活性和安全性。預設情況下,阿里雲帳號對自己的資源擁有完整的操作許可權。藉助RAM和STS,可以使不同的RAM使用者擁有訪問鏡像資源的不同許可權,同時也支援提供臨時的訪問授權。在瞭解如何配置授權策略前,請先詳細閱讀RAM產品文檔。
授予RAM使用者權限策略後,使用RAM使用者登入容器鏡像控制台,需要建立個人版執行個體和設定Registry密碼,然後才能查看擁有許可權的鏡像資源。
RAM說明
在使用RAM對RAM使用者授權時,請特別關注下面的說明,以免您為RAM使用者授予過大的許可權。
如果您通過RAM為某一個RAM使用者授予阿里雲所有資源的系統管理權限(即AdministratorAccess),無論您之前是否為該RAM使用者授予過鏡像服務的許可權,該RAM使用者都將擁有對鏡像服務的全部許可權。
授予RAM使用者系統策略
ACR預設已建立AliyunContainerRegistryFullAccess和AliyunContainerRegistryReadOnlyAccess策略,您直接授權使用即可。以下為系統策略的詳細介紹:
AliyunContainerRegistryFullAccess
RAM使用者擁有該授權後,對於鏡像資源的許可權等同於阿里雲帳號,可以做任意操作。
{ "Statement": [ { "Action": "cr:*", "Effect": "Allow", "Resource": "*" } ], "Version": "1" }
AliyunContainerRegistryReadOnlyAccess
RAM使用者擁有該授權後,對於所有鏡像資源有隻讀許可權,例如:可以查看倉庫列表,Pull鏡像等。
{ "Statement": [ { "Action": [ "cr:Get*", "cr:List*", "cr:PullRepository" ], "Effect": "Allow", "Resource": "*" } ], "Version": "1" }
本文以授予RAM使用者AliyunContainerRegistryReadOnlyAccess許可權為例:
使用Resource Access Management員登入RAM控制台。
在左側導覽列,選擇 。
在使用者頁面,單擊目標RAM使用者操作列的添加許可權。
您也可以選中多個RAM使用者,單擊使用者列表下方的添加許可權,為RAM使用者大量授權。
在新增授權面板,為RAM使用者添加許可權。
選擇授權應用範圍。
帳號層級:許可權在當前阿里雲帳號內生效。
資源群組層級:許可權在指定的資源群組內生效。
說明指定資源群組授權生效的前提是該雲端服務已支援資源群組。更多資訊,請參見支援資源群組的雲端服務。
輸入被授權主體。
被授權主體即需要授權的RAM使用者,系統會自動填入當前的RAM使用者,您也可以添加其他RAM使用者。
在所有策略類型下單擊自訂策略,在文字框中輸入AliyunContainerRegistryReadOnlyAccess,然後單擊AliyunContainerRegistryReadOnlyAccess。
單擊確認新增授權。
單擊關閉。
授予RAM使用者自訂策略
如果您想對許可權進行細粒度控制,您可以自訂策略,然後授予RAM使用者自訂策略許可權。
典型情境策略配置
以下列舉了典型情境的自訂策略:
情境一: 授予RAM使用者某個命名空間(例如:juzhong)的讀許可權。
RAM使用者登入執行個體後,可以拉取所有該命名空間下的鏡像,可以通過OpenAPI查看到該命名空間的資訊及該命名空間下所有鏡像倉庫的相關資訊。
{ "Statement": [ { "Action": [ "cr:Get*", "cr:List*", "cr:PullRepository" ], "Effect": "Allow", "Resource": [ "acs:cr:*:*:repository/juzhong/*" ] } ], "Version": "1" }
重要如果同時需要RAM使用者在控制台查看命名空間,需要進行如下授權。RAM使用者可以看到全量的命名空間及倉庫列表,但僅能Pull其中juzhong這個命名空間下的倉庫。
{ "Statement": [ { "Action": [ "cr:Get*", "cr:List*", "cr:PullRepository" ], "Effect": "Allow", "Resource": [ "acs:cr:*:*:repository/juzhong/*" ] }, { "Action": [ "cr:ListNamespace", "cr:ListRepository" ], "Effect": "Allow", "Resource": [ "*" ] } ], "Version": "1" }
情境二:授權RAM使用者某個鏡像倉庫(例如:鏡像倉庫名為nginx,所屬命名空間名為juzhong,所屬地區為華東1)的所有許可權。
重要如需通過RAM使用者在控制台上管理鏡像倉庫,依然需要參考情境1配置。
{ "Statement": [ { "Action": [ "cr:*" ], "Effect": "Allow", "Resource": [ "acs:cr:cn-hangzhou:*:repository/juzhong/nginx" ] }, { "Action": [ "cr:Get*", "cr:List*" ], "Effect": "Allow", "Resource": [ "acs:cr:*:*:repository/juzhong" ] } ], "Version": "1" }
情境三:授予RAM使用者某命名空間的所有操作許可權。
重要此情境僅可以通過OpenAPI調用。如果需要同時在控制台看到所有倉庫,請參照情境1。
{ "Statement": [ { "Action": [ "cr:*" ], "Effect": "Allow", "Resource": [ "acs:cr:cn-hangzhou:*:repository/juzhong", "acs:cr:cn-hangzhou:*:repository/juzhong/*" ] } ], "Version": "1" }
您可以使用以上典型情境的指令碼配置建立自訂策略,然後授予RAM使用者自訂策略。操作如下:
建立自訂策略。
授予RAM使用者自訂策略。
使用阿里雲帳號登入RAM控制台。
在左側導覽列,選擇 。
在使用者頁面,單擊目標RAM使用者操作列的添加許可權。
在新增授權面板,為RAM使用者添加許可權。
選擇授權應用範圍。
帳號層級:許可權在當前阿里雲帳號內生效。
資源群組層級:許可權在指定的資源群組內生效。
說明指定資源群組授權生效的前提是該雲端服務已支援資源群組。更多資訊,請參見支援資源群組的雲端服務。
輸入被授權主體。
被授權主體即需要授權的RAM使用者,系統會自動填入當前的RAM使用者,您也可以添加其他RAM使用者。
在所有策略類型下單擊自訂策略,在文字框中輸入自訂策略名稱稱,然後單擊自訂策略名稱稱。
單擊確認新增授權。
單擊關閉。
鏡像服務鑒權規則
資源描述
在通過RAM進行授權時,資源的描述方式如下表所示:
資源類型 | 授權策略中的資源描述 |
repository | acs:cr:$regionid:$accountid:repository/$namespacename/$repositoryname |
參數說明如下表所示:
參數名稱 | 說明 |
regionid | 地區ID,可用*代替。 |
accountid | 雲帳號數字ID,可用*代替。 |
namespacename | 命名空間名稱。 |
repositoryname | 鏡像倉庫名稱。 |