为 SAML 的 IAM 角色创建策略

Creating Policy for SAML's IAM role

我正在尝试为我的联合身份用户(通过我的 SAML 提供商进行身份验证)创建一个 IAM 角色策略。我正在关注 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 但没有成功。 上的回答也没有帮助。谁能告诉我如何为我的 SAML 提供商创建策略和角色?

政策有误。 您在声明中缺少 []

正确的政策是:

{
  "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"
        }
      }
    }
  ]
}

试试这个

问题已解决。该文档陈旧且具有误导性。如果您通过 IAM 控制台为 SAML 提供商创建角色,它会自动在其中建立信任关系。所以,只需要添加权限。