我如何在S3存储措施策略中执行或条件



我正在制定S3存储措施策略。这个想法是明确拒绝对帐户中的所有IAM用户的访问,但明确授予的用户。

我找到了一篇博客文章,该文章说明了如何限制对特定用户的访问。它运行良好。但是,我想将语法扩展到包含允许访问的第二个IAM用户。这实际上是一个或条件。

,但是,我对Json非常陌生,我不确定该如何处理。

这是用于限制访问单个用户的策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::my-bucket",
                "arn:aws:s3:::my-bucket/*"
            ],
            "Condition": {
                "StringNotLike": {
                    "aws:userId": [
                        "AIDA<obfuscated id>:*",
                        "AIDA<obfuscated id>",
                        "111111111111"
                    ]
                }
            }
        }
    ]
}

任何人都可以帮助我编辑上述JSON以允许我指定可以允许访问的其他用户ID的条件吗?

advthanksance!

好吧,我发现了这个。

首先,我尝试在Condition中添加第二个StringgNotLike子句,但这无效。

进行了更多的阅读后,我意识到条件子句接受多个键/值对。实际上,我在问题中显示的原始政策已经做到了。我只需要在已经存在的数组中添加更多值。

有效的策略,看起来像这样:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::my-private-bucket",
                "arn:aws:s3:::my-private-bucket/*"
            ],
            "Condition": {
                "StringNotLike": {
                    "aws:userId": [
                        "AIDA<obfuscated-id-1>:*",
                        "AIDA<obfuscated-id-1>",
                        "AIDA<obfuscated-id-2>:*",
                        "AIDA<obfuscated-id-2>",
                        "111111111111"
                    ]
                }
            }
        }
    ]
}

当我意识到密钥已经指定了一个值数组时,我只是在数组中添加了第二个用户ID,并且效果很好。

相关内容

  • 没有找到相关文章