【问题标题】:AWS S3 Bucket Access DeniedAWS S3 存储桶访问被拒绝
【发布时间】:2019-02-03 17:59:52
【问题描述】:

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

    {
    "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/*"
      }
    ]
  }

我想知道的是,这种奇怪的行为是否是我的存储桶策略的原因,或者可能是其他原因。如果是,关于我现在如何更改我的存储桶策略的任何提示?此外,这是我控制台的屏幕截图。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      是的,100% 取决于您的政策。

      政策说:

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

      至于如何解决它,这取决于您的要求,您没有在问题中说明。

      【讨论】:

      • 只想知道我现在是否可以使用 boto3 或 cli 从 VPC 内的一个实例更改存储桶策略?
      • 哦,您的意思是您不能删除该策略,因为该策略阻止您删除它,是吗?那很有意思!您可以使用您的 Root 凭证将其删除,因为 IAM 策略不适用于 Root 登录。或者,只要您来自规定的 VPC,您就可以进行更改。
      • 我也无法从 VPC 中的一个实例更改它。除了使用root帐户之外还有其他方法吗?而且为什么它也不允许来自vpc内部的实例?
      猜你喜欢
      • 1970-01-01
      • 2017-07-04
      • 1970-01-01
      • 2018-01-10
      • 1970-01-01
      • 2019-04-28
      • 2021-02-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多