本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
代入角色凭证提供者
注意
如需了解设置页面布局或解释后面的 Support b y Amazon SDKs 和 tools 表格的帮助,请参阅了解本指南的设置页面。
假设角色涉及使用一组临时安全凭证来访问您原本无法访问的 Amazon 资源。这些临时凭证由访问密钥 ID、秘密访问密钥和安全令牌组成。
要设置您的 SDK 或工具来代入角色,必须先创建或标识要代入的特定角色。IAM 角色由角色 Amazon 资源名称(ARN)进行唯一标识。角色与另一个实体建立信任关系。使用该角色的可信实体可能是 Amazon Web Services 服务、另一个、Web 身份提供商 Amazon Web Services 账户、OIDC 或 SAML 联合体。
标识 IAM 角色后,如果您受到该角色的信任,则可以将您的 SDK 或工具配置为使用该角色授予的权限。要执行此操作,请使用以下设置。
有关开始使用这些设置的指导,请参阅本指南中的 假设一个拥有身份验证 Amazon 凭证 Amazon SDKs 和工具的角色。
代入角色凭证提供者设置
使用以下方法配置此功能:
credential_source
-共享 Amazonconfig
文件设置-
在 Amazon EC2 实例或 Amazon 弹性容器服务容器中使用,用于指定 SDK 或工具可以在何处找到有权代入您使用
role_arn
参数指定的角色的证书。默认值: 无
有效值:
-
环境 – 指定 SDK 或工具从环境变量 AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY 检索源凭证。
-
Ec@@ 2 InstanceMetadata — 指定软件开发工具包或工具将使用附加到 EC2 实例配置文件的 IAM 角色来获取源证书。
-
EcsContainer— 指定软件开发工具包或工具将使用附加到 ECS 容器的 IAM 角色来获取源证书。
不能在同一配置文件中同时指定
credential_source
和source_profile
。在
config
文件中设置此项以表明证书应来自亚马逊的示例 EC2:credential_source = Ec2InstanceMetadata role_arn = arn:aws:iam::
123456789012
:role/my-role-name
-
duration_seconds
-共享 Amazonconfig
文件设置-
指定角色会话的最大持续时间(以秒为单位)。
仅当配置文件指定代入角色时,此设置才适用。
默认值: 3600 秒 (1 小时)
有效值:该值的范围在 900 秒(15 分钟)到角色配置的最大会话持续时间(43200 秒或 12 小时)之间。有关更多信息,请参阅 IAM 用户指南中的 查看角色的最大会话持续时间设置。
在
config
文件中设置此项的示例:duration_seconds =
43200
external_id
-共享 Amazonconfig
文件设置-
指定第三方用于在其客户账户中代入角色的唯一标识符。
仅当配置文件指定代入角色且该角色的信任策略需要
ExternalId
值时,此设置才适用。该值映射到配置文件指定角色时传递给AssumeRole
操作的ExternalId
参数。默认值:无。
有效值:请参阅 IAM 用户指南中的如何在向第三方授予对您的 Amazon 资源的访问权限时使用外部 ID。
在
config
文件中设置此项的示例:external_id =
unique_value_assigned_by_3rd_party
mfa_serial
-共享 Amazonconfig
文件设置-
指定用户在代入角色时必须使用的多重身份验证(MFA)设备的标识或序列号。
代入角色时,如果该角色的信任策略包含需要 MFA 身份验证的条件,则此项为必需项。有关 MFA 的更多信息,请参阅 IAM 用户指南中的 IA M 中的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
-共享 Amazonconfig
文件设置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
-共享 Amazonconfig
文件设置AWS_ROLE_SESSION_NAME
- 环境变量aws.roleSessionName
-JVM 系统属性:仅限 Java/Kotlin-
指定要附加到角色会话的名称。此名称显示在与此会话关联的条目的 Amazon CloudTrail 日志中,该会话可能在审核时有用。有关详细信息,请参阅《CloudTrail用户指南》中的 “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
-共享 Amazonconfig
文件设置-
指定其他配置文件,其凭证用于代入由原始配置文件中的
role_arn
设置指定的角色。要了解如何在共享credentials
文件 Amazonconfig
和文件中使用配置文件,请参阅共享config文件和credentials文件。如果您指定的配置文件也是代入角色配置文件,则将按顺序代入每个角色以完全解析凭证。当 SDK 遇到带有凭证的配置文件时,此链将会停止。角色链将您的 Amazon CLI 或 Amazon API 角色会话限制为最长一小时,并且无法延长。有关更多信息,请参阅 IAM 用户指南中的角色术语和概念。
默认值:无。
有效值:由
config
和credentials
文件中定义的配置文件的名称组成的文本字符串。还必须在当前配置文件中指定role_arn
的值。不能在同一配置文件中同时指定
credential_source
和source_profile
。在配置文件中设置此项的示例:
[profile
A
] source_profile =B
role_arn = arn:aws:iam::123456789012
:role/RoleA
role_session_name =ProfileARoleSession
[profileB
] 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 Anywhere 角色进行身份验证 Amazon SDKs 和工具来获取 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
[profileB
] credential_source=Ec2InstanceMetadataProfile
A
将使用来自 Amazon EC2 实例的证书担任指定角色,并将自动续订证书。 web_identity_token_file
-共享 Amazonconfig
文件设置AWS_WEB_IDENTITY_TOKEN_FILE
- 环境变量aws.webIdentityTokenFile
-JVM 系统属性:仅限 Java/Kotlin-
指定文件路径,该文件包含来自支持的 OAuth 2.0 提供商或 OpenID Connect ID 身份
提供商 的访问令牌。 此设置允许使用 Web 身份联合验证提供者(例如 Google
、Facebook 和 Amazon 等)进行身份验证。SDK 或开发人员工具加载此文件的内容,并在代表您调用 AssumeRoleWithWebIdentity
操作时将其作为WebIdentityToken
参数传递。默认值:无。
有效值:此值必须是路径和文件名。该文件必须包含身份提供商向您提供的 OAuth 2.0 访问令牌或 OpenID Connect 令牌。相对路径被视为相对于进程工作目录的相对路径。
Support Amazon SDKs by 和工具
以下内容 SDKs 支持本主题中描述的功能和设置。所有部分例外情况均已注明。 适用于 Java 的 Amazon SDK 和 适用于 Kotlin 的 Amazon SDK 唯一支持任何 JVM 系统属性设置。
SDK | 支持 | 备注或更多信息 |
---|---|---|
Amazon 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 的软件开发工具包 | 是 | |
适用于 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 | 是 | |
用于 PowerShell | 是 |