针对第三方身份提供商创建角色(联合身份验证) - AWS Identity and Access Management

针对第三方身份提供商创建角色(联合身份验证)

您可以使用身份提供程序而不必在 AWS 账户 中创建 IAM 用户。利用身份提供程序 (IdP),您可以管理 AWS 外部的用户身份,并向这些外部用户身份授予访问您账户中的 AWS 资源的权限。有关联合和身份提供程序的更多信息,请参阅身份提供程序和联合身份验证

为联合身份用户创建角色(控制台)

为联合身份用户创建角色的过程取决于您选择的第三方提供商:

为联合访问创建角色 (AWS CLI)

从 AWS CLI 中为支持的身份提供程序(OIDC 或 SAML)创建角色的步骤是相同的。区别在于,您在先决条件步骤中创建的信任策略的内容不同。首先,按照先决条件部分中针对您正在使用的提供商类型的步骤操作:

从 AWS CLI 创建角色涉及几个步骤。当您使用控制台创建角色时,很多步骤会自动完成,但是使用 AWS CLI 时,您必须自行完成每一个步骤。您必须创建角色,然后为角色分配权限策略。(可选)您还可以为您的角色设置权限边界

为联合身份创建角色 (AWS CLI)
  1. 创建角色:aws iam create-role

  2. 将权限策略附加到角色:aws iam attach-role-policy

    或者

    为角色创建内联权限策略:aws iam put-role-policy

  3. (可选)通过附加标签来向角色添加自定义属性:aws iam tag-role

    有关更多信息,请参阅 管理 IAM 角色(AWS CLI 或 AWS API)的标签

  4. (可选)为角色设置权限边界aws iam put-role-permissions-boundary

    权限边界控制角色可以具有的最大权限。权限边界是一项高级 AWS 功能。

以下示例演示了在简单环境中创建身份提供程序角色的前两个最常见的步骤。此示例允许 123456789012 账户中的任何用户担任角色并查看 example_bucket Amazon S3 存储桶。该示例还假设您在运行 Windows 的计算机上运行 AWS CLI,并且已使用您的凭证配置了 AWS CLI。有关更多信息,请参阅配置 AWS Command Line Interface

以下示例信任策略是为用户使用 Amazon Cognito 登录时的移动应用程序设计的。在此示例中,us-east:12345678-ffff-ffff-ffff-123456 表示由 Amazon Cognito 分配的身份池 ID。

{ "Version": "2012-10-17", "Statement": { "Sid": "RoleForCognito", "Effect": "Allow", "Principal": {"Federated": "cognito-identity.amazonaws.com"}, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": {"StringEquals": {"cognito-identity.amazonaws.com:aud": "us-east:12345678-ffff-ffff-ffff-123456"}} } }

下面的权限策略仅允许担任角色的任何人对 example_bucket Amazon S3 存储桶执行 ListBucket 操作。

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::example_bucket" } }

要创建此 Test-Cognito-Role 角色,您必须首先将上述名为 trustpolicyforcognitofederation.json 的信任策略和上述名为 permspolicyforcognitofederation.json 的权限策略保存到您的本地 policies 驱动器中的 C: 文件夹。然后您可以使用以下命令来创建角色并附加内联策略。

# Create the role and attach the trust policy that enables users in an account to assume the role. $ aws iam create-role --role-name Test-Cognito-Role --assume-role-policy-document file://C:\policies\trustpolicyforcognitofederation.json # Attach the permissions policy to the role to specify what it is allowed to do. aws iam put-role-policy --role-name Test-Cognito-Role --policy-name Perms-Policy-For-CognitoFederation --policy-document file://C:\policies\permspolicyforcognitofederation.json

为联合访问创建角色 (AWS API)

从 AWS CLI 中为支持的身份提供程序(OIDC 或 SAML)创建角色的步骤是相同的。区别在于,您在先决条件步骤中创建的信任策略的内容不同。首先,按照先决条件部分中针对您正在使用的提供商类型的步骤操作:

为联合身份创建角色 (AWS API)
  1. 创建角色:CreateRole

  2. 将权限策略附加到角色:AttachRolePolicy

    或者

    为角色创建内联权限策略:PutRolePolicy

  3. (可选)通过附加标签来向用户添加自定义属性:TagRole

    有关更多信息,请参阅 管理 IAM 用户(AWS CLI 或 AWS API)的标签

  4. (可选)为角色设置权限边界PutRolePermissionsBoundary

    权限边界控制角色可以具有的最大权限。权限边界是一项高级 AWS 功能。