如何限制出站 EC2 仅访问 S3?

如何限制出站 EC2 仅访问 S3?

我想限制 EC2 实例的出站安全组。该实例只需要访问 S3 存储桶。我刚刚了解到 S3 使用端口 HTTPS (443)。我可以制定该规则以允许任何连接到任何 IP(只要它是 HTTPS),但是否可以只允许 EC2 实例访问 S3?是否有任何 IP 连接到 S3 存储桶,或者我可以设置一个吗?

答案1

是否可以只允许 EC2 实例访问 S3?是否有任何 IP 连接到 S3 存储桶,或者我可以设置一个吗?

S3 使用许多 IP。我怀疑很难确定所有 IP 的列表。此外,没有 IP 到存储桶的映射,您无法为存储桶指定 IP。S3 是一个托管服务AWS 运行的,并且他们对该服务的 IP 地址使用拥有完全的控制权。

如果您需要在此级别进行过滤,最简单的方法是使用具有默认拒绝 ACL 的正向代理(如 squid),然后仅允许访问 S3 域。

答案2

您可能想在此处使用 VPC 端点。

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

“VPC 终端节点可让您在 VPC 与其他 AWS 服务之间创建私有连接,而无需通过 Internet、NAT 实例、VPN 连接或 AWS Direct Connect 进行访问。终端节点是虚拟设备。它们是水平扩展、冗余且高度可用的 VPC 组件,可让您在 VPC 中的实例与 AWS 服务之间进行通信,而不会对网络流量造成可用性风险或带宽限制。”

答案3

AWS 通过 JSON 提供其公共 IP 范围列表。(也许还有其他格式,但我不确定。)构建一个工具来确保 JSON 被解析并且应用正确的防火墙规则应该相对简单。请参阅以下博客文章了解更多信息。:)

https://aws.amazon.com/blogs/aws/aws-ip-ranges-json/

答案4

使用下面的 CURL 调用并替换区域 curlhttps://ip-ranges.amazonaws.com/ip-ranges.json| jq -r'.prefixes[] | 选择(.region=="us-east-1")| 选择(.service=="S3")| .ip_prefix'

相关内容