IAM AWS S3限于特定的子文件夹

罗曼尼奥

我正在使用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": [
                "*"
            ]
        }
    ]
}
约翰·罗滕斯坦

这是一项适用于您的政策:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::mybucket/toto3/*"
            ]
        },
        {
            "Sid": "Stmt1457617230000",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Condition": {
                "StringLike": {
                    "s3:prefix": [
                        "",
                        "toto3/"
                    ]
                }
            },
            "Resource": [
                "arn:aws:s3:::mybucket*"
            ]
        }
    ]
}

细节:

  • ListAllMyBuckets控制台需要。它显示所有存储桶的列表。
  • toto3/路径内允许的任何操作
  • ListBucket(检索对象列表)允许在存储桶的根目录和toto3/路径中使用。

我成功测试了此解决方案。

AWS文档参考:允许用户访问Amazon S3中的个人“主目录”

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章