全部產品
Search
文件中心

Container Registry:倉庫存取控制

更新時間:Sep 12, 2024

若您期望使不同的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許可權為例:

  1. 使用Resource Access Management員登入RAM控制台

  2. 在左側導覽列,選擇身份管理 > 使用者

  3. 使用者頁面,單擊目標RAM使用者操作列的添加許可權

    image

    您也可以選中多個RAM使用者,單擊使用者列表下方的添加許可權,為RAM使用者大量授權。

  4. 新增授權面板,為RAM使用者添加許可權。

    1. 選擇授權應用範圍。

      • 帳號層級:許可權在當前阿里雲帳號內生效。

      • 資源群組層級:許可權在指定的資源群組內生效。

        說明

        指定資源群組授權生效的前提是該雲端服務已支援資源群組。更多資訊,請參見支援資源群組的雲端服務

    2. 輸入被授權主體。

      被授權主體即需要授權的RAM使用者,系統會自動填入當前的RAM使用者,您也可以添加其他RAM使用者。

    3. 所有策略類型下單擊自訂策略在文字框中輸入AliyunContainerRegistryReadOnlyAccess,然後單擊AliyunContainerRegistryReadOnlyAccess

    4. 單擊確認新增授權

  5. 單擊關閉

授予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使用者自訂策略。操作如下:

  1. 建立自訂策略。

    1. 使用阿里雲帳號登入RAM控制台

    2. 在左側導覽列,選擇許可權管理 > 權限原則

    3. 權限原則頁面,單擊建立權限原則

    4. 建立權限原則頁面,單擊指令碼編輯頁簽,在文字框中編輯策略內容。關於策略文法的詳細介紹,請參見權限原則文法和結構

      說明

      編輯策略內容時,ActionResource的配置,請參見鏡像服務鑒權規則

    5. 單擊繼續編輯基本資料,輸入名稱備忘

    6. 單擊確定

  2. 授予RAM使用者自訂策略。

    1. 使用阿里雲帳號登入RAM控制台

    2. 在左側導覽列,選擇身份管理 > 使用者

    3. 使用者頁面,單擊目標RAM使用者操作列的添加許可權

    4. 新增授權面板,為RAM使用者添加許可權。

      1. 選擇授權應用範圍。

        • 帳號層級:許可權在當前阿里雲帳號內生效。

        • 資源群組層級:許可權在指定的資源群組內生效。

          說明

          指定資源群組授權生效的前提是該雲端服務已支援資源群組。更多資訊,請參見支援資源群組的雲端服務

      2. 輸入被授權主體。

        被授權主體即需要授權的RAM使用者,系統會自動填入當前的RAM使用者,您也可以添加其他RAM使用者。

      3. 所有策略類型下單擊自訂策略,在文字框中輸入自訂策略名稱稱,然後單擊自訂策略名稱稱。

      4. 單擊確認新增授權

    5. 單擊關閉

鏡像服務鑒權規則

資源描述

在通過RAM進行授權時,資源的描述方式如下表所示:

資源類型

授權策略中的資源描述

repository

acs:cr:$regionid:$accountid:repository/$namespacename/$repositoryname

參數說明如下表所示:

參數名稱

說明

regionid

地區ID,可用*代替。

accountid

雲帳號數字ID,可用*代替。

namespacename

命名空間名稱。

repositoryname

鏡像倉庫名稱。