Zna*_*kus 22 amazon-s3 amazon-iam
我有一个用户的以下 IAM 策略
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1395161912000",
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:PutObject",
"s3:*"
],
"Resource": [
"arn:aws:s3:::bucketname"
]
},
{
"Sid": "list",
"Effect": "Allow",
"Action": [
"s3:ListAllMyBuckets"
],
"Resource": [
"arn:aws:s3:::*"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
目标是让用户将文件上传到存储桶,但不会覆盖或删除。是用来备份的。我从ListBucketand开始PutObject,但*由于它不起作用而添加。甚至*不允许用户上传文件,只是获取Access Denied.
当我尝试模拟器时,它返回Denied - Implicitly denied (no matching statements found).for ListBucket,这看起来很奇怪,因为我已经隐含地允许了。
我试过 Cyberduck 和 3Hub 作为 S3 客户端。
知道出了什么问题吗?
Ste*_*pel 25
在为Amazon S3制定Amazon IAM策略时,您需要了解服务上的操作(例如ListAllMyBuckets)、存储桶上的操作(例如ListBucket)和对象上的操作(例如GetObject)之间的区别。
特别是,Resource您的策略规范需要根据以下模式处理适当的目标实体(例如参见Amazon S3的各种示例策略):
arn:aws:s3:::*arn:aws:s3:::<bucket>arn:aws:s3:::<bucket>/<object>您遇到了Access Denied,因为您已经为 指定了一个存储桶级资源PutObject,这需要一个对象级资源规范,例如arn:aws:s3:::<bucket>/*- 因此,以下策略应涵盖您的示例用例:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListAllMyBuckets"
],
"Resource": [
"arn:aws:s3:::*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::bucketname"
]
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::bucketname/*"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16639 次 |
| 最近记录: |