为Amazon S3创建IAM策略

Abh*_*Net 4 amazon-s3

我正在尝试实施IAM策略,其中用户只能访问他有权访问的文件夹.我从亚马逊文档中获取了此代码

允许用户仅列出公司存储桶中其主目录中的对象

此示例基于前一个示例,该示例为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/*"
    }
  }]
}
Run Code Online (Sandbox Code Playgroud)

这不适合我.当我运行我的代码时,我能够看到所有文件夹和子文件夹.我修改过的代码看起来像这样:

{
  "Statement":[{
    "Effect":"Allow",
    "Action":"s3:ListBucket",
    "Resource":"arn:aws:s3:::Test-test",
    "Condition":{
      "StringLike":{
      "s3:prefix":"Test/*"
    }
  }]
}
Run Code Online (Sandbox Code Playgroud)

当我使用附加到上述策略的用户的凭据在c#中运行我的代码时,我得到所有文件夹,而不仅仅是"测试"下的那个...真的很感激一些帮助!

Abh*_*Net 7

我终于搞定了.虽然我认为AWS管理控制台中存在一个错误,但至少它就像是一个错误.问题是我的策略一直都是正确的,但是当我通过AWS管理控制台访问它时,它的行为会有所不同,然后像CloudBErry这样的软件.我必须修改的一件事是对象和存储桶的ACL设置.如果AWS控制台正常工作,那么之前也会这样做.无论如何这是我的政策:

{
  "Statement": [

    {
      "Effect": "Allow",
      "Action": "s3:ListAllMyBuckets",
      "Resource": "arn:aws:s3:::*",
      "Condition": {}
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket",
        "s3:ListBucketVersions"
      ],
      "Resource": "arn:aws:s3:::pa-test",
      "Condition": {
        "StringLike": {
          "s3:prefix": "test/*"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": "s3:*",
      "Resource": "arn:aws:s3:::pa-test/test/*",
      "Condition": {}
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

1)问题是当我通过AWS控制台访问此IAM用户的管理控制台时,当我点击我的存储桶时,我被拒绝访问但是当我通过Cloudberry登录时,我可以看到我的文件夹.2)我必须修改我的存储桶的ACL设置和我的存储桶的对象(文件夹):所有者:完全控制经过身份验证的用户:只读

对于我的文件夹:所有者:完全控制

现在的问题是您无法在AWS控制台中为文件夹(对象)设置ACl设置.您可以为文件(对象)设置它们.例如,如果右键单击存储桶中的文件夹(对象),然后单击属性,则不会显示权限选项卡.但是,如果您右键单击存储桶或文件(Say test.html)并单击属性,它将显示权限选项卡.我不确定是否其他人注意到了这个问题.无论如何,这是我的脚本,它现在正在工作.