创建一个条件策略(Condition Policy),该策略限制了哪些联合身份用户可以假设该角色。这个条件策略需要基于你随机生成的会话名称。
然后在IAM role中使用策略语句引用该条件策略并配置其条件参数。条件参数是可选参数的键值对,可以用于自定义使用者ID标识符和配置部分IAM用户可以在所述条件下扮演的角色(例如,您不能为所有用户均指定账户)。
这是一个完整的示例,你可以基于这个示例修改来实现你自己的目标:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringLike": {
                    "sts:RoleSessionName": "AllowedUser*"
                }
            },
            "Principal": {
                "Federated": "arn:aws:iam::123456789012:oidc-provider/oauth2-provider.example.com"
            },
            "Resource": "arn:aws:iam::123456789012:role/allowed-role"
        },
        {
            "Effect": "Deny",
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringNotLike": {
                    "sts:RoleSessionName": "AllowedUser*"
                }
            },
            "Principal": {
                "Federated": "arn:aws:iam::123456789012:oidc-provider/oauth2-provider.example.com"
            },
            "Resource": "arn:aws:iam::123456789012:role/allowed-role"
        }
    ]
}
查端代码,我们应该发现要同时完成 IAM 策略和身份提供商的设置,以限制只有 AllowedUser 能扮演此角色。请注意,此范例假设你已经在 IAM 中创建了一个名为 allowed-role 的角色和一个名为 oauth2-provider.example.com 的 OpenID Connect 身份提供商。