我想在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存储桶用于仅限私人访问?请帮忙。
答案 0 :(得分:-2)
问题不在于策略,而在于访问它的机器。我试图从EC2实例为S3资源执行检索操作。今天我发现可以让每个EC2实例“承担”IAM角色。当实例执行此操作时,它将继承为该角色指定的权限。所以只需使用以下策略创建角色:
{
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": "*"
}
]
}
并使EC2实例承担此角色允许它与S3存储桶通信。