为SAML的IAM角色创建策略

时间:2019-05-03 08:27:19

标签: amazon-web-services saml saml-2.0 amazon-iam

我正在尝试为联盟用户的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提供者创建策略和角色吗?

2 个答案:

答案 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提供者创建角色,则该角色将自动在其中内置信任关系。因此,只需要添加权限即可。