我想限制EC2实例的出站流量,只允许到AWS服务(如ECR、EFS)的出站连接。然而,这些服务没有静态ip地址,所以我不能将其添加到安全组中。有没有我错过的常用方法?
实现这一点的标准方法是在私有子网中运行实例,并使用VPC端点提供对AWS服务的访问。
但在迈出这一步之前,你试图克服的威胁是什么?
使用Security Groups
无法做到这一点。使用IAM role
可以做到这一点。
我知道这是一个非常古老的问题,在自己试图弄清楚的时候偶然发现了这个问题。默认情况下,AWS安全组允许所有出站流量。可以阻止出站流量
- 删除默认允许所有出站流量为0.0.0.0/0规则
- 将规则添加到特定的IP地址和端口
有一些服务暴露了它们的IP,如EFS、FSx、RDS等,在这种情况下,IP至少会出现在您的";"网络接口";以便您可以应用您的安全组规则。
在某些情况下,例如EFS,它甚至要求您在创建过程中应用SG。ECS在不使用Fargate的情况下部署了EC2实例。ECR在应用层受到限制,但您可以通过策略进一步限制/允许IP。
因此,总是有办法知道允许/限制的IP,或者有办法做到这一点,如果服务没有IP,那么是的,你将无法将其添加到安全组,但攻击者也无法将其作为目标。
对于您的实例必须联系才能工作的AWS服务,默认情况下允许这些服务,请参阅AWS文档:
亚马逊安全组和网络ACL不会过滤来往于以下亚马逊服务的流量:
- 亚马逊域名服务(DNS)
- Amazon动态主机配置协议(DHCP)
- Amazon EC2实例元数据
- Amazon Windows许可证激活
- 亚马逊时间同步服务
- 保留默认VPC路由器的IP地址
因此,您不可能(意外)限制对AWS内部服务(如IAM)的访问。