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

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

代入角色凭证提供者

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

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

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

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

代入角色凭证提供者设置

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

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

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

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

默认值: 3600 秒 (1 小时)

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

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

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

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

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

默认值:无。

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

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

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

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

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

默认值:无。

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

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

mfa_serial = arn:aws:iam::123456789012:mfa/my-user-name
role_arn - 共享 Amazon config 文件设置

指定要用于执行使用此配置文件请求操作的 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 - 共享 Amazon config 文件设置

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

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

有效值:当 Amazon CLI 或 Amazon 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 - 共享 Amazon config 文件设置

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

如果您指定的配置文件也是代入角色配置文件,则将按顺序代入每个角色以完全解析凭证。当 SDK 遇到带有凭证的配置文件时,此链将会停止。角色链限制您的 Amazon CLI 或 Amazon API 角色会话,限制为最长 1 小时并且不可增加。有关更多信息,请参阅 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 操作来完成此操作。然后,代码会使用这些临时凭证来访问 Amazon 资源。指定的角色必须附加有允许运行请求的代码运行的 IAM 权限策略,例如命令、Amazon Web Service 或 API 方法。

web_identity_token_file - 共享 Amazon config 文件设置

指定一个文件的路径,该文件包含由 支持的 OAuth 2.0 t提供者OpenID Connect ID 身份提供者提供的访问令牌。

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

默认值:无。

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

与 Amazon SDK 的兼容性

以下 SDK 支持本主题中所述的功能和设置。所有部分例外情况均已注明。

SDK 支持 备注或更多信息
Amazon CLI v2
适用于 C++ 的 SDK 部分 credential_source不支持。duration_seconds不支持。mfa_serial不支持。
适用于 V2(1.x)的 SDK
适用于 Go 1.x (V1) 的 SDK 要使用共享 config 文件设置,必须开启从配置文件加载的功能;请参阅会话
适用于 Java 2.x 的 SDK 部分 不支持 mfa_serial
适用于 Java 1.x 的 SDK 部分 不支持 mfa_serial
适用于 JavaScript 3.x 的软件开发工具包
适用于 JavaScript 2.x 的 SDK 部分 不支持 credential_source
适用于 Kotlin 的 SDK
适用于 .NET 3.x 的 SDK
适用于 PHP 3.x 的 SDK
适用于 Python (Boto3) 的 SDK
适用于 Ruby 3.x 的 SDK
适用于 Rust 的 SDK
用于 PowerShell