"Implicitly denied" 当我在 AWS Policy Simulator 中明确允许 S3 IAM 用户操作时

"Implicitly denied" when I've explicitly allowed S3 IAM user actions in AWS Policy Simulator

我正在尝试模拟我想附加到用户的 IAM 策略,这样我就可以限制他们对两个存储桶的访问,一个用于文件上传,一个用于文件下载。

策略模拟器告诉我以下策略不起作用,我也不知道为什么,但似乎与通配符有关。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "GetObject",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::mybucket-*-report-output/*.csv"
            ]
        },
        {
            "Sid": "PutObjects",
            "Effect": "Allow",
            "Action": "s3:PutObject",
            "Resource": [
                "arn:aws:s3:::mybucket-*-report-input/*.csv"
            ]
        }
    ]
}

政策模拟器说以下政策确实有效:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "GetObject",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::mybucket-*-report-output"
            ]
        },
        {
            "Sid": "PutObjects",
            "Effect": "Allow",
            "Action": "s3:PutObject",
            "Resource": [
                "arn:aws:s3:::mybucket-*-report-input"
            ]
        }
    ]
}

关于如何构建策略,我肯定缺少一些东西,但我想限制对策略中存储桶的访问,对于提到的操作,但我也想确保用户只能添加和检索扩展名为 .csv 的文件。

下面是模拟器的截图:

您的政策 100% 正确 - IAM 政策模拟器出于某些荒谬的原因显示错误的结果。

我也可以使用上述策略重现您的问题,结果到处都是 - 有时两者都被允许,两者都被拒绝,只允许一个等等。

双通配符似乎有问题,有时它会在返回的 HTTP 响应中评估错误的资源 ARN(我有时会看到两个 ARN 都设置为 output 而不是仅在 HTTP 响应的网络选项卡中将 1 设置为 output - 缓存?)。

它不仅限于 PutObject,它给我带来了很多与双通配符冲突的结果,即使对于 s3:RestoreObject.

等其他操作也是如此

无论如何,我不确定问题出在哪里,但您的政策是正确的 - 在这种情况下请忽略 IAM 政策模拟器。

如果您有权访问 AWS Support,我会在那里创建一个支持票证,或者 post 这个问题与 AWS forums.

上的潜在错误相同

结果相互矛盾的证据,即使我已经完全重新创建了您的场景: