代入角色凭证提供者 - Amazon SDKs 和工具
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

代入角色凭证提供者

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

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

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

有关开始使用这些设置的指导,请参阅本指南中的 扮演一个拥有 Amazon 证书的角色

代入角色凭证提供者设置

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

credential_source-共享 Amazon 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-共享 Amazon config文件设置

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

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

默认值: 3600 秒 (1 小时)

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

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

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

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

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

默认值:无。

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

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

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

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

在担任角色时,如果该角色的信任策略包含需要MFA身份验证的条件,则为必填项。有关的更多信息MFA,请参阅《IAM用户指南》IAM中的Amazon 多重身份验证

默认值:无。

有效值:该值可以是硬件设备的序列号(例如GAHT12345678),也可以是虚拟MFA设备的 Amazon 资源名称 (ARN)。的格式ARN是:arn:aws:iam::account-id:mfa/mfa-device-name

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

此示例假设一个名MyMFADevice为的虚拟MFA设备已为该账户创建并已为用户启用。

mfa_serial = arn:aws:iam::123456789012:mfa/MyMFADevice
role_arn-共享 Amazon 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-共享 Amazon config文件设置
AWS_ROLE_SESSION_NAME - 环境变量
aws.roleSessionName-JVM 系统属性:仅限 Java/Kotlin

指定要附加到角色会话的名称。此名称显示在与此会话关联的条目的 Amazon CloudTrail 日志中,该会话可能在审核时有用。有关详细信息,请参阅《Amazon CloudTrail 用户指南》中的CloudTrail userIdentity 元素

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

有效值:在或代表您 Amazon API调用AssumeRole操作( Amazon 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-共享 Amazon config文件设置

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

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

默认值:无。

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

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

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

[profile A] source_profile = B role_arn = arn:aws:iam::123456789012:role/RoleA role_session_name = ProfileARoleSession [profile B] credential_process = ./aws_signing_helper credential-process --certificate /path/to/certificate --private-key /path/to/private-key --trust-anchor-arn arn:aws:rolesanywhere:region:account:trust-anchor/TA_ID --profile-arn arn:aws:rolesanywhere:region:account:profile/PROFILE_ID --role-arn arn:aws:iam::account:role/ROLE_ID

在前面的示例中,A配置文件告诉SDK或工具自动查找关联B配置文件的凭证。在这种情况下,B配置文件使用提供的凭证帮助工具IAM Roles Anywhere来获取凭证。 Amazon SDK然后,代码会使用这些临时凭证来访问 Amazon 资源。指定的角色必须附加允许请求的代码运行的IAM权限策略,例如命令 Amazon Web Services 服务、或API方法。配置文件执行的每项操作的 CloudTrail 日志中A都包含角色会话名称。

关于角色链接的第二个示例,如果您在 Amazon Elastic Compute Cloud 实例上有一个应用程序,并且您想让该应用程序担任另一个角色,则可以使用以下配置。

[profile A] source_profile = B role_arn = arn:aws:iam::123456789012:role/RoleA role_session_name = ProfileARoleSession [profile B] credential_source=Ec2InstanceMetadata

Profile A 将使用来自 Amazon EC2 实例的证书担任指定角色,并将自动续订证书。

web_identity_token_file-共享 Amazon 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 令牌。相对路径被视为相对于进程工作目录的相对路径。

与之兼容 Amazon SDKs

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

SDK 支持 备注或更多信息
Amazon 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不支持。 duration_seconds不支持。
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