IAM 访问密钥权限覆盖 IAM 角色中的显式拒绝?

IAM Access Key permissions override an Explicit Deny in an IAM role?

我有一个 EC2 实例,其角色应用了以下策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Deny",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": "*"
        }
    ]
}

仅应用角色,它按预期工作 - 我可以查看存储桶内容,但无法将对象复制到存储桶。

但是,如果我随后使用 AmazonS3FullAccess 策略为 IAM 用户添加访问密钥,则该实例能够将对象复制到存储桶。

这是怎么允许的?我的理解是,任何相关政策中的任何明确拒绝都是最终的。

发生这种情况是因为硬编码凭据具有 higher priority 然后是实例配置文件。随后,您的拒绝甚至没有被考虑在您的场景中。

最好将这种拒绝放在存储桶策略中,而不是实例角色中。