我正在尝试为联盟用户的IAM角色创建策略(通过SAML提供程序进行身份验证)。我正在关注Creating a Role for SAML 2.0 Federation (Console) - AWS Identity and Access Management:
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": "sts:AssumeRoleWithSAML",
"Principal": {"Federated": "arn:aws:iam::ACCOUNT-ID-WITHOUT-HYPHENS:saml-provider/PROVIDER-NAME"},
"Condition": {"StringEquals": {"SAML:aud": "https://signin.aws.amazon.com/saml"}}
}
}
但是出现以下错误:
This policy contains the following error: Has prohibited field Principal For more information about the IAM policy grammar, see AWS IAM Policies
我尝试使用Google进行搜索,但没有成功。 AWS Trust Policy Has prohibited field Principal - Stack Overflow的答案也没有帮助。有人可以告诉我如何为SAML提供者创建策略和角色吗?
答案 0 :(得分:0)
该政策有误。 您在声明中缺少 [] 。
正确的政策将是:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Federated": "<COPY & PASTE SAML ARN VALUE HERE>"
},
"Action": "sts:AssumeRoleWithSAML",
"Condition": {
"StringEquals": {
"SAML:aud": "https://signin.aws.amazon.com/saml"
}
}
}
]
}
尝试这个
答案 1 :(得分:0)
问题解决了。该文档过时且具有误导性。如果您通过IAM控制台为SAML提供者创建角色,则该角色将自动在其中内置信任关系。因此,只需要添加权限即可。