如何允许从不同区域的特定VPC访问特定的S3存储桶

时间:2017-11-23 18:37:26

标签: amazon-web-services amazon-s3 amazon-vpc

我想允许s3:GetObject从不同区域的VPC访问S3存储桶。

如果S3存储桶和VPC位于同一区域,我知道我们可以使用VPC端点。 但是,当我们想要允许来自不同地区的访问时,我们有什么选择?

选项1:

为区域内所有可用区域的所有子网创建NAT网关,并在S3存储桶策略中允许从NAT网关访问。弹性IP。

但是这样你需要很多NAT网关(例如:对于us-east-1区域为6)

其他选择?

2 个答案:

答案 0 :(得分:0)

您需要在两个VPC之间建立VPN连接:

  • 第一个VPC与S3&启用VPC端点。

  • 第二个VPC位于其他区域。

请注意,您不能利用VPC对等连接,因为它不是同一个区域。

答案 1 :(得分:0)

简单的答案是,您不能限制来自不同区域的VPC的一个区域中的S3存储桶的访问。您可以创建使用IP地址来控制访问的S3策略。您的NAT网关将具有公共IP地址,您的实例可以具有公共地址等。

当流量离开VPC时,它将使用公共IP地址空间。当S3存储桶收到这些请求时,它将不知道它来自哪个VPC。这是创建VPC端点和PrivateLink的原因之一。

以下是使用IP地址控制权限的示例S3策略。使用您的VPC中的真实公共地址进行修改。

{
    "Version": "2012-10-17",
    "Id": "S3PolicyId1",
    "Statement": [
        {
            "Sid": "statement1",
            "Effect": "Allow",
            "Principal": "*",
            "Action":["s3:GetObject"]  ,
            "Resource": "arn:aws:s3:::examplebucket/*",
            "Condition" : {
                "IpAddress" : {
                    "aws:SourceIp": "192.168.143.0/24" 
                },
                "NotIpAddress" : {
                    "aws:SourceIp": "192.168.143.188/32" 
                } 
            } 
        } 
    ]
}