繁体   English   中英

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

[英]How do I restrict access to a static s3 website to a VPN

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

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

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

所以我用下面的政策创建了一个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。

我错过了什么吗?

@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"} 
      } 
    } 
  ]
}

使用IpAddress字段允许使用CIDR表示法的IP或IP范围,使用NotIpAddress字段以相同的方式限制IP或IP范围(您可以省略该IP)。 IpAddress指定的IP(或IP范围)应该是路由公司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

其实,@迈克尔- sqlbot 正确的,直到,直到5月15日,2015年你做什么是正确的。 您找到了(再次,正确)文档,允许您在VPC中设置S3存储桶(可能无法访问外部世界),就像设置EC2计算机一样。 因此,

在我的S3存储桶上,我验证了我可以从常规Web和VPN访问index.html。

是个问题。 如果您没有犯错, 则无法从常规Web访问存储桶。 之后您所做的一切都无关紧要 - 因为您没有 VPN连接的VPC中创建S3存储桶。

你没有详细说明你在第一步中所做的事情; 最简单的可能是删除这个桶并从头开始。 需要设置路由表,哪些不容易出错。 是一套简单的说明 - 但它并没有涵盖您所遵循的文档。

但是,任何超出此功能的链接(即2015年5月之前的任何链接)都无关紧要。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM