我正在尝试创建一个IAM策略,以允许用户仅访问S3存储桶中的特定文件夹。 如何使用可视化策略编辑器执行此操作? 在资源部分中,如果我提到该文件夹的arn,则会拒绝该用户访问整个存储桶。
答案 0 :(得分:2)
以下是一项授予访问分区中特定文件夹访问权限的策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": ["s3:ListBucket"],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::mybucket"],
"Condition": {"StringLike": {"s3:prefix": ["folder1/*"]}}
},
{
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::mybucket/folder1/*"]
}
]
}
注意事项:
ListBucket
操作是对存储桶本身(不是路径)的许可。要限制它们可以列出的文件夹,必须通过s3:prefix
指定该文件夹。GetObject
和PutObject
操作在对象上进行,因此可以在ARN中引用该文件夹。也可以使用IAM Policy Elements: Variables and Tags来引用用户名。此策略可以应用于 IAM组,并将允许每个用户使用自己的名称访问文件夹:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": ["s3:ListBucket"],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::mybucket"],
"Condition": {"StringLike": {"s3:prefix": ["${aws:username}/*"]}}
},
{
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::mybucket/${aws:username}/*"]
}
]
}