代入角色凭证提供者 - AWS SDKs和工具

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

代入角色凭证提供者

假设角色涉及使用一组临时安全凭证来访问您原本无法访问的 AWS 资源。这些临时凭证由访问密钥 ID、秘密访问密钥和安全令牌组成。

要将您的SDK或工具设置为代入角色,必须先创建或确定要担任的特定角色。IAM角色由角色唯一标识 Amazon 资源名称 (ARN)。角色与另一个实体建立信任关系。使用该角色的可信实体可能是 AWS 服务、另一个 AWS 账户、Web 身份提供商或OIDCSAML联合体。

确定IAM角色后,如果您受到该角色的信任,则可以将您的SDK或工具配置为使用该角色授予的权限。要执行此操作,请使用以下设置。

有关开始使用这些设置的指导,请参阅本指南中的 代入角色

代入角色凭证提供者设置

使用以下方法配置此功能:

credential_source-共享 AWS config文件设置

在 Amazon EC2 实例或 Amazon 弹性容器服务容器中使用,用于指定SDK或工具可以在何处找到有权担任您使用role_arn参数指定的角色的凭证。

默认值:

有效值:

不能在同一配置文件中同时指定 credential_sourcesource_profile

config文件中设置此项以表明证书应来自亚马逊的示例EC2:

credential_source = Ec2InstanceMetadata role_arn = arn:aws:iam::123456789012:role/my-role-name
duration_seconds-共享 AWS config文件设置

指定角色会话的最大持续时间(以秒为单位)。

仅当配置文件指定代入角色时,此设置才适用。

默认值: 3600 秒 (1 小时)

有效值:该值的范围在 900 秒(15 分钟)到角色配置的最大会话持续时间(43200 秒或 12 小时)之间。有关更多信息,请参阅IAM用户指南中的查看角色的最大会话持续时间设置

config 文件中设置此项的示例:

duration_seconds = 43200
external_id-共享 AWS config文件设置

指定第三方用于在其客户账户中代入角色的唯一标识符。

仅当配置文件指定代入角色且该角色的信任策略需要 ExternalId 值时,此设置才适用。该值映射到配置文件指定角色时传递给 AssumeRole 操作的 ExternalId 参数。

默认值:无。

有效值:请参阅《IAM用户指南》中的如何在向第三方授予对您的 AWS 资源的访问权限时使用外部 ID

config 文件中设置此项的示例:

external_id = unique_value_assigned_by_3rd_party
mfa_serial-共享 AWS config文件设置

指定用户在担任角色时必须使用的多因素身份验证 (MFA) 设备的标识号或序列号。

在担任角色时,如果该角色的信任策略包含需要MFA身份验证的条件,则为必填项。

默认值:无。

有效值:该值可以是硬件设备的序列号(例如GAHT12345678),也可以是虚拟MFA设备的 Amazon 资源名称 (ARN)。有关更多信息MFA,请参阅《IAM用户指南》中的配置MFA受保护的API访问权限

config 文件中设置此项的示例:

mfa_serial = arn:aws:iam::123456789012:mfa/my-user-name
role_arn-共享 AWS config文件设置
AWS_ROLE_ARN - 环境变量
aws.roleArn-JVM 系统属性:仅限 Java/Kotlin

指定要用于执行使用此配置文件请求的操作的IAM角色的 Amazon 资源名称 (ARN)。

默认值:无。

有效值:该值必须是IAM角色ARN的值,格式如下:arn:aws:iam::account-id:role/role-name

此外,您还必须指定以下设置之一

  • source_profile - 标识另一个配置文件,用于查找具有在此配置文件中代入该角色的权限的凭证。

  • credential_source— 使用由当前环境变量标识的凭证或附加到亚马逊EC2实例配置文件的凭证,或者使用亚马逊ECS容器实例。

  • web_identity_token_file— 为已在移动或网络应用程序中进行身份验证的用户使用公共身份提供商或任何与 OpenID Connect (OIDC) 兼容的身份提供商。

role_session_name-共享 AWS config文件设置
AWS_ROLE_SESSION_NAME - 环境变量
aws.roleSessionName-JVM 系统属性:仅限 Java/Kotlin

指定要附加到角色会话的名称。此名称显示在与此会话关联的条目的 AWS CloudTrail 日志中,该会话可能在审核时有用。

