【问题标题】:Why is this policy attached to an IAM user not working为什么附加到 IAM 用户的此策略不起作用
【发布时间】:2019-05-22 20:27:36
【问题描述】:

希望你能帮忙!

我创建了一个新的 AWS 测试账户。

我在 S3 中创建了一个新存储桶,但没有选择任何推荐的公共或私有设置。说,“对象可以是公开的”。

然后我创建了一个 IAM 用户,用于编程访问、下载访问和密钥。

然后,我根据这篇 AWS 文章创建了以下策略来授予对所述存储桶的访问权限: https://aws.amazon.com/blogs/security/writing-iam-policies-how-to-grant-access-to-an-amazon-s3-bucket/

以下是政策(bucketName 已编辑):

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

然后我将此策略附加到该用户。

在使用 SDK 或策略模拟器时,确认我使用了正确的密钥时,我不断收到拒绝访问错误。

策略模拟器说,“隐式拒绝(没有匹配的语句)。

提前致谢。

【问题讨论】:

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


    【解决方案1】:

    您附加给用户的策略很好。只需确保您拥有正确的存储桶名称并在测试操作时使用正确的访问密钥即可。

    我使用相同的策略进行了测试,只是更改了存储桶名称。以下是输出

    1. 我已使用正确的访问密钥在本地计算机上设置了配置文件
    2. 以下是添加策略前后的输出

    或者,您可以使用以下存储桶策略。

    将以下策略添加到您的存储桶策略中。相应地更改帐号、用户名和存储桶名称

        {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "statement1",
                "Effect": "Allow",
                "Principal": {
                    "AWS": "arn:aws:iam::01234567890:user/test-user"
                },
                "Action": [
                    "s3:GetBucketLocation",
                    "s3:ListBucket"
                ],
                "Resource": "arn:aws:s3:::bucketname"
            },
            {
                "Sid": "statement2",
                "Effect": "Allow",
                "Principal": {
                    "AWS": "arn:aws:iam::01234567890:user/test-user"
                },
                "Action": [
                    "s3:PutObject",
                    "s3:GetObject",
                    "s3:DeleteObject"
                ],
                "Resource": "arn:aws:s3:::bucketname/*"
            }
        ]
    }
    

    【讨论】:

    • 谢谢。我能够让我的策略正确模拟,但在我的 .net 应用程序中使用 AWS transferUtility 时却不能。我的 AccountKey 和 SecretKey、Bucket 名称和 Region Endpoint 都是正确的,所以我无法理解我缺少什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-05
    • 2020-08-16
    • 2021-11-07
    • 2017-05-17
    • 2021-05-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多