AWS Identity and Access Management
用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

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

您可以使用身份提供商而不必在 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 put-role-permissions-boundary

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

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

在此示例中,在您创建角色时,在第一个命令中包括以下信任策略。此信任策略允许 123456789012 账户中的用户使用 AssumeRole 操作代入角色,但前提是用户使用 SerialNumberTokenCode 参数提供 MFA 身份验证。有关 MFA 的更多信息,请参见 在 AWS 中使用多重身份验证 (MFA)

以下示例信任策略是为用户使用 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-cn: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. (可选)为角色设置权限边界PutRolePermissionsBoundary

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