当前位置: 首页 > 知识库问答 >
问题:

即使在S3 bucket策略中指定了IAM用户,也拒绝访问

何涵育
2023-03-14

我现在正在尝试使用AWS S3。
我创建了一个没有“权限策略”的IAM用户。
并且,S3的bucket策略设置如下。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "SpecificIAMPermission",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111111111111:user/iam-user"
            },
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::bucketname",
                "arn:aws:s3:::bucketname/*"
            ]
        }
    ]
}

但是,此设置给出了拒绝访问错误。
桶和IAM用户在同一个AWS帐户中。
顺便说一句,如果我在IAM的策略设置中授予S3的完全访问权限,它就可以正常工作。

有没有一种方法可以只使用S3 bucket策略而不给IAM用户任何“权限策略”来访问?
如果您知道什么,我很乐意让您知道。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "SpecificIAMPermission",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::bucketname",
                "arn:aws:s3:::bucketname/*"
            ]
        }
    ]
}

我可以通过编写上述代码从web浏览器访问图像数据。
但是,如果我在服务器端实现中执行PutObject处理,访问将被拒绝。

共有1个答案

法兴德
2023-03-14

如果希望将Amazon S3 bucket访问权限授予特定IAM用户,最好将IAM策略附加到IAM用户,而不是创建bucket策略。

通常,桶策略用于授予对桶的公共访问权限。虽然它可以授予特定用户访问权限,但如果以这种方式添加用户,它可能会变得混乱。

因此,向IAM用户添加内联策略以授予对桶的访问权限:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::bucketname",
                "arn:aws:s3:::bucketname/*"
            ]
        }
    ]
}
 类似资料:
  • 我已创建IAM策略并分配给IAM用户。 请查找保险单 我未选中s3 bucket testingbucket00的“阻止新公共bucket策略”。 我尝试登录aws控制台使用IAM用户列出所有桶,但显示"访问为错误"。 我想给IAM用户分配一个桶,请帮忙。

  • 以下AWS策略旨在绑定到IAM组,然后添加到用户。这将授予组中的每个用户访问Amazon S3上自己的文件夹的权限。 现在的问题是,使用此策略,用户在自己的文件夹中仍然会被拒绝访问,他们无法列出存储桶或执行任何其他操作。 } 我最终想要的是,用户能够从自己的文件夹中放置和获取文件,但看不到任何其他文件夹或存储桶,但使用此策略似乎不可能做到这一点。 想法?

  • 在应用程序中,我尝试使用保护页面,但成功登录后,应用程序总是响应错误。 KeyCloak是这样配置的: - 然后添加用户,并成功登录为该用户时KeyCloak要求的凭据,但然后得到页面。我已经建立了一个项目,所有的东西都可能是,只有一个命令。我将不胜感激任何关于如何KeyCloak应额外配置的提示。 我如何正确设置keydepeat,以便允许访问空的角色列表?

  • 在让IAM策略为我的SQS队列工作时遇到问题,我尝试了IAM策略模拟器。无论我的政策多么简单,它总是说它被拒绝了。 以下政策旨在允许对任何SQS资源采取任何行动。这是我附加到特定用户的一个策略,这就是没有指定主体的原因。 当我尝试在策略模拟器中运行这个列表队列操作时,我会被拒绝:隐式拒绝(没有匹配的声明)。这种说法怎么可能不符合呢? 以下是策略编辑器上被拒绝的截图:

  • 我使用CarrierWaveDirect将高分辨率图像上传到s3。然后,我使用该图像处理通过Cloudfront URL公开的多个版本。 上传的高分辨率文件需要对匿名用户保持私有,但web应用程序需要访问私有文件才能对其他版本进行处理。 我目前正在通过将所有上传的文件设置为CarrierWave初始值设定项中的private config.fog_public=假 我有一个允许完全管理员访问的we

  • 我正在尝试为AWS IAM用户设置访问特定AWS SQS队列的用户策略。 当我尝试使用以下策略时,我得到错误AccessDenied。 但是,当我尝试使用相同的策略时,仅将arn的queue_name部分替换为*,它可以工作: 当试图限制对特定队列的访问时,会出现什么问题?