ECR跨帳戶拉取權限

ECR跨帳戶拉取權限

我們有兩個 AWS 帳戶。帳戶 A 擁有 ECR 儲存庫,帳戶 B 能夠從中提取資料。

我嘗試在帳戶 A 中設定儲存庫權限語句以允許從帳戶 B 提取數據,但 AWS 聲稱我的策略無效。

我努力了:

  • 將主體設定為帳戶 B 的帳號。Your permission statements have one or more invalid parameters. Invalid parameter at 'PolicyText' failed to satisfy constraint: 'Invalid repository policy provided'
  • 將主體設定為帳戶 B ( arn:aws:iam::1234567891011:root) 中根使用者的 ARN。這會導致錯誤The service name arn:aws:iam::1234567891011:root is invalid. A valid service name format is [service].amazonaws.com.
  • 將委託人設定為帳戶 B 中 IAM 使用者的 ARN。

上述操作是透過 AWS 控制台完成的,該控制台不允許直接編輯 ECR 權限的 JSON。我已嘗試使用 CLI 命令aws ecr set-repository-policy進行上述更改,但終端機中傳回了相同的錯誤。

為 IAM 使用者新增權限相同帳戶運作良好。

我嘗試在該策略下新增的操作是:

        "Action": [
            "ecr:BatchGetImage",
            "ecr:GetDownloadUrlForLayer",
            "ecr:GetRepositoryPolicy",
            "ecr:ListImages",
            "ecr:DescribeRepositories"
        ]

有什麼想法我可能做錯了什麼嗎?

答案1

您還需要在 ECR 中配置跨帳戶存取的權限。若要向帳戶 B 授予對帳戶 A 的 ECR 的拉取存取權限,請將下列 JSON 政策放入「ECR 權限」標籤中。

{
    "Version": "2008-10-17",
    "Statement": [
      {
        "Sid": "AllowCrossAccountPull",
        "Effect": "Allow",
        "Principal": {
          "AWS": "arn:aws:iam::aws_account_b_number:root"
        },
        "Action": [
          "ecr:GetDownloadUrlForLayer",
          "ecr:BatchCheckLayerAvailability",
          "ecr:BatchGetImage"
        ]
      }
    ]
  }

在此輸入影像描述

答案2

您需要為帳戶 b 設定跨帳戶角色來承擔。

在具有註冊表 A 的帳戶中建立跨帳戶角色,授予對角色中註冊表的存取權。並授予帳戶 B 擔任該角色的權限。

http://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html

http://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html

相關內容