LoginSignup
0
0

クロスアカウントでのECR参照

Posted at

ECSやLambdaで自作のImageを参照する際、クロスアカウントでECRリポジトリを参照したい場合のメモ。
結局、どちらもECR側にPermissionを設定するだけで可能。
重要な注意点は、リージョンを跨いでクロスアカウント参照することは不可能という点です。

Lambda

公式手順: https://aws.amazon.com/jp/blogs/compute/introducing-cross-account-amazon-ecr-access-for-aws-lambda/

ECRのPermission

今回のLambdaが置いてあるアカウントのIDを222222222222とした際の例。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "CrossAccountPermission",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::222222222222:root"
      },
      "Action": [
        "ecr:BatchGetImage",
        "ecr:GetDownloadUrlForLayer"
      ]
    },
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "lambda.amazonaws.com"
      },
      "Action": [
        "ecr:BatchGetImage",
        "ecr:GetDownloadUrlForLayer"
      ],
      "Condition": {
        "StringLike": {
          "aws:sourceArn": "arn:aws:lambda:eu-west-1:222222222222:function:*"
        }
      }
    }
  ]
}

特にLambda側に何か権限などの設定は必要ありません。
これだけで、クロスアカウントでECRリポジトリの参照が可能なはずです。

ECS

公式手順: https://docs.aws.amazon.com/AmazonECR/latest/userguide/ECR_on_ECS.html

ECRのPermission

同様にアカウントのIDは222222222222とした際の例。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "CrossAccountPermission",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::222222222222:root"
      },
      "Action": [
        "ecr:BatchGetImage",
        "ecr:GetDownloadUrlForLayer"
      ]
    }
  ]
}

こちらも同様にこれだけで動くはず。
よく見ていただけるとわかる通り、Lambdaの項で記載したPermissionの1個目と同じなので、Lambda用Permissionを記載するだけでECSからもPullが可能になります。

あとは案件や会社のセキュリティポリシー的にStatement[].Pricipal.AWSをより絞り込むかどうか、というぐらい。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0