Aws S3只有PutObject策略

时间:2015-07-29 15:23:27

标签: amazon-web-services amazon-s3 policies

我正在尝试按如下方式设置 Only PutObject 政策:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt####",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:PutObjectVersionAcl"
            ],
            "Resource": [
                "arn:aws:s3:::my-bucket/*"
            ]
        }
    ]
}

但是当我尝试上传一个名为AWS SDK的文件时,我收到来自AWS的403回复。 我绝对肯定会使用附加了此策略的IAM用户的正确访问密钥。

任何人都知道为什么AWS3不应该抱怨这个政策?

修改

经过几个小时的试验,我发现了一个奇怪的行为,我想解释一下。

如果我将s3:ListBucket添加到上述政策中,它就可以了。没有它,它将返回403.为什么亚马逊迫使我在不想拥有 ListBucket 动作时?

由于

1 个答案:

答案 0 :(得分:-1)

解决此问题的最佳方法是为您的政策提供以下操作和资源:

"Action": [
    "s3:*"
],
"Resource": [
    "arn:aws:s3:::my-bucket",
    "arn:aws:s3:::my-bucket/*"
]

这将确认您使用的是正确的访问密钥。如果它通过,你很可能使用未经授权的操作(例如s3:ListBucket)。您可以使用CloudTrail查找正在调用的未授权操作。