仅允许 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/0HTTPS 443 for 0.0.0.0/0

【讨论】:

谢谢,但这会打开端口 53 和 443 上的所有流量,这违反了我们的安全策略。 我建议遵循“最小特权”原则,例如不要在全球范围内打开您的组件 - 仅对已知组件打开它。【参考方案3】:

您可以使用 AWS PrivateLink 来实现这一点;见Amazon ECR interface VPC endpoints (AWS PrivateLink)。

【讨论】:

以上是关于仅允许 ECR 请求的安全组出口规则的主要内容,如果未能解决你的问题,请参考以下文章

自引用 aws 安全组

openstack neutron-修改新创建安全组的默认规则

如何允许某些端口仅对 Cloud Custodian 中的某些安全组开放?

阿里云(Aliyun)安全组 允许443端口访问

通过 Terraform 添加 AWS 安全组时出现问题

AWS考证方向:AWS实例安全组设置