如何将对静态s3网站的访问限制为VPN

Pat*_*até 22 amazon-s3 amazon-web-services

我正在尝试访问内部静态网站.

公司中的每个人都使用VPN来访问我们的Amazon VPC,因此如果您使用VPN,我希望限制对该站点的访问.

所以我在AWS上发现了这个文档来使用VPC端点,这似乎是我正在寻找的.

所以我用下面的政策创建了一个VPC端点.

{
  "Statement": [
    {
        "Action": "*",
        "Effect": "Allow",
        "Resource": "*",
        "Principal": "*"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

在我的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": "*"
     }
  ]
}
Run Code Online (Sandbox Code Playgroud)

现在,常规网络获得了403,但当我落后于公司VPN时,我也获得了403.

我错过了什么吗?

Not*_*aeL 9

@Michael - sqlbot是对的.

您正在做的是限制访问S3存储桶,您可以使用VPC端点将静态Web内容存储到来自特定AWS VPC的请求.

VPC端点在AWS服务之间建立关联,以允许来自INSIDE的请求来自VPC.

使用VPC和S3 ACL配置无法获得所需的功能,但您可以通过ACL和一些VPN配置获得它.

让我们假设连接到您公司的VPN并不意味着所有流量,包括VPN客户端和AWS S3之间的互联网流量都将通过该VPN连接进行路由,因为这是通常VPN配置的工作方式.如果不是这种情况,请省略以下步骤:

  1. 将S3存储桶的静态路由添加到VPN服务器配置,因此每个客户端都尝试通过VPN访问存储桶,而不是尝试与其建立直接的Internet连接.例如,在OpenVPN上编辑server.conf,添加以下行:

    push "route yourS3bucketPublicIP 255.255.255.255"

之后,您将看到当客户端连接到VPN时,它会在其路由表中添加一个额外的条目,对应于静态路由,告知它通过VPN到达存储桶.

  1. 使用S3存储桶ACL"IpAddress"字段设置所需的配置.它应该看起来像这样:

.

{
  "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"} 
      } 
    } 
  ]
}
Run Code Online (Sandbox Code Playgroud)

您使用IpAddress字段来允许使用CIDR表示法的IP或IP范围,并NotIpAddress使用相同的方式来限制IP或IP范围(您可以省略该IP).指定的IP(或IP范围)IpAddress应该是路由公司VPN互联网流量的网关接口的公共地址(当VPN中的某个人尝试时,S3看到的IP地址)连接到它).

更多信息:

http://www.bucketexplorer.com/documentation/amazon-s3--access-control-list-acl-overview.html

http://aws.amazon.com/articles/5050/

http://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html#example-bucket-policies-use-case-3

https://openvpn.net/index.php/open-source/documentation/howto.html