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

代入角色凭证提供者

注意

如需获得相关帮助,以了解设置页面的布局或解释后面的 AWS SDK 和工具支持表,请参阅了解本指南的设置页面

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

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

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

有关开始使用这些设置的指导,请参阅本指南中的 使用 AWS 凭证代入角色来进行 AWS SDK 和工具的身份验证

代入角色凭证提供者设置

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

credential_source - 共享 AWS config 文件设置

在 Amazon EC2 实例或 Amazon Elastic Container Service 容器中使用,指定 SDK 或工具在何处可以查找授权用于代入通过 role_arn 参数指定的角色的凭证。

默认值:

有效值:

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

config 文件中设置此项以表明凭证应来自 Amazon 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 用户指南 中的 如何使用外部 ID 为您的 AWS 资源授予访问第三方 的权限。

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

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

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

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

默认值:无。

有效值: 该值可以是硬件设备(例如 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 - 共享 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 - 使用由当前环境变量标识的凭证或附加到 Amazon EC2 实例配置文件或 Amazon ECS 容器实例的凭证。

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

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

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

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

有效值:当 AWS CLI 或 AWS API 代表您调用 AssumeRole 操作(或 AssumeRoleWithWebIdentity 操作等操作)时,提供给 RoleSessionName 参数。该值成为您可以查询的代入角色用户 Amazon 资源名称(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 设置指定的角色。要了解如何在共享 AWS configcredentials 文件中使用配置文件,请参阅 共享config文件和credentials文件

如果您指定的配置文件也是代入角色配置文件,则将按顺序代入每个角色以完全解析凭证。当 SDK 遇到带有凭证的配置文件时,此链将会停止。角色链限制您的 AWS CLI 或 AWS API 角色会话,限制为最长 1 小时并且不可增加。有关更多信息,请参阅 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 进行 AWS SDK 和工具的身份验证 提供的凭证助手来获取 AWS SDK 的凭证。然后,代码会使用这些临时凭证来访问 AWS 资源。指定的角色必须附加有允许运行请求的代码运行的 IAM 权限策略,例如命令、AWS 服务 或 API 方法。配置文件 A 执行的每个操作都具有包含在 CloudTrail 日志中的角色会话名称。

对于第二个角色链示例,如果您在 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

配置文件 A 将使用来自 Amazon EC2 实例的凭证来代入指定角色,并且会自动续订凭证。

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 SDK 和工具支持

以下 SDK 支持本主题中所述的功能和设置。所有部分例外情况均已注明。任何 JVM 系统属性设置都仅支持 适用于 Java 的 AWS SDK 和 适用于 Kotlin 的 AWS SDK。

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