PutObject操作:身份提供者拒绝访问

时间:2020-10-23 23:45:29

标签: amazon-web-services amazon-s3 oauth amazon-iam

我正在使用AWS中的身份提供者,该提供者可以向他管理的用户授予具有以下策略的角色。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "GiveS3Access",
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::mybucket"
        }
    ]
}

使用我计算机上的有效访问令牌,我可以在s3存储桶中列出对象(下面的示例),但不能在其上推送任何对象。

❯ aws s3 ls s3://mybucket/
                           PRE test_folder/
                           PRE home/
2020-10-07 15:22:13      57385 Image001.png
2020-10-07 15:25:20      98942 Image002.png

❯ aws s3 cp test.mp4 s3://mybucket/test.mp4
upload failed: ./test.mp4 to s3://mybucket/test.mp4 An error occurred (AccessDenied) when calling the PutObject operation: Access Denied

没有默认加密,也没有存储桶额外策略。正确配置了配置文件(~/.aws/config,以使用GiveS3Access策略(第一个代码块)询问角色。

1 个答案:

答案 0 :(得分:0)

arn:aws:s3:::mybucket形式的arn仅用于存储桶,不适用于其对象。要启用对象的下载/上传,应该有:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "GiveS3Access",
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::mybucket",
                "arn:aws:s3:::mybucket/*"
            ]
        }
    ]
}

但是,这允许对存储桶和对象进行所有操作。请重新考虑将其更改为遵循principles of least privileged

相关问题