amazon-web-services - 组上的 AmazonS3FullAccess 托管策略不授予 S3 权限?

标签 amazon-web-services amazon-s3

我有一个 S3 存储桶,在其策略中对我的 CloudFront 源访问身份具有权限:

{
  "Version": "2008-10-17",
  "Id": "PolicyForCloudFrontPrivateContent",
  "Statement": [
    {
      "Sid": "1",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity <mine>"
      },
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::<my-bucket>/*"
    }
  ]
}

此外,我创建了一个组并将 AmazonS3FullAccess 托管策略附加到它,并向该组添加了一个 IAM 用户。托管策略如下所示:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:*",
      "Resource": "*"
    }
  ]
}

但是,当该用户尝试向存储桶添加任何内容时,我收到 403(拒绝访问)。我不确定任何其他操作是否有效,我还没有编写代码来尝试它们。只有当我在存储桶策略中明确允许该用户的 ARN 直接访问存储桶时,他们才被允许添加对象。我错过了什么?上面的组策略似乎应该允许该组的成员访问所有存储桶中的所有操作,但事实并非如此。

编辑:在对文档进行了大量研究之后,我想我已经发现亚马逊不打算以这种方式使用群组。他们希望您改用角色,您可以将角色分配给 EC2 实例以进行自动凭证管理。很好,但是我不知道如何在本地测试我的代码(使用 aws-sdk Ruby gem)。亚马逊说要为您的访问 ID 和 key 定义环境变量 - 但什么访问 ID 和 key ?一个角色没有这样的东西......

最佳答案

尝试更换(在您的政策中):

"Resource": "arn:aws:s3:::<my-bucket>/*"

和:
"Resource": ["arn:aws:s3:::<my-bucket>", "arn:aws:s3:::<my-bucket>/*",]

和:
"Principal": {"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity <mine>"},

和:
"Principal": {"AWS": "arn:aws:iam::ACCOUNT_ID:user/USERNAME"},

关于amazon-web-services - 组上的 AmazonS3FullAccess 托管策略不授予 S3 权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28742320/

相关文章:

java - 动态数据库 API : How can I build an "add JSON attribute if not present" update request?

amazon-web-services - cloudform 多个 if 条件

ruby-on-rails - 如何使用 carrierwave 获取 S3 私有(private)存储桶中对象的访问 url

ruby-on-rails - 将 S3 用于 Rails "public/images"好吗?有一种简单的方法吗?

amazon-web-services - 使用 AWS Lambda 仅使用角色访问 S3

amazon-web-services - 无法删除通过 CloudFormation 模板附加到 EC2 实例的其他 ENI

amazon-web-services - base64 编码 io.Reader

amazon-web-services - 是 AWS ARN 的 secret 吗?

amazon-web-services - S3 代理到 EC2 实例

amazon-web-services - DeleteObject 的 AWS S3 日志?