仅允许 ECR 请求的安全组出口规则
Posted
技术标签:
【中文标题】仅允许 ECR 请求的安全组出口规则【英文标题】:Security group egress rule to only permit ECR requests 【发布时间】:2019-04-10 23:09:18 【问题描述】:使用 ECR 存储容器映像以供 ECS 使用时,EC2 实例(或 Fargate 服务)必须具有允许(通过公共互联网)访问帐户特定存储库 URI 的安全组。
许多组织都有严格的 IP 白名单规则,通常不允许为所有 IP 启用出站端口 443。
没有可用于 ECR 的 VPC 端点接口/网关,并且可能与大多数 AWS 服务一样,它的 IP 地址是弹性的,并且可以随时更改。
那么,如何向安全组添加出口规则,允许通过端口 443 对 ECR URI 进行出站访问,而不向所有 IP 地址开放?
【问题讨论】:
【参考方案1】:虽然端点的 IP 地址可以更改,但它只会更改为相当大的 CIDR 块中的另一个 IP 地址。亚马逊将其所有 IP 地址范围发布在 .json 文件中,可在此处获取:
https://aws.amazon.com/blogs/aws/aws-ip-ranges-json/
您可以将其缩小到您部署到的区域中 EC2 和 AMAZON 服务的 IP 地址范围。虽然范围相当大。
【讨论】:
谢谢!我将编写一个 lambda,它会根据这些范围定期更新 SG。不完美,但总比完全开放端口好。【参考方案2】:打开
DNS (UDP) 53 for 0.0.0.0/0
和 HTTPS 443 for 0.0.0.0/0
【讨论】:
谢谢,但这会打开端口 53 和 443 上的所有流量,这违反了我们的安全策略。 我建议遵循“最小特权”原则,例如不要在全球范围内打开您的组件 - 仅对已知组件打开它。【参考方案3】:您可以使用 AWS PrivateLink 来实现这一点;见Amazon ECR interface VPC endpoints (AWS PrivateLink)。
【讨论】:
以上是关于仅允许 ECR 请求的安全组出口规则的主要内容,如果未能解决你的问题,请参考以下文章
openstack neutron-修改新创建安全组的默认规则