S3 存储桶访问仅限于 VPN

S3 bucket access restricted to VPN

我已经为我的基础设施团队创建了某种私有文档,上传到 S3 Bucket 并希望将其设为私有,只能在我们的 VPN 上访问。

我试图允许这些 vpn ip 范围:173.12.0.0/16 和 173.11.0.0/16 但我一直收到 403 - 禁止(在 vpn 内)。

谁能帮我调试或找出我哪里出错了?

我的存储桶策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "vpnOnly",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::calian.io/*",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": [
                        "173.12.0.0/16",
                        "173.11.0.0/16"
                    ]
                }
            }
        }
    ]
}

默认情况下,S3 请求通过 Internet,因此请求 'appear' 来自 public IP 地址。

或者,您可以为 S3 添加一个 VPC 端点,这将使请求来自'from' 私有 IP 地址.

您也可以考虑使用 Amazon S3 Access Points 来控制对存储桶的访问。

从您尝试从中访问 S3 存储桶的其中一台机器转到位于 https://checkip.amazonaws.com/

的“AWS Check My IP”端点

从那里确认您看到的 IP 地址在您在策略中定义的范围内。我的猜测是它会有所不同 - 相反,您会看到您的 VPN 或 NAT Gateway/Instance 的 public IP 地址,因为您的流量可能会通过互联网到达 S3。

确定您正在使用的 IP 地址后,您可以更新安全组以包含它,或者研究 VPC 端点等解决方案以保持您的专用网络上的流量。

由于 VPC 端点只能从 VPC 内的 Amazon EC2 实例访问,本地实例必须代理所有远程请求才能 利用 VPC 端点连接。以下部分概述了一种基于 DNS 的代理解决方案,该解决方案将适当的流量从公司网络定向到 Amazon S3 的 VPC 端点,如下图所示。