AWS VPC Endpoint SecurityGroupEgress规则

我正尝试使用AWS VPC端点来访问S3资源,但没有运气。 你能帮忙吗?

细节:

我有一个安全组内的EC2实例。 这是在一个VPC和一个networking端点和一个路由表项的0.0.0.0/0的子网内。 但是,我不希望这个特定的EC2实例能够与互联网交谈,但是我希望它能够与位于https://s3-eu-west-1.amazonaws.com的S3存储桶交谈/XXXXX/YYYYYY.sh 。

作为响应,我重载了securityGroup上的默认允许出口规则,因此通过向端口22添加出口规则来拒绝出站连接。亚马逊文档告诉我,本地(私有)AWS地址仍将被允许。 考虑到这一点,我添加了一个VPC端点到我的VPC中,并用pl-6da54004(com.amazonaws.eu-west-1.s3):: vpce-9f47a1f6更新了我的路由表。

这样做,我无法访问我的EC2实例内的我的S3资源。 我尝试和wget https://s3-eu-west-1.amazonaws.com/XXXXX/YYYYYY.sh没有运气。

你有什么想法是错的? 我的想法是:

  • 我的ec2实例似乎将S3域parsing为54.231.130.244,但是这对每个实例都是不一样的。 我是否需要为S3 IP范围添加securityGroupEgress规则或路由? 如果是的话,范围是多less?
  • 也许我应该通过不同的域名访问我的S3资源,而不是parsing为内部IP地址?

谢谢你,托比

首先,有一点背景。 VPC实例的DNSparsing程序是内置到基础结构中的虚拟组件。 这对出站安全组规则是免疫的,但是当为您的VPCconfigurationS3端点时,S3端点的主机名parsing不会改变。

S3的VPC端点是几个不同的东西。 了解这些东西是理解它是否会做你需要的东西的关键。 tl; dr:在这种情况下,

首先,您注意到它们在路由表中被configuration为“前缀列表”。 VPC端点采用一组预定义的IPv4networking前缀,并为每个包含相应前缀列表的路由表劫持这些前缀的路由,以便您的stream量到达任何这些networking将遍历VPC端点而不是Internet网关中间的NAT实例。

从本质上讲,这将为您的VPC打开一条从AWS服务的IP地址范围开始的新path……但是这些IP地址所带来的不是初始阶段,而是他们在不使用VPC端点的情况下所处的位置。

你打的第一个地方就像S3一样,但是它和面向Internet的S3不一样,因为它知道你的VPCterminal的策略,所以你可以控制哪些桶和动作是可以访问的。 这些不会凌驾于其他政策,它们会增加它们。

端点策略不会覆盖或replaceIAM用户策略或S3存储桶策略。 这是控制从端点到指定服务的访问的单独策略。 但是,所有types的策略(IAM用户策略,端点策略,S3策略和Amazon S3 ACL策略(如果有))必须授予访问Amazon S3所需的权限才能成功。

http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-endpoints.html#vpc-endpoints-access

请注意,如果您没有使用适当的策略限制存储段访问,而是启用完全访问权限,则实例将能够访问S3区域中的任何存储段(如果存储段的策略允许),包括公共存储段。

现在,棘手的部分。 如果您的实例的安全组不允许访问S3,因为默认的“允许”规则已被删除,您可以允许实例通过VPCterminal使用特制的安全组规则访问S3:

将新的出站规则添加到安全组。 对于“types”,selectHTTPS。 对于目的地,请select“自定义IP”。

该文档与我在控制台中看到的不一致:

目的地列表显示可用AWS服务的前缀列表ID和名称。

http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-endpoints.html#vpc-endpoints-security

呃…不,不。 不是对我来说,至less不是这样写的。

解决scheme是select“自定义IP”,然后在IP地址框中以pl-xxxxxxxx的forms键入VPC端点的前缀列表ID,而不是IP地址块或安全组ID。 您可以通过查看与VPCterminal关联的其中一个子网中的目的地,在VPC控制台中find此信息。