ECR へのアクセスを VPC エンドポイント経由のみに制限する方法を教えてください
困っていた内容
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月のアップデートにより、リソースベースポリシーはレジストリ全体(レジストリポリシー)と、レジストリ個別(リポジトリポリシー)の両方で設定可能です。制限対象範囲に応じて選択してください。
- Amazon ECR expands registry policy to all ECR actions - AWS
- [アップデート] ECR プライベートレジストリのポリシースコープが更新され、複数のリポジトリポリシーを管理しなくてもよくなりました | DevelopersIO
参考資料
aws:SourceVpce
このキーを使用して、リクエストの VPC エンドポイント識別子をポリシーで指定したエンドポイント ID と比較します。
aws:PrincipalArn
このキーを使用して、リクエストを行ったプリンシパルの Amazon リソースネーム (ARN) をポリシーで指定した ARN と比較します。