创建一个条件策略(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 身份提供商。