すべてのプロダクト
Search
ドキュメントセンター

Container Registry:カスタムOSSバケットにアクセスするポリシーをRAMロールにアタッチする

最終更新日:Nov 14, 2024

このトピックでは、カスタムオブジェクトストレージサービス (OSS) バケットにアクセスするために、Container Registryが引き受けるResource Access Management (RAM) ロールにポリシーをアタッチする方法について説明します。

背景情報

  • デフォルトのOSSバケット

    Container RegistryのデフォルトのOSSバケットを使用する前に、Container Registryにクラウドリソースへのアクセス権限を付与する必要があります。 これにより、Container RegistryはデフォルトのOSSバケットを作成し、Container Registryインスタンスを初期化できます。

  • カスタムOSSバケット

    カスタムOSSバケットを使用する場合は、RAMロールを作成し、そのロールにOSSバケットの権限を付与する必要があります。 コンテナレジストリは、RAMロールを引き受けた後、カスタムOSSバケットにアクセスできます。

ステップ1: RAMロールの作成

Container RegistryがカスタムOSSバケットにアクセスする場合は、Container Registryインスタンスが属するAlibaba CloudアカウントにAliyunContainerRegistryCustomizedOSSBucketRoleという名前のロールを作成する必要があります。

手順

  1. 管理者権限を持つRAMユーザーとしてRAMコンソールにログインします。

  2. 左側のナビゲーションウィンドウで、アイデンティティ > ロール.

  3. ロールページをクリックします。ロールの作成.

  4. ロールの作成ページを選択します。Alibaba Cloudアカウント[ロールタイプの選択] セクションで、次へ.

  5. RAMロールのパラメーターを設定します。

    1. RAMロール名.

    2. .

    3. [信頼できるAlibaba Cloudアカウントの選択] セクションで、現在のAlibaba Cloudアカウントまたはその他のAlibaba Cloudアカウントを選択します。

      • 現在のAlibaba Cloudアカウント: Alibaba Cloudアカウントに属するRAMユーザーにRAMロールを引き受けたい場合は、[現在のAlibaba Cloudアカウント] を選択します。

      • その他のAlibaba Cloudアカウント: 別のAlibaba Cloudアカウントに属するRAMユーザーにRAMロールを引き受けたい場合は、その他のAlibaba Cloudアカウントを選択し、Alibaba CloudアカウントのIDを入力します。 このオプションは、異なるAlibaba Cloudアカウントに属するリソースに対する権限を付与するために提供されます。 詳細については、「RAMロールを使用してAlibaba Cloudアカウント全体に権限を付与する」をご参照ください。

        Alibaba CloudアカウントのIDを

        [セキュリティ設定] ページ

      重要

      Alibaba Cloudアカウントに属するすべてのRAMユーザーではなく、特定のRAMユーザーにRAMロールを引き受けたい場合は、次のいずれかの方法を使用できます。

  6. [OK] をクリックします。

  7. 閉じる.

ステップ2: RAMロールにポリシーをアタッチする

RAMロールにAliyunContainerRegistryCustomizedOSSBucketRolePolicyポリシーをアタッチします。 このポリシーには、OSSバケットからContainer Registryリポジトリに関する情報を読み取る権限が含まれています。 複数のカスタムOSSバケットからリポジトリ情報を読み取るには、Resourceパラメーターに複数のOSSバケットを指定します。


{
    "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>",  # Replace <YOUR_BUCKET_NAME> with the name of the bucket that you want to access. 
                "acs:oss:*:*:<YOUR_BUCKET_NAME>/*" # Replace <YOUR_BUCKET_NAME> with the name of the bucket that you want to access. 
            ],
            "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>",  # Replace <YOUR_BUCKET_NAME> with the name of the bucket that you want to access. 
                "acs:oss:*:*:<YOUR_BUCKET_NAME>/*" # Replace <YOUR_BUCKET_NAME> with the name of the bucket that you want to access. 
            ],
            "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"
        }
    ]
}

ステップ3: RAMロールに信頼ポリシーをアタッチする

RAMロールの信頼ポリシーにContainer Registryを追加します。 これにより、Container RegistryはカスタムOSSバケットにアクセスできます。

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