我正在尝试实施一项 IAM 策略,其中用户也只能访问他有权访问的文件夹。我从 Amazon docs 获得了这段代码
允许用户仅列出公司存储桶中其主目录中的对象
此示例建立在上一个示例的基础上,该示例为 Bob 提供了一个主目录。为了让 Bob 能够列出他的主目录中的对象,他需要访问 ListBucket。但是,我们希望结果仅包含他的主目录中的对象,而不是存储桶中的所有内容。为了以这种方式限制他的访问,我们使用名为 s3:prefix 的策略条件键,其值设置为 home/bob/ 。这意味着只有带有前缀 home/bob/ 的对象才会在 ListBucket 响应中返回。
{
"Statement":[{
"Effect":"Allow",
"Action":"s3:ListBucket",
"Resource":"arn:aws:s3:::my_corporate_bucket",
"Condition":{
"StringLike":{
"s3:prefix":"home/bob/*"
}
}]
}
这对我不起作用。当我运行我的代码时,我能够看到所有文件夹和子文件夹。我修改后的代码如下所示:
{
"Statement":[{
"Effect":"Allow",
"Action":"s3:ListBucket",
"Resource":"arn:aws:s3:::Test-test",
"Condition":{
"StringLike":{
"s3:prefix":"Test/*"
}
}]
}
当我使用附加到上述策略的用户凭据在 c# 中运行我的代码时,我得到了所有文件夹,而不仅仅是“测试”下的文件夹......非常感谢一些帮助!