Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 仅限制从VPC访问S3存储桶_Amazon Web Services_Amazon S3_Bucket - Fatal编程技术网

Amazon web services 仅限制从VPC访问S3存储桶

Amazon web services 仅限制从VPC访问S3存储桶,amazon-web-services,amazon-s3,bucket,Amazon Web Services,Amazon S3,Bucket,在S3中,我有几个桶需要限制访问。 在实施过程中,我现在感到困惑,感谢您帮助我理解这一点 这是我的设想-- 创建了一个VPC,公共子网,ec2 使用管理员用户aws1234 la创建了一个bucket 创建了一个bucket策略并附加到bucket上,上面写着“仅当来自我的vpc时才允许访问” 接下来,从CLI,aws s3 ls 它正在显示桶 我在哪里犯了错误? 理想情况下,第4步应该返回一个错误,因为我没有通过我的VPC 任何帮助都将不胜感激 谢谢因为您在bucket级别指定了资源,它将拒绝

在S3中,我有几个桶需要限制访问。 在实施过程中,我现在感到困惑,感谢您帮助我理解这一点

这是我的设想--

  • 创建了一个VPC,公共子网,ec2
  • 使用管理员用户aws1234 la创建了一个bucket
  • 创建了一个bucket策略并附加到bucket上,上面写着“仅当来自我的vpc时才允许访问”
  • 接下来,从CLI,aws s3 ls
  • 它正在显示桶

    我在哪里犯了错误? 理想情况下,第4步应该返回一个错误,因为我没有通过我的VPC

    任何帮助都将不胜感激


    谢谢

    因为您在bucket级别指定了资源,它将拒绝bucket中的所有操作。但是,bucket的列表作用于资源
    arn:aws:s3:::*
    ,并且不会被拒绝,因此即使您不在专有网络内,也会显示bucket

    另外,如果不阻塞所有存储桶,则无法仅为存储桶部分隐藏。

    来自:

    新的条件键
    aws:sourceVpce
    aws:sourceVpc
    用于VPC端点的bucket策略

    因此,您需要通过VPC端点访问S3 bucket才能限制对VPC的访问。这是因为,如果没有VPC端点,Amazon S3接收到的请求似乎只是“来自互联网”,因此无法识别源VPC。不同的是,通过VPC端点发出的请求包含源VPC的标识符

    让它工作起来

    假设:您的用户已经拥有允许访问存储桶的IAM策略。您想知道如何进一步限制bucket,使其只能从特定的VPC访问。如果不是这样,那么您应该使用
    Allow
    策略授予对bucket的访问权,因为默认情况下访问被拒绝

    为了再现你的情况,我做了以下工作:

    • 创建了一个带有公共子网的新VPC
    • 在VPC中添加了一个VPC端点
    • 在公共子网中启动了一个Amazon EC2实例,分配了一个IAM角色,该角色已经有权访问我的所有Amazon S3存储桶
    • 创建了一个亚马逊S3 bucket
      我的专有网络bucket
    • 存储桶策略添加到存储桶中(从):
    请注意,此策略假定用户已通过授予
    允许访问权限的IAM策略访问存储桶。此策略正在添加一个
    Deny
    ,该策略将覆盖他们已经拥有的对bucket的访问权限

    • 登录到新VPC中的Amazon EC2实例,然后:
      • 运行aws s3 ls s3://my vpc only bucket
  • 成功了
  • 从我自己的Internet计算机:
    • 运行aws s3 ls s3://my vpc only bucket
    • 收到一个
      AccessDenied
      错误(这正是我们想要的!)
  • 顺便说一句,拒绝策略也将禁止您使用Amazon S3管理控制台来管理bucket,因为请求不是来自VPC。这是在存储桶上使用
    Deny
    s3::
    的副作用。您始终可以使用根凭据(通过电子邮件地址登录)删除bucket策略,然后转到S3控制台中的bucket策略并单击删除。(在进入Bucket策略的屏幕上,您会看到一些错误,但它会起作用。)

    通过
    允许的替代方法

    另一方面,如果用户尚未访问所有AmazonS3存储桶,那么默认情况下,他们将无法访问新的存储桶。因此,您需要授予
    允许
    访问bucket的权限,但只能通过VPC端点从VPC访问

    设置与上述相同,但桶策略为:

    {
       "Version": "2012-10-17",
       "Statement": [
         {
           "Sid": "Access-to-specific-VPC-only",
           "Principal": "*",
           "Action": "s3:*",
           "Effect": "Allow",                    <-- This changed
           "Resource": ["arn:aws:s3:::my-vpc-only-bucket",
                        "arn:aws:s3:::my-vpc-only-bucket/*"],
           "Condition": {
             "StringEquals": {                   <--- This changed
               "aws:sourceVpc": "vpc-111bbb22"
             }
           }
         }
       ]
    }
    
    {
    “版本”:“2012-10-17”,
    “声明”:[
    {
    “Sid”:“仅访问特定专有网络”,
    “委托人”:“*”,
    “行动”:“s3:*”,
    
    “效果”:“允许”,您可以从您的VPC中调用
    aws s3 ls
    吗?我将尝试在VPC中从我的ec2中运行aws s3 ls,并在下次更新hour@TuanVA我用s3:List*为ec2创建了一个角色。输出显示了我使用bucket策略拒绝访问的bucket。我在哪里犯了这个错误?相关:如果我理解你的答案-我没有在任何地方指定arn:aws:s3:::*,那么它是从哪里获得该权限的。您能帮我克服这个困惑吗。默认情况下listbucket在那里吗?我没有分配。但是,如果我指定了aws s3 ls s3://aws1234 ls,我会出现以下错误。
    发生错误(AccessDenied)调用ListObjectsV2操作时:访问被拒绝
    ,这是预期的,因为您拒绝bucket路径级别中的list objects操作。因此,您没有权限查看bucket中的对象列表。由于无法从控制台中删除bucket策略,我没有移动到允许的root访问权限(谢谢,你的评论很有帮助!)现在,我仍然无法获得所需的结果。我的目标很简单,我只希望用户通过vpce查看一个存储桶。当我使用mac访问时,我得到了积极的结果。在使用mac时,我使用s3*角色。理想情况下,mac应该给出一个错误。有什么想法吗?如果您的计算机使用的凭据具有access至
    s3:
    ,则您将有权访问存储桶。这是因为您可以从IAM角色或存储桶策略获得访问权限。如果您希望保留对某些用户使用
    s3:
    {
       "Version": "2012-10-17",
       "Statement": [
         {
           "Sid": "Access-to-specific-VPC-only",
           "Principal": "*",
           "Action": "s3:*",
           "Effect": "Deny",
           "Resource": ["arn:aws:s3:::my-vpc-only-bucket",
                        "arn:aws:s3:::my-vpc-only-bucket/*"],
           "Condition": {
             "StringNotEquals": {
               "aws:sourceVpc": "vpc-111bbb22"
             }
           }
         }
       ]
    }
    
    {
       "Version": "2012-10-17",
       "Statement": [
         {
           "Sid": "Access-to-specific-VPC-only",
           "Principal": "*",
           "Action": "s3:*",
           "Effect": "Allow",                    <-- This changed
           "Resource": ["arn:aws:s3:::my-vpc-only-bucket",
                        "arn:aws:s3:::my-vpc-only-bucket/*"],
           "Condition": {
             "StringEquals": {                   <--- This changed
               "aws:sourceVpc": "vpc-111bbb22"
             }
           }
         }
       ]
    }