我正在尝试编写一个IAM策略,该策略拒绝访问除一个文件夹之外的所有文件夹。这似乎是关于here的确切用例。
我写了一个看起来像这样的政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": ["s3:*"],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::bucket"],
"Condition":{"StringLike":{"s3:prefix":["folder/subfolder/*"]}}
},
{
"Action":["s3:*"],
"Effect":"Allow",
"Resource": ["arn:aws:s3:::folder/subfolder/*"]
}
]
}
基本上(对我来说),与他们的例子完全相同。
它不起作用。
用户被拒绝访问所有其他存储桶,但这个存储桶似乎有自由范围。
答案 0 :(得分:0)
有关调整/诊断任何类型IAM Policies的问题,我强烈推荐IAM Policy Simulator(有关详细信息和直接访问,请参阅Using the IAM Policy Simulator):
您可以使用IAM策略模拟器在将策略提交到生产环境之前测试AWS身份和访问管理(IAM)策略的效果,并测试现有的IAM策略以验证它们是否具有预期效果。
策略模拟器可能有点挑剔/难以使用,但我刚刚将引用的示例策略验证到Allow Users to Access a Personal "Home Directory" in Amazon S3,如下所示:
Amazon S3
和所需的操作,例如GetObject
(或只是全选)arn:aws:s3:::testbucket.example.com/home/testuser/*
aws:username
的变体,即testuser
和anotheruser
顺便说一句,它起初对我来说不起作用,因为anotheruser
已成为授予一般S3读取访问权限的组的一部分,这是IAM策略模拟器立即浮出水面 - 也许这就是你的问题IAM配置呢?
答案 1 :(得分:0)
这个怎么样:
{
"Statement": [
{
"Sid": "AllowGroupToSeeBucketListInTheConsole",
"Action": [
"s3:ListAllMyBuckets",
"s3:GetBucketLocation"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::*"
]
},
{
"Sid": "AllowRootLevelListingOfCompanyBucket",
"Action": [
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::bucket"
],
"Condition": {
"StringEquals": {
"s3:prefix": [
""
],
"s3:delimiter": [
"/"
]
}
}
},
{
"Sid": "AllowListBucketIfSpecificPrefixIsIncludedInRequest",
"Action": [
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::bucket"
],
"Condition": {
"StringLike": {
"s3:prefix": [
"folder/subfolder/*"
]
}
}
},
{
"Sid": "AllowUserToFullAccess",
"Action": [
"s3:*"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::bucket/folder/subfolder/*"
]
}
]
}
阅读每个语句中的 Sid
以了解相关操作。