我只有1个存储桶,称为“合作伙伴”,然后在其下为每个合作伙伴创建文件夹。然后,我为每个合作伙伴创建一个IAM用户,目标是使他们能够访问各自的文件夹。因此,如果我有两个名为Alice&Bob的合作伙伴/用户,我想让他们每个人都可以访问“合作伙伴”存储桶下名为Alice&Bob的个人文件夹。目标不是授予S3 Console访问权限,只是以编程方式,他们应该能够读取/写入/修改这些文件夹中的内容。
因此,我正在考虑为每个IAM用户简单地创建“内联策略”,以将其限制在他们的文件夹中。这是正确的方法还是其他替代方法?这是我当前针对IAM用户Alice的“内联策略”。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowListBucketIfSpecificPrefixIsIncludedInRequest",
"Action": [
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::partners"
],
"Condition": {
"StringLike": {
"s3:prefix": [
"alice/*"
]
}
}
},
{
"Sid": "AllowUserToReadWriteObjectDataInProperFolder",
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::partners/alice/*"
]
},
{
"Sid": "ExplicitlyDenyAnyRequestsForAllOtherFolders",
"Action": [
"s3:ListBucket"
],
"Effect": "Deny",
"Resource": [
"arn:aws:s3:::partners"
],
"Condition": {
"StringNotLike": {
"s3:prefix": [
"alice/*",
""
]
},
"Null": {
"s3:prefix": false
}
}
}
]
}