我有一个AWS S3存储桶,让我们称之为'mybucket',以及一群AWS IAM用户,其中一个,比如'alice',应该可以对'mybucket'做任何事情,而其他AWS IAM用户应该能够列出内容并在'mybucket'中获取对象。
我已经设置了一个桶策略,如:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Allow 'alice' user complete access.",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::XXXXXXXXXXXX:user/alice"
},
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::mybucket",
"arn:aws:s3:::mybucket/*"
]
},
{
"Sid": "Allow all other users read access",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::XXXXXXXXXXXX:root"
},
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::mybucket",
"arn:aws:s3:::mybucket/*"
]
}
]
}
根据这项政策,我仍然可以写信给'mybucket'。我甚至删除了第二个语句对象,并得到了相同的结果。
这是实现我想达到目标的正确方法吗?如果是这样,我的存储桶策略有什么问题?如果没有,我应该采取什么方法?
非常感谢!
答案 0 :(得分:1)
Amazon S3存储桶策略通常用于授予对所有人(例如,公共用户)的访问权限。
如果您希望向特定IAM用户授予特定权限,则最好将策略直接添加到IAM用户或组。
例如,将此策略添加到alice
IAM用户,以允许她在存储桶和存储桶中的对象上运行任何API命令:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1",
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::mybucket/*",
"arn:aws:s3:::mybucket"
]
}
]
}
您会注意到没有Principal
字段,因为它会自动应用于放置此政策的用户。
当Amazon S3评估权限时,它会同时查看Bucket Policy和与User关联的任何策略。可以授予访问权限。