如何设置Amazon S3存储桶的策略只能由IAM用户访问?

时间:2013-01-10 14:33:52

标签: rest amazon-s3 amazon policy

我想在S3上放置一堆文件,以便访问它们仅限于特定的IAM用户。我尝试将策略与用户和存储桶相关联,并尝试使用s3-cmd访问存储桶中的文件。但是,我继续在响应中获取访问被拒绝的xml(403禁止)。我的政策如下:

{
    "Version": "2008-10-17",
    "Statement": [
        {
        "Sid": "<a statementID>",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::<my-account-num>:user/<username>"
        },
        "Action": "s3:*",
        "Resource": [
            "arn:aws:s3:::<bucket-name>/*",
            "arn:aws:s3:::<bucket>"
            ]
         }
    ]
}

只有将Principal设置为“AWS”:“*”,我才能通过REST调用下载资源。

有问题的用户附加了“高级用户”政策:

{
  "Statement": [
   {
      "Effect": "Allow",
      "NotAction": "iam:*",
      "Resource": "*"
   }
 ]

}

如何将S3存储桶用于仅限私人访问?请帮忙。

1 个答案:

答案 0 :(得分:-2)

问题不在于策略,而在于访问它的机器。我试图从EC2实例为S3资源执行检索操作。今天我发现可以让每个EC2实例“承担”IAM角色。当实例执行此操作时,它将继承为该角色指定的权限。所以只需使用以下策略创建角色:

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

并使EC2实例承担此角色允许它与S3存储桶通信。