默认值:可选参数。如果未提供此值,只要配置文件代入角色,则将自动生成会话名称。

有效值:在或代表您 AWS API调用AssumeRole操作( AWS CLI 或诸如操作之类的AssumeRoleWithWebIdentity操作)时提供给RoleSessionName参数。该值成为您可以查询的代入角色用户 Amazon Resource Name (ARN) 的一部分,并作为该配置文件调用的操作的 CloudTrail 日志条目的一部分显示。

arn:aws:sts::123456789012:assumed-role/my-role-name/my-role_session_name.

config 文件中设置此项的示例:

role_session_name = my-role-session-name
source_profile-共享 AWS config文件设置

指定其他配置文件,其凭证用于代入由原始配置文件中的 role_arn 设置指定的角色。要了解如何在共享credentials文件 AWS config和文件中使用配置文件,请参阅共享config文件和credentials文件

如果您指定的配置文件也是代入角色配置文件,则将按顺序代入每个角色以完全解析凭证。当SDK遇到带有凭据的个人资料时,该链就会停止。角色链接将您的 AWS CLI 或 AWS API角色会话限制为最长一小时,并且无法延长。有关更多信息,请参阅IAM用户指南中的角色术语和概念

默认值:无。

有效值:configcredentials 文件中定义的配置文件的名称组成的文本字符串。还必须在当前配置文件中指定 role_arn 的值。

不能在同一配置文件中同时指定 credential_sourcesource_profile

在配置文件中设置此项的示例:

[profile A] source_profile = B role_arn = arn:aws:iam::123456789012:role/RoleA [profile B] aws_access_key_id=AKIAIOSFODNN7EXAMPLE aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY aws_session_token=IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZVERYLONGSTRINGEXAMPLE

在上一个示例中,A 配置文件使用 B 配置文件中的凭证。当您指定SDK或工具应使用A配置文件时,SDK或工具会自动查找关联B配置文件的凭证,并使用这些凭证请求指定IAM角色的临时证书。SDK或工具在后台使用 sts: AssumeRole 操作来完成此操作。然后,您的代码将使用这些临时证书来访问 AWS 资源。指定的角色必须附加允许请求的代码运行的IAM权限策略,例如命令 AWS 服务、或API方法。

web_identity_token_file-共享 AWS config文件设置
AWS_WEB_IDENTITY_TOKEN_FILE - 环境变量
aws.webIdentityTokenFile-JVM 系统属性:仅限 Java/Kotlin

指定文件路径,该文件包含来自支持的 OAuth 2.0 提供商或 OpenID Connect ID 身份提供商的访问令牌。

此设置允许使用 Web 身份联合验证提供者(例如 GoogleFacebookAmazon 等)进行身份验证。SDK或开发者工具加载此文件的内容,并在代表您调用AssumeRoleWithWebIdentity操作时将其作为WebIdentityToken参数传递。

默认值:无。

有效值:此值必须是路径和文件名。该文件必须包含身份提供商向您提供的 OAuth 2.0 访问令牌或 OpenID Connect 令牌。相对路径被视为相对于进程工作目录的相对路径。

兼容 AWS SDKs

以下内容SDKs支持本主题中描述的功能和设置。所有部分例外情况均已注明。 AWS SDK for Java 和 AWS SDK for Kotlin 唯一支持任何JVM系统属性设置。

SDK 支持 备注或更多信息
AWS CLI v2
SDK对于 C++ 部分 credential_source不支持。duration_seconds不支持。mfa_serial不支持。
SDK适用于 Go V2 (1.x)
SDK适用于 Go 1.x (V1) 要使用共享 config 文件设置,必须开启从配置文件加载的功能;请参阅会话
SDK适用于 Java 2.x 部分 mfa_serial 不支持。
SDK适用于 Java 1.x 部分 credential_source不支持。 mfa_serial不支持。JVM不支持系统属性。
SDK适用于 JavaScript 3.x
SDK适用于 JavaScript 2.x 部分 credential_source 不支持。
SDK对于 Kotlin 来说
SDK对于。 NET3.x
SDK适用于 PHP 3.x
SDK适用于 Python (Boto3)
SDK适用于 Ruby 3.x
SDK对于 Rust
SDK为斯威夫特
用于 PowerShell