倉庫訪問控制
若您期望使不同的RAM用戶擁有訪問鏡像資源的不同權限,并且同時也支持提供臨時的訪問授權,您可以借助阿里云權限管理機制訪問控制(簡稱RAM)和安全憑證管理(簡稱STS)為賬號進行鑒權。
前提條件
已使用阿里云賬號創(chuàng)建RAM用戶。具體操作,請參見創(chuàng)建RAM用戶。
背景信息
阿里云權限管理機制包括訪問控制(簡稱RAM)和安全憑證管理(簡稱STS),靈活使用RAM和STS,可以極大地提高管理的靈活性和安全性。默認情況下,阿里云賬號對自己的資源擁有完整的操作權限。借助RAM和STS,可以使不同的RAM用戶擁有訪問鏡像資源的不同權限,同時也支持提供臨時的訪問授權。在了解如何配置授權策略前,請先詳細閱讀RAM產(chǎn)品文檔。
授予RAM用戶權限策略后,使用RAM用戶登錄容器鏡像控制臺,需要創(chuàng)建個人版實例和設置Registry密碼,然后才能查看擁有權限的鏡像資源。
RAM說明
在使用RAM對RAM用戶授權時,請?zhí)貏e關注下面的說明,以免您為RAM用戶授予過大的權限。
如果您通過RAM為某一個RAM用戶授予阿里云所有資源的管理權限(即AdministratorAccess),無論您之前是否為該RAM用戶授予過鏡像服務的權限,該RAM用戶都將擁有對鏡像服務的全部權限。
授予RAM用戶系統(tǒng)策略
ACR默認已創(chuàng)建AliyunContainerRegistryFullAccess和AliyunContainerRegistryReadOnlyAccess策略,您直接授權使用即可。以下為系統(tǒng)策略的詳細介紹:
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權限為例:
使用RAM管理員登錄RAM控制臺。
在左側(cè)導航欄,選擇 。
在用戶頁面,單擊目標RAM用戶操作列的添加權限。
您也可以選中多個RAM用戶,單擊用戶列表下方的添加權限,為RAM用戶批量授權。
在新增授權面板,為RAM用戶添加權限。
選擇授權應用范圍。
賬號級別:權限在當前阿里云賬號內(nèi)生效。
資源組級別:權限在指定的資源組內(nèi)生效。
說明指定資源組授權生效的前提是該云服務已支持資源組。更多信息,請參見支持資源組的云服務。
輸入被授權主體。
被授權主體即需要授權的RAM用戶,系統(tǒng)會自動填入當前的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調(diào)用。如果需要同時在控制臺看到所有倉庫,請參照場景1。
{ "Statement": [ { "Action": [ "cr:*" ], "Effect": "Allow", "Resource": [ "acs:cr:cn-hangzhou:*:repository/juzhong", "acs:cr:cn-hangzhou:*:repository/juzhong/*" ] } ], "Version": "1" }
您可以使用以上典型場景的腳本配置創(chuàng)建自定義策略,然后授予RAM用戶自定義策略。操作如下:
創(chuàng)建自定義策略。
使用阿里云賬號登錄RAM控制臺。
在左側(cè)導航欄,選擇 。
在權限策略頁面,單擊創(chuàng)建權限策略。
在創(chuàng)建權限策略頁面,單擊腳本編輯頁簽,在文本框中編輯策略內(nèi)容。關于策略語法的詳細介紹,請參見權限策略語法和結構。
說明編輯策略內(nèi)容時,
Action
和Resource
的配置,請參見鏡像服務鑒權規(guī)則。單擊確定。然后在創(chuàng)建權限策略對話框中輸入名稱和備注。
授予RAM用戶自定義策略。
鏡像服務鑒權規(guī)則
資源描述
在通過RAM進行授權時,資源的描述方式如下表所示:
資源類型 | 授權策略中的資源描述 |
repository | acs:cr:$regionid:$accountid:repository/$namespacename/$repositoryname |
參數(shù)說明如下表所示:
參數(shù)名稱 | 說明 |
regionid | 地域ID,可用*代替。 |
accountid | 云賬號數(shù)字ID,可用*代替。 |
namespacename | 命名空間名稱。 |
repositoryname | 鏡像倉庫名稱。 |