S3“拒绝访问”到存储桶

Posted

技术标签:

【中文标题】S3“拒绝访问”到存储桶【英文标题】:S3 "Access Denied" to Bucket 【发布时间】:2018-01-28 15:13:16 【问题描述】:

我尝试允许我们的一个开发人员 (myapp-dev1) 访问一个明确的 S3-Bucket。

    我创建了一个应该允许 CRUD 选项的策略(他应该能够将图像文件写入和读取到该存储桶中,并且只能写入该存储桶中。

    "s3:PutObject",
    "s3:GetObject",
    "s3:DeleteObject",
    "s3:ListObjects"
    

    我创建了一个名为 dev1 的用户并将他分配给该新策略(该用户既不在组中,也没有角色)

    我创建了一个相应命名的存储桶ARN: arn:aws:s3:::myapp-dev1-bucket

    然后在这个存储桶中,我切换到“存储桶策略”并使用“策略生成器”并允许在那一刻所有操作。到目前为止,所有其他设置都失败了,这个也是。它看起来像这样:

    
      "Id": "Policy123456789",
      "Version": "2012-10-17",
      "Statement": [
        
           "Sid": "Stmt123456789",
           "Action": "s3:*",
           "Effect": "Allow",
           "Resource": "arn:aws:s3:::myapp-dev1-bucket",
           "Principal": 
              "AWS": [
                  "arn:aws:iam::1234567890:user/myapp-dev1"
               ]
           
        
      ]
    
    

但我还是得到了一个

Excon::Error::Forbidden: Expected(200) Actual(403 Forbidden)

我做错了什么? 我错过了什么? 是否还必须允许用户列出存储桶?

请帮忙!

【问题讨论】:

此存储桶是用于提供图像/资产还是用于提供已编译的单页应用程序? 用于提供图片,由应用通过 Carrierwave 上传。 【参考方案1】:

试试这个,


    "Version": "2012-10-17",
    "Statement": [
        
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::Bucket_Name"
            ]
        ,
        
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:DeleteObject",
                "s3:ListObject"
            ],
            "Resource": [
                "arn:aws:s3:::Bucket_Name/*"
            ]
        
    ]

【讨论】:

以上是关于S3“拒绝访问”到存储桶的主要内容,如果未能解决你的问题,请参考以下文章

AWS CloudFront 拒绝访问 S3 存储桶

如何在删除空S3 Elastic Beanstalk时修复“拒绝访问”?

为啥我的 lambda 函数在尝试访问 S3 存储桶时会被拒绝访问?

AWS S3 存储桶策略编辑器访问被拒绝

使用 IAM 角色从 ECS 的 S3 存储桶中提取对象被拒绝访问

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