0

aws:PrincipalTag可以在IAM 策略中设置多个值吗?

目前,我project在他们的 JWT 中有一个属性的联合用户,根据这个值,我可以访问我的 s3 存储桶中的特定“文件夹”。

对于具有以下值的 JWT:

"https://aws.amazon.com/tags": {
    "principal_tags": {
        "project": [
            "foo"
        ]
    }
}

和我的 AWS 政策:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "TagBasedAccess",
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::myawesomebucket",
            "Condition": {
                "StringLike": {
                    "s3:prefix": "${aws:PrincipalTag/project}/*"
                }
            }
        }
    ]
}

它成功授予用户访问权限arn:aws:s3:::myawesomebucket/foo/

现在我将使它适用于project属性中的多个值(授予对多个 s3“文件夹”的访问权限)。但我不知道如何执行此操作。

编辑:

在 AWS 文档(AWS 文档)中:

您可以使用自定义分隔符在单个标签中包含多个值。在此示例中,您可以将team = Engineering:QA 标签附加到 Zhang。要在此示例中使用团队标签控制对工程师的访问,您必须创建一个策略,以允许可能包括的每个配置Engineering,包括Engineering:QA

但他们没有说如何执行此操作...

4

1 回答 1

0

有一个与此问题相关的 AWS 文档: https ://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_multi-value-conditions.html#reference_policies_multi-key-or-value-conditions

直接引用文件:

要将您的条件与具有多个键值的请求上下文进行比较,您必须使用ForAllValuesForAnyValue集合运算符。这些限定符将集合操作功能添加到条件运算符,以便您可以针对多个条件值测试多个请求值。此外,如果您在策略中使用通配符或变量包含多值键,则还必须使用StringLike条件运算符。

请参阅原始文件以获取更多信息。例如,您可能想知道条件运算符和条件块在此上下文中如何工作。

于 2021-07-09T13:09:04.760 回答