You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ECR访问控制政策问题:需限制仅特定VPC终端节点可访问

ECR访问控制政策问题:拒绝非指定VPC终端节点的访问

需求

需要编写ECR访问控制政策,拒绝所有非特定VPC终端节点发起的ECR访问请求。

现有ECR政策(用户编写)

{
  "Version": "2008-10-17",
  "Statement": [
    {
      "Sid": "Statement1",
      "Effect": "Deny",
      "Principal": "*",
      "Action": [
        "ecr:BatchCheckLayerAvailability",
        "ecr:BatchGetImage",
        "ecr:CompleteLayerUpload",
        "ecr:GetDownloadUrlForLayer",
        "ecr:InitiateLayerUpload",
        "ecr:ListImage",
        "ecr:PutImage",
        "ecr:UploadLayerPart"
      ],
      "Condition": {
        "StringNotEquals": {
          "aws:SourceVpce": "vpce-XXXXXXX"
        }
      }
    }
  ]
}

问题现象

本地电脑和连接指定VPC终端节点的EC2实例都能列出ECR镜像,政策未达到预期效果。

对比:正常生效的S3存储桶政策

{
    "Version": "2012-10-17",
    "Id": "VPCe",
    "Statement": [
        {
            "Sid": "VPCe",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:ListBucket",
            "Resource": [
                "arn:aws:s3:::XXXXXX",
                "arn:aws:s3:::XXXXXXX/*"
            ],
            "Condition": {
                "StringNotEquals": {
                    "aws:SourceVpce": "vpce-XXXXXXXXXXX"
                }
            }
        }
    ]
}

问题分析与修正方案

现有ECR政策的问题点

  1. 缺少Resource字段:ECR仓库政策必须明确指定目标仓库的ARN,否则政策无法绑定到具体仓库,不会生效。
  2. Action名称错误:ecr:ListImage是无效操作,正确的镜像列表操作是ecr:ListImages。
  3. 使用旧版本政策语法:2008-10-17版本的政策语法功能有限,建议使用2012-10-17版本。
  4. 缺失关键列表操作:仅限制ecr:ListImages不足以完全阻止镜像列表访问,还需包含ecr:DescribeImages、ecr:DescribeRepositories等操作。

修正后的ECR政策

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DenyAccessExceptFromSpecificVPCE",
      "Effect": "Deny",
      "Principal": "*",
      "Action": [
        "ecr:BatchCheckLayerAvailability",
        "ecr:BatchGetImage",
        "ecr:CompleteLayerUpload",
        "ecr:GetDownloadUrlForLayer",
        "ecr:InitiateLayerUpload",
        "ecr:ListImages",
        "ecr:PutImage",
        "ecr:UploadLayerPart",
        "ecr:DescribeImages",
        "ecr:DescribeRepositories"
      ],
      "Resource": "arn:aws:ecr:你的区域:你的账号ID:repository/你的仓库名",
      "Condition": {
        "StringNotEquals": {
          "aws:SourceVpce": "vpce-XXXXXXX"
        }
      }
    }
  ]
}

额外说明

  • 若要限制账号下所有ECR仓库,可将Resource设为arn:aws:ecr:你的区域:你的账号ID:repository/*。
  • 确保已创建ECR类型的VPC终端节点(包含com.amazonaws.<区域>.ecr.api和com.amazonaws.<区域>.ecr.dkr),且终端节点的路由表、安全组配置正确。
  • 政策中的Deny规则会覆盖所有Allow权限,需确认合法访问路径(如指定VPC终端节点内的实例)不受影响。

内容的提问来源于stack exchange,提问作者bone2

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 06:40:19