AWS IAM对ONE S3中的GetObjects权限不起作用

时间:2014-03-20 17:04:00

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

我正在尝试为用户写一个权限,以便能够访问一个特定存储桶中的对象。

我目前有:

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

但是用户仍然可以访问我的所有其他存储桶。请注意,我的其他水桶没有政策......我认为这不重要。我只是希望允许该用户的IAM进入该特定存储桶。

2 个答案:

答案 0 :(得分:2)

Amazon S3是最复杂的服务之一,因为它提供了三种不同的权限机制,这些机制可以同时应用,例如, IAM policies and Bucket Policies and ACLs! Oh My! (Controlling Access to S3 Resources)可以很好地写出主题,特别是如何授权如何使用多种访问控制机制?

  

每当AWS委托人向S3发出请求时,授权决策取决于所有IAM策略的联合,S3存储桶策略和适用的S3 ACL

您遇到的行为表明某些地方存在错误配置,即您可能允许在您可能不知道的级别访问存储桶 - 仅关于Amazon IAMIAM Policy Simulator是一个很好的调试工具这种情况我强烈建议首先验证你的配置。

然而,虽然这对于大多数服务来说已经足够了,但它并没有涵盖上面概述的S3的其他两种权限机制,但至少已经分离了分析。

答案 1 :(得分:0)

请尝试以下 IAM用户政策,该权限允许完全访问仅一个存储桶

请注意,“列出所有存储桶”是必需的,但用户将无法访问您在策略中指定的存储桶之外的其他存储桶。

{
   "Statement":[
  {
     "Effect":"Allow",
     "Action":[
        "s3:ListAllMyBuckets"
     ],
     "Resource":"arn:aws:s3:::*"
  },
  {
     "Effect":"Allow",
     "Action":[
        "s3:ListBucket",
        "s3:GetBucketLocation"
     ],
     "Resource":"arn:aws:s3:::examplebucket"
  },
  {
     "Effect":"Allow",
     "Action":[
        "s3:PutObject",
        "s3:GetObject",
        "s3:DeleteObject"
     ],
     "Resource":"arn:aws:s3:::examplebucket/*"
  }
   ]
}