S3存储桶的基本AWS IAM权限

时间:2012-01-31 02:48:06

标签: ruby-on-rails permissions amazon-s3 amazon-web-services

我正在尝试找出一个IAM用户/密钥的基本权限集,必须只能访问S3中的一个存储桶 - 只能对单个存储桶进行读/写访问。

使这项工作所需的最低权限是什么?我在S3的IAM策略生成器中选择了所有选项,除了CreateBucketDeleteBucket之外,在桶上启用了所有权限。我还创建了一组特定于该用户的密钥。

当我尝试使用这些凭据访问存储桶时,即使ListAllMyBuckets属性已启用,我也会遇到列出存储桶的问题。

任何人都有设置像这样的基本存储桶配置的经验吗?好像很常见...

2 个答案:

答案 0 :(得分:12)

Example Policies for Amazon S3涵盖与您类似或相关的各种用例 - 特别是您可能希望将示例1:允许每个用户在Amazon S3中拥有主目录示例2:允许用户仅列出公司存储桶中其主目录中的对象 - 您只需调整Resource来定位您的存储桶根目录,即替换/home/bob/**

请注意示例2 有助于ListBucketoperation on a bucket 返回有关存储桶中某些项目的信息,而ListAllMyBucketsoperation on the service返回请求发件人拥有的所有存储桶的列表,因此可能不适用于您的用例(请参阅我对有关说明的说明)后者)。

答案 1 :(得分:0)

这将允许列出所有桶,假设您没有在其他地方拒绝它(我99%肯定拒绝语句首先被评估;订单与IAM策略无关):

    {
        "Effect": "Allow",
        "Action": [
            "s3:ListAllMyBuckets"
        ],
        "Resource": "*"
    }

允许你想要的任何你想要的东西(不要忘记/ *):

    {
        "Effect": "Allow",
        "Action": [
            "s3:<Put your actions here; cherry pick from the AWS documentation>"
        ],
        "Resource": [
            "arn:aws:s3:::<Bucket name here>",
            "arn:aws:s3:::<Bucket name here>/*"
        ]
    }