Amazon S3 存储桶:拒绝列表、读取、写入特定文件夹

Posted

技术标签:

【中文标题】Amazon S3 存储桶:拒绝列表、读取、写入特定文件夹【英文标题】:Amazon S3 Bucket: Deny List, Read, Write to specific folder 【发布时间】:2018-01-23 21:34:27 【问题描述】:

我正在尝试限制拒绝特定用户列表、对存储桶中特定文件夹的读取和写入访问权限。我能够允许用户查看其他文件夹,但在向帐户添加拒绝策略(通过组添加)时,我收到拒绝访问消息。

这是我拒绝访问的内容:


  "Version": "2012-10-17",
  "Statement": [
    
      "Effect": "Allow",
      "Action": [
        "s3:*"
      ],
      "Resource": "arn:aws:s3:::*"
    ,
    
      "Effect": "Deny",
      "Action": [
        "s3:ListBucket"
      ],
      "Resource": "arn:aws:s3:::myBucket",
      "Condition": 
        "StringLike": 
          "s3:prefix": "Admin/*"
        
      
    
  ]

理论上,我想限制某个用户不能对 Admin 文件夹执行上述操作,但是他们仍然需要能够查看其他文件夹的存储桶。

我也试过了:


  "Id": "Policy",
  "Version": "2012-10-17",
  "Statement": [
    
      "Sid": "Stmt1516743098844",
      "Action": [
        "s3:GetBucketLocation",
        "s3:PutObject",
        "s3:GetObject"
      ],
      "Effect": "Deny",
      "Resource": "arn:aws:s3:::mybucket/Admin/*",
      "Principal": 
        "AWS": [
          "arn:aws:iam::11111111:user/Jenny"
        ]
      
    
  ]

上述两个 JSON 语句都是使用 S3 存储桶策略和 IAM 策略的策略生成器创建的。

关于如何拒绝列表访问文件夹但允许查看存储桶的任何线索?

【问题讨论】:

我不确定这是否适用于您的用例,但您是否想过为您的 admin 内容使用不同的存储桶?这将使权限管理更容易,更不容易出错。 这将是我回到电脑后的下一步。我猜在同一个组中有一个允许列表桶和拒绝列表可能会抛出访问被拒绝 【参考方案1】:

你的第一句话对我来说非常适合!

$ aws s3 ls s3://my-bucket/
                           PRE Admin/
                           PRE other/
2018-01-23 16:33:07      15091 cat.jpg

$ aws s3 ls s3://my-bucket/other/
2018-01-23 16:34:02         91 foo

$ aws s3 ls s3://my-bucket/Admin/

An error occurred (AccessDenied) when calling the ListObjects operation: Access Denied

【讨论】:

感谢 cmets,当我将这两个策略添加到用户所在的组时,用户在尝试查看存储桶时会被拒绝访问。回到绘图板看看我做错了什么

以上是关于Amazon S3 存储桶:拒绝列表、读取、写入特定文件夹的主要内容,如果未能解决你的问题,请参考以下文章

S3“拒绝访问”到存储桶

Spring Boot Amazon AWS S3 存储桶文件下载 - 拒绝访问

Amazon S3 存储桶策略只允许访问特定的 http

如何授予 Amazon SES 写入您的 Amazon S3 存储桶的权限

从 Azure 数据块读取 Amazon S3 特定文件夹,无需公开访问存储桶

如何(批量)删除Amazon S3存储桶中几百个文件的列表