【发布时间】:2015-09-20 18:45:38
【问题描述】:
我正在尝试保护对内部静态网站的访问。
公司中的每个人都在使用 VPN 访问我们的 Amazon VPC,所以如果您使用 VPN,我想限制对该站点的访问。
所以我在 AWS 上发现了这个 documentation 来使用 VPC 端点,这似乎是我正在寻找的。p>
所以我使用以下策略创建了一个 VPC endoint。
{
"Statement": [
{
"Action": "*",
"Effect": "Allow",
"Resource": "*",
"Principal": "*"
}
]
}
在我的 S3 存储桶上,我确认我可以从常规 Web 和 VPN 访问 index.html。
然后我添加了以下存储桶策略以限制仅 VPC 端点。
{
"Id": "Policy1435893687892",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1435893641285",
"Action": "s3:*",
"Effect": "Allow",
"Resource": "arn:aws:s3:::mybucket/*",
"Principal": {
"AWS": [
"arn:aws:iam::123456789:user/op"
]
}
},
{
"Sid": "Access-to-specific-VPCE-only",
"Action": "s3:*",
"Effect": "Deny",
"Resource": ["arn:aws:s3:::mybucket/*"],
"Condition": {
"StringNotEquals": {
"aws:sourceVpce": "vpce-1234567"
}
},
"Principal": "*"
}
]
}
现在普通 Web 得到 403,但当我在公司 VPN 后面时,我也会得到 403。
我错过了什么吗?
【问题讨论】:
-
仅仅因为您使用 VPN 来访问您的 VPC...与 VPN 用户如何访问 S3 并没有真正的关系。几乎可以肯定,无论您身在何处,您仍然可以通过 Internet 访问 S3。
-
好吧,一旦在 VPN 上我使用 VPC dns 解析为内部主机名,我的理解是 VPC 终端节点为 s3 存储桶创建了一个 dns 路由规则,然后在您到达终端节点时检测到该规则,并且让你通过。
-
这不是正确的理解。为 S3 声明 VPC 终端节点不会改变 DNS 的工作方式。它改变的是 VPC 路由表——将流量直接从所选子网路由到 S3,从 VPC 内部,但服务的目标 IP 地址没有被修改。它们仍然是服务 (S3) 的 public 地址。 “前缀列表 ID 逻辑上表示服务使用的公共 IP 地址范围” -- docs.aws.amazon.com/AmazonVPC/latest/UserGuide/… 您选择的 DNS 解析器不是一个因素。
-
Michael - 你的理解不正确...流量不去互联网:“你的实例不需要公共IP地址,你不需要互联网网关,NAT实例,或您的 VPC 中的虚拟私有网关。您的 VPC 和 AWS 服务之间的流量不会离开 Amazon 网络。”我需要查看存储桶的 IP 是什么(我现在不在 VPN 上);但在直接安装后肯定无法从 Internet 访问 - 单存储桶,单 VPC。
-
如果可以为 S3 存储桶分配一个私有/VPC IP 地址,我认为你很好——如果 VPN 配置为将流量隧道传输到 VPC。如果 S3 存储桶具有 public IP,那么您可以限制来自 S3 端的流量(“仅允许来自此 IP 范围”),但主要问题是如何让 VPN 用户的流量被路由请求 S3 公共 IP 时通过 VPN。
标签: amazon-web-services amazon-s3