我正在使用AWS S3组件来存储文件。
我有一个名为"mybucket"的桶,并且有以下文件夹:
+---Mybucket
\---toto1
\---toto2
+---toto3
| \--- subfolder
| \---subsubfolder
\---toto4
我有一些AWS控制台用户,只需要访问“toto3”文件夹。我试图限制对此文件夹的访问,但是用户必须有列出存储桶根目录的权限。如果我添加了访问根文件夹的附加权限,用户可以浏览“toto1”和“toto2”文件夹,而我不想要这样。我想配置如下:
- 授权列出我的S3账户中所有存储桶(listAllBuckets策略) - 授权列出存储桶根目录(如果用户可以看到目录名称,我也可以接受) - 拒绝访问除“toto3”以外的所有前缀存储桶 - 授权用户在“toto3”文件夹中执行所有操作 - 我不想编写包容性规则
我尝试了以下IAM策略,但没有成功:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:PutObject",
"s3:GetObject"
],
"Resource": ["arn:aws:s3:::mybucket/toto3/*"]
},
{
"Sid": "Stmt1457617383000",
"Effect": "Allow",
"Action": [
"s3:GetBucketLocation",
"s3:ListBucket"
],
"Resource": ["arn:aws:s3:::mybucket"]
},
{
"Sid": "Stmt1457617230000",
"Effect": "Deny",
"Action": ["s3:*"],
"Condition": {
"StringNotLike": {
"s3:prefix": "toto3*"
}
},
"Resource": [
"arn:aws:s3:::mybucket/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:ListAllMyBuckets"
],
"Resource": [
"*"
]
}
]
}
"s3:prefix": [ "" ]
只允许在存储桶的根目录下执行ListBucket
操作,即列出文件夹名称但不包括其内容,除非路径以toto3/
开头。这是正确的吗? - W.M.