ECR へのアクセスを VPC エンドポイント経由のみに制限する方法を教えてください

ECR へのアクセスを VPC エンドポイント経由のみに制限する方法を教えてください

Clock Icon2025.01.28

困っていた内容

VPC 内でコンテナアプリケーションを実行しています。
コンテナイメージは ECR から VPC エンドポイントを経由して取得していますが、インターネット経由の取得は禁止したいです。
アクセスを VPC エンドポイント経由のみに制限する方法を教えてください。

どう対応すればいいの?

ECR にリソースベースポリシーを設定してください。

次のようなaws:SourceVpce条件キーを含むリソースベースポリシーを設定すると、指定した VPC エンドポイントを経由しないアクセスは拒否されます。

ポリシー例
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AccessViaVPCEndpointOnly",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "ecr:*",
      "Condition": {
        "StringNotEquals": {
          "aws:SourceVpce": [
            "vpce-1a2b3c4d"
          ]
        }
      }
    }
  ]
}

そのため、上記のようなポリシーを設定すると、ECR へのアクセスを VPC エンドポイント経由のみに制限できます。

なお、AWS マネジメントコンソールからのアクセスにも影響するため、必要に応じてaws:PrincipalArnを追加して、特定の IAM ロールを拒否対象から除外してください。

ポリシー例
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AccessViaVPCEndpointOnly",
      "Action": "ecr:*",
      "Effect": "Deny",
      "Principal": "*",
      "Condition": {
        "StringNotEquals": {
          "aws:SourceVpce": [
            "vpce-1a2b3c4d"
          ],
          "aws:PrincipalArn": "arn:aws:iam::123456789012:role/call-allow-role"
        }
      }
    }
  ]
}

また、2024年12月のアップデートにより、リソースベースポリシーはレジストリ全体(レジストリポリシー)と、レジストリ個別(リポジトリポリシー)の両方で設定可能です。制限対象範囲に応じて選択してください。

参考資料

aws:SourceVpce
このキーを使用して、リクエストの VPC エンドポイント識別子をポリシーで指定したエンドポイント ID と比較します。

aws:PrincipalArn
このキーを使用して、リクエストを行ったプリンシパルの Amazon リソースネーム (ARN) をポリシーで指定した ARN と比較します。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.