本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
代入角色
假设角色涉及使用一组临时安全凭证来访问您原本无法访问的 AWS 资源。这些临时凭证由访问密钥 ID、秘密访问密钥和安全令牌组成。要了解有关 AWS Security Token Service(AWS STS)API 请求的更多信息,请参阅《AWS Security Token Service API 参考》中的操作。
要设置您的 SDK 或工具来代入角色,必须先创建或标识要代入的特定角色。IAM 角色由角色 Amazon 资源名称(ARN)进行唯一标识。角色与另一个实体建立信任关系。使用该角色的受信任实体可能是一个 AWS 服务 或另一个 AWS 账户,一个 Web 标识提供者或 OIDC 或 SAML 联合身份验证。有关 IAM 角色的更多一般信息,请参阅《IAM 用户指南》中的 IAM 角色。
标识 IAM 角色后,如果您受到该角色的信任,则可以将您的 SDK 或工具配置为使用该角色授予的权限。要做到这一点,请 代入 IAM 角色 或 使用 Web 身份或 OpenID Connect 联合身份验证。
代入 IAM 角色
代入角色时,AWS STS 返回一组临时安全凭证。这些凭证来自另一个配置文件或运行代码的实例或容器。代入角色的其他示例包括使用 AWS CodeCommit 跨 AWS 账户 账户或从 AWS CodeBuild 中访问另一个账户来管理来自 Amazon EC2 的多个 AWS 账户 账户。
步骤 1:设置 IAM 角色
要设置您的 SDK 或工具来代入角色,必须先创建或标识要代入的特定角色。IAM 角色使用角色 ARN 进行唯一标识。角色与另一个实体建立信任关系,通常是在您的账户内或用于跨账户存取。要了解更多信息,请参阅 IAM 用户手册中的创建 IAM 角色。
步骤 2:配置 SDK 或工具
将 SDK 或工具配置为从 credential_source
或 source_profile
获取凭证。
credential_source
用于从 Amazon ECS 容器、Amazon EC2 实例或环境变量中获取凭证。
source_profile
用于从另一个配置文件获取凭证。source_profile
还支持角色链,即配置文件的层次结构,然后使用代入的角色来代入另一个角色。
当您在配置文件中指定此选项时,SDK 会自动为您发出相应的 AWS STS AssumeRole
API 调用。要通过代入角色来检索和使用临时凭证,请在共享 AWS config
文件中指定以下配置值。有关这些设置各自的更多信息,请参阅 代入角色凭证提供者设置 节。
-
role_arn
- 来自您在步骤 1 中创建的 IAM 角色 -
配置
source_profile
或credential_source
-
(可选)
duration_seconds
-
(可选)
external_id
-
(可选)
mfa_serial
-
(可选)
role_session_name
以下示例显示了共享 config
文件中两个代入角色选项的配置:
role_arn = arn:aws:iam::
123456789012
:role/my-role-name
source_profile =profile-name-with-user-that-can-assume-role
role_arn = arn:aws:iam::
123456789012
:role/my-role-name
credential_source =Ec2InstanceMetadata
有关所有代入角色凭证提供程序设置的详细信息,请参阅本指南中的 代入角色凭证提供者。
使用 Web 身份或 OpenID Connect 联合身份验证
在创建需要访问 AWS 的移动应用程序或基于客户端的 Web 应用程序时,AWS STS 会为通过公共身份提供者(IdP)进行身份验证的联合用户返回一组临时安全凭证。公共身份提供者示例包括 Login with Amazon、Facebook、Google 或任何 OpenID Connect (OIDC) 兼容身份提供者。使用这种方法,您的用户不需要自己的身份 AWS 或 IAM 身份。
如果您使用的是 Amazon Elastic Kubernetes Service,则此功能允许您为每个容器指定不同的 IAM 角色。Kubernetes 提供了向您的容器分发 OIDC 令牌的功能,该凭证提供者使用这些令牌来获取临时凭证。有关此 Amazon EKS 配置的更多信息,请参阅《Amazon EKS 用户指南》中的服务账户的 IAM 角色。但是,对于更简单的选项,我们建议您改用 Amazon EKS 容器组身份,前提是您的 SDK 支持它。
步骤 1:设置身份提供者和 IAM 角色
如果要使用外部 IdP 配置联合身份验证,可以使用 IAM 身份提供者,以将外部 IdP 及其配置告知 AWS。这样将在您的 AWS 账户 和外部 IdP 之间建立信任。在将 SDK 配置为使用 Web 身份令牌进行身份验证之前,必须先设置身份提供者(IdP)和用于访问它的 IAM 角色。要进行设置,请参阅 IAM 用户指南中的 创建 Web 身份或 OpenID Connect 联合身份验证角色(控制台)。
步骤 2:配置 SDK 或工具
将 SDK 或工具配置为使用来自 AWS STS 的 Web 身份令牌进行身份验证。
当您在配置文件中指定此选项时,SDK 会自动为您发出相应的 AWS STS AssumeRoleWithWebIdentity
API 调用。要使用 Web 身份联合验证来检索和使用临时凭证,您可以在共享 AWS config
文件中指定以下配置值。有关这些设置各自的更多信息,请参阅 代入角色凭证提供者设置 节。
-
role_arn
- 来自您在步骤 1 中创建的 IAM 角色 -
web_identity_token_file
- 来自外部 IdP -
(可选)
duration_seconds
-
(可选)
role_session_name
以下是使用 Web 身份代入角色的共享 config
文件配置示例:
[profile
web-identity
] role_arn=arn:aws:iam::123456789012
:role/my-role-name
web_identity_token_file=/path/to/a/token
注意
有关应用程序的信息,我们建议使用 Amazon Cognito。Amazon Cognito 充当身份凭证代理程序并为您完成许多联合身份验证工作。但是,Amazon Cognito 身份提供者不像其他身份提供者那样包含在 SDK 和核心工具库中。要访问 Amazon Cognito API,请在您的 SDK 或工具的构建或库中包含 Amazon Cognito 服务客户端。有关 AWS SDK 的使用方法,请参阅 Amazon Cognito 开发人员指南中的 代码示例。
有关所有代入角色凭证提供程序设置的详细信息,请参阅本指南中的 代入角色凭证提供者。