我试图访问内部静态网站。
公司中的每个人都使用VPN访问我们的Amazon VPC,因此如果您使用VPN,我希望限制对该网站的访问。
所以我在AWS上发现了这个documentation来使用VPC端点,这似乎是我正在寻找的。 p>
所以我用下面的政策创建了一个VPC端点。
{
"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": "*"
}
]
}
现在常规网络获得了403,但当我在公司VPN后面时,我也获得了403.
我错过了什么吗?
答案 0 :(得分:8)
@Michael - sqlbot是对的。
您正在做的是限制访问S3存储桶,您可以使用VPC端点将静态Web内容存储到来自特定AWS VPC的请求。
VPC端点在AWS服务之间建立关联,以允许来自INSIDE的请求来自VPC。
使用VPC和S3 ACL配置无法获得所需内容,但您可以通过ACL和一些VPN配置获得它。
让我们假设连接到您公司的VPN并不意味着所有流量,包括VPN客户端和AWS S3之间的互联网流量都将通过该VPN连接进行路由,因为这是VPN配置通常的工作方式。如果不是这样,请省略以下步骤:
将一个静态路由添加到您的S3存储桶到您的VPN服务器配置,因此每个客户端都尝试通过VPN访问存储桶,而不是尝试与它建立直接的Internet连接。例如,在OpenVPN上,编辑server.conf
,添加以下行:
push "route yourS3bucketPublicIP 255.255.255.255"
之后你会看到当客户端连接到VPN时,它会在路由表中添加一个额外的条目,对应于静态路由,告诉它通过VPN到达桶。
{
"Version": "2012-10-17",
"Id": "S3PolicyId1",
"Statement": [
{
"Sid": "IPAllow",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::examplebucket/*",
"Condition": {
"IpAddress": {"aws:SourceIp": "54.240.143.0/24"},
"NotIpAddress": {"aws:SourceIp": "54.240.143.188/32"}
}
}
]
}
您使用IpAddress
字段允许使用CIDR notation的IP或IP范围,NotIpAddress
字段以相同的方式限制IP或IP范围(您可以省略一个)。在IpAddress
上指定的IP(或IP范围)应该是网关接口的公共地址,该网关接口用于路由公司的VPN Internet流量(S3看到的IP地址)你VPN上的某个人试图连接到它。)
更多信息:
http://www.bucketexplorer.com/documentation/amazon-s3--access-control-list-acl-overview.html
http://aws.amazon.com/articles/5050/
https://openvpn.net/index.php/open-source/documentation/howto.html
答案 1 :(得分:1)
实际上,@ Michael - sqlbot 是直到2015年5月15日。你做的是正确的。您找到了(再次,正确)文档,允许您在VPC中设置S3存储桶(可能无法访问外部世界),就像设置EC2计算机一样。因此,
在我的S3存储桶上,我验证了我可以从常规Web和VPN访问index.html。
是个问题。如果您没有犯错,那么不应该能够从常规网络访问存储桶。之后你所做的一切都无关紧要 - 因为你没有在你的VPN连接的VPC中创建 S3桶。
你没有详细说明你在第一步中所做的事情;最简单的可能是删除这个桶并从头开始。需要设置路由表,哪些不容易出错。 This是一套简单的指示 - 但它并没有涵盖您所遵循的文档。
但是,任何超出此功能的链接(即2015年5月之前的任何链接)都无关紧要。