AWS S3存储桶访问被拒绝

时间:2018-08-29 03:37:18

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

这是我在存储桶中实施的存储桶策略。

    {
    "Id": "Policy1535460101139",
    "Version": "2012-10-17",
    "Statement": [
      {
       "Sid": "Stmt1535460099601",
       "Action": "s3:*",
       "Effect": "Deny",
       "Resource": "arn:aws:s3:::bucketname",
       "Condition": {
       "StringNotEquals": {
          "aws:SourceVpc": "vpc-id"
        }
      },
      "Principal": "*"
    }
  ]
}

保存此存储区策略后,我无法从控制台(我拥有s3完全访问权限)对存储区进行列出或执行任何操作,而所有显示访问权限的操作均被拒绝。因此,当我尝试从VPC中的ec2实例之一复制文件时,复制成功,但是我无法列出存储桶中的对象。我收到拒绝访问的错误消息(EC2实例具有对存储桶具有完全权限的角色)。 这是附加到EC2实例的角色。

    {
     "Version": "2012-10-17",
     "Statement": [
      {
        "Sid": "VisualEditor0",
        "Effect": "Allow",
        "Action": "s3:*",
        "Resource": "arn:aws:s3:::bucketname/*"
      }
    ]
  }

我想知道的是,这种奇怪的行为是我的存储桶策略的原因还是其他原因。如果是,那么有关如何立即更改我的存储桶策略的任何提示?此外,这是我的控制台的屏幕截图。 enter image description here

2 个答案:

答案 0 :(得分:1)

是的,根据您的政策,这是100%。

政策规定:

  • "Effect": "Deny",-拒绝访问
  • "Principal": "*"-适合所有人
  • "Resource": "arn:aws:s3:::bucketname"-到这个桶
  • "StringNotEquals": {"aws:SourceVpc": "vpc-id"-如果请求不是来自此VPC

关于如何解决它,这取决于您的要求,而您在问题中没有提到。

答案 1 :(得分:0)

我什至无法从vpc内的实例访问存储桶的原因是,因为我没有将VPC到S3端点连接到该实例所属的子网的路由表。与文档中提到的相反,单词"aws:SourceVpc"用于允许来自同一VPC的多个端点连接,这与我认为相反,即它将允许来自所提及VPC的所有请求。因此,此问题的最终解决方案是,您可以从提到的VPC内存在的实例中删除存储分区,前提是该实例属于一个子网,并且该子网已连接了VPC至S3端点。