针对第三方身份提供商创建角色(联合身份验证)
您可以使用身份提供程序而不必在 Amazon Web Services 账户 中创建 IAM 用户。利用身份提供程序 (IdP),您可以管理 Amazon 外部的用户身份,并向这些外部用户身份授予访问您账户中的 Amazon 资源的权限。有关联合和身份提供程序的更多信息,请参阅身份提供程序和联合身份验证。
为联合身份用户创建角色(控制台)
为联合身份用户创建角色的过程取决于您选择的第三方提供商:
-
有关 OpenID Connect(OIDC),请参阅 创建用于 OpenID Connect 联合身份验证(控制台)的角色。
-
有关 SAML 2.0,请参阅创建用于 SAML 2.0 联合身份验证的角色(控制台)。
为联合访问创建角色 (Amazon CLI)
从 Amazon CLI 中为支持的身份提供程序(OIDC 或 SAML)创建角色的步骤是相同的。区别在于,您在先决条件步骤中创建的信任策略的内容不同。首先,按照先决条件部分中针对您正在使用的提供商类型的步骤操作:
-
有关 OIDC 提供商,请参阅创建用于 OIDC 的角色的先决条件。
-
有关 SAML 提供商,请参阅创建用于 SAML 的角色的先决条件。
从 Amazon CLI 创建角色涉及几个步骤。当您使用控制台创建角色时,很多步骤会自动完成,但是使用 Amazon CLI 时,您必须自行完成每一个步骤。您必须创建角色,然后为角色分配权限策略。(可选)您还可以为您的角色设置权限边界。
为联合身份创建角色 (Amazon CLI)
-
创建角色:aws iam create-role
-
将权限策略附加到角色:aws iam attach-role-policy
或者
为角色创建内联权限策略:aws iam put-role-policy
-
(可选)通过附加标签来向角色添加自定义属性:aws iam tag-role
有关更多信息,请参阅 管理 IAM 角色(Amazon CLI 或 Amazon API)的标签。
-
(可选)为角色设置权限边界:aws iam put-role-permissions-boundary
权限边界控制角色可以具有的最大权限。权限边界是一项高级 Amazon 功能。
以下示例演示了在简单环境中创建身份提供程序角色的前两个最常见的步骤。此示例允许 123456789012
账户中的任何用户担任角色并查看 example_bucket
Amazon S3 存储桶。该示例还假设您在运行 Windows 的计算机上运行 Amazon CLI,并且已使用您的凭证配置了 Amazon CLI。有关更多信息,请参阅配置 Amazon 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
为联合访问创建角色 (Amazon API)
从 Amazon CLI 中为支持的身份提供程序(OIDC 或 SAML)创建角色的步骤是相同的。区别在于,您在先决条件步骤中创建的信任策略的内容不同。首先,按照先决条件部分中针对您正在使用的提供商类型的步骤操作:
-
有关 OIDC 提供商,请参阅创建用于 OIDC 的角色的先决条件。
-
有关 SAML 提供商,请参阅创建用于 SAML 的角色的先决条件。
为联合身份创建角色 (Amazon API)
-
创建角色:CreateRole
-
将权限策略附加到角色:AttachRolePolicy
或者
为角色创建内联权限策略:PutRolePolicy
-
(可选)通过附加标签来向用户添加自定义属性:TagRole
有关更多信息,请参阅 管理 IAM 用户(Amazon CLI 或 Amazon API)的标签。
-
(可选)为角色设置权限边界:PutRolePermissionsBoundary
权限边界控制角色可以具有的最大权限。权限边界是一项高级 Amazon 功能。