全部產品
Search
文件中心

Container Registry:配置使用自訂OSS Bucket時的RAM存取控制

更新時間:Oct 24, 2024

本文將為您介紹在Container Registry使用自訂OSS Bucket時的RAM存取控制配置。

背景說明

  • 預設OSS Bucket

    當使用Container Registry的預設OSS Bucket時,您需為帳號授權Container Registry訪問雲端服務資源,這樣Container Registry才能建立OSS Bucket並初始化ACR執行個體。

  • 自訂OSS Bucket

    當您需要使用自訂OSS Bucket,則需要為帳號添加RAM角色,並授予該角色對OSS Bucket操作許可權,以確保Container Registry能夠正常訪問該Bucket。

步驟一:建立RAM角色

Container Registry訪問自訂OSS Bucket時,需要為阿里雲帳號建立的角色名稱為AliyunContainerRegistryCustomizedOSSBucketRole。

操作步驟

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

  2. 在左側導覽列,選擇身份管理 > 角色

  3. 角色頁面,單擊建立角色

  4. 建立角色頁面,選擇可信實體類型為阿里雲帳號,然後單擊下一步

  5. 設定角色資訊。

    1. 輸入角色名稱

    2. 輸入備忘

    3. 選擇信任的雲帳號。

      • 當前雲帳號:當您允許當前阿里雲帳號下的所有RAM使用者扮演該RAM角色時,您可以選擇當前雲帳號

      • 其他雲帳號:當您允許其他阿里雲帳號下的所有RAM使用者扮演該RAM角色時,您可以選擇其他雲帳號,然後輸入其他阿里雲帳號(主帳號)ID。該項主要針對跨阿里雲帳號的資源授權訪問情境,相關教程,請參見跨阿里雲帳號的資源授權

        您可以在安全設定頁面查看阿里雲帳號(主帳號)ID。

      重要

      如果您僅允許指定的RAM使用者扮演該RAM角色,而不是阿里雲帳號(主帳號)下的所有RAM使用者,您可以採取以下兩種方式:

  6. 單擊完成

  7. 單擊關閉

步驟二:配置RAM角色的權限原則

配置該RAM角色的策略,使其擁有對指定的OSS Bucket資源讀取容器鏡像倉庫資訊的許可權,RAM角色的權限原則名為AliyunContainerRegistryCustomizedOSSBucketRolePolicy。當需要擷取多個自訂OSS Bucket資訊時,可向Resource中添加多個OSS Bucket值。


{
    "Version": "1",
    "Statement": [
        {
            "Action": [
                "oss:GetObject",
                "oss:PutObject",
                "oss:DeleteObject",
                "oss:ListParts",
                "oss:AbortMultipartUpload",
                "oss:InitiateMultipartUpload",
                "oss:CompleteMultipartUpload",
                "oss:DeleteMultipleObjects",
                "oss:ListMultipartUploads",
                "oss:ListObjects",
                "oss:DeleteObjectVersion",
                "oss:GetObjectVersion",
                "oss:ListObjectVersions",
                "oss:PutObjectTagging",
                "oss:GetObjectTagging",
                "oss:DeleteObjectTagging"
            ],
            "Resource": [
                "acs:oss:*:*:cri-*",
                "acs:oss:*:*:cri-*/*",
                "acs:oss:*:*:<YOUR_BUCKET_NAME>",  # 請將<YOUR_BUCKET_NAME>替換為您實際需要授權的Bucket名稱。
                "acs:oss:*:*:<YOUR_BUCKET_NAME>/*" # 請將<YOUR_BUCKET_NAME>替換為您實際需要授權的Bucket名稱。
            ],
            "Effect": "Allow",
            "Condition": {

            }
        },
        {
            "Action": [
                "oss:PutBucket",
                "oss:GetBucket",
                "oss:GetBucketLocation",
                "oss:PutBucketEncryption",
                "oss:GetBucketEncryption",
                "oss:PutBucketAcl",
                "oss:GetBucketAcl",
                "oss:PutBucketLogging",
                "oss:GetBucketReferer",
                "oss:PutBucketReferer",
                "oss:GetBucketLogging",
                "oss:PutBucketVersioning",
                "oss:GetBucketVersioning",
                "oss:GetBucketLifecycle",
                "oss:PutBucketLifecycle",
                "oss:DeleteBucketLifecycle",
                "oss:GetBucketTransferAcceleration"
            ],
            "Resource": [
                "acs:oss:*:*:cri-*",
                "acs:oss:*:*:cri-*/*",
                "acs:oss:*:*:<YOUR_BUCKET_NAME>",  # 請將<YOUR_BUCKET_NAME>替換為您實際需要授權的Bucket名稱。
                "acs:oss:*:*:<YOUR_BUCKET_NAME>/*" # 請將<YOUR_BUCKET_NAME>替換為您實際需要授權的Bucket名稱。
            ],
            "Effect": "Allow",
            "Condition": {

            }
        },
        {
            "Effect": "Allow",
            "Action": "oss:ListBuckets",
            "Resource": [
                "acs:oss:*:*:*",
                "acs:oss:*:*:*/*"
            ],
            "Condition": {

            }
        },
        {
            "Action": [
                "vpc:DescribeVpcs"
            ],
            "Resource": "acs:vpc:*:*:vpc/*",
            "Effect": "Allow",
            "Condition": {

            }
        },
        {
            "Action": [
                "cms:QueryMetricLast",
                "cms:QueryMetricList"
            ],
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}

步驟三:配置RAM角色的信任策略

為該RAM角色的信任策略中添加Container Registry,使Container Registry可以訪問使用者自訂的OSS Bucket。

{
    "Statement": [
        {
            "Action": "sts:AssumeRole",
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "cr.aliyuncs.com"
                ]
            }
        }
    ],
    "Version": "1"
}