什么是我的AWS政策错误?

时间:2018-04-14 22:09:55

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

我试图让程序化的IAM用户访问单个存储桶。

我设置了以下政策并将其附加给用户:

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

尝试以编程方式上传文件,我得到了403。

我从这里得到了这个政策:

Writing IAM Policies: How to Grant Access to an Amazon S3 Bucket

我通过添加AWS托管策略AmazonS3FullAccess验证了其他所有功能,之后我的上传成功了。但我宁愿不给这个用户完全访问权限。

此用户没有附加其他政策。

2 个答案:

答案 0 :(得分:1)

您的保单没有任何问题。确保在IAM策略中使用正确的存储桶名称并将策略添加到用户。

您可以使用IAM Policy Simulator进行测试。也许你应该考虑政策生效的时间,但它“几乎立即”。请参阅this answer

答案 1 :(得分:0)

您可以尝试使用此政策来完全访问特定广告资源

{
    "Version": "2012-10-17",
    "Statement": [{
            "Action": "s3:*",
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::<BUCKETNAME>/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "s3:ListAllMyBuckets",
            "Resource": "arn:aws:s3:::*"
        }
    ]
}

由于您提供的是PutGetDelete,因此您也可以提供对特定广告资源的完全访问权限。