进程凭证提供者 - AWS SDKs和工具

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

进程凭证提供者

SDKs提供一种针对自定义用例扩展凭证提供者链的方法。此提供程序可用于提供自定义实现,例如从本地凭证存储中检索凭证或与本地身份提供商集成。

例如,Ro IAM les Anywhere 使用credential_process来代表您的应用程序获取临时证书。要对此用途配置 credential_process,请参阅 IAM Roles Anywhere

注意

以下内容描述了一种从外部进程获取凭据的方法,如果您在外部进程之外运行软件,则可以使用该方法。 AWS。 如果你正在建造 AWS 计算资源,请使用其他凭据提供程序。如果使用此选项,则应确保使用操作系统的安全最佳实践尽可能锁定配置文件。确认您的自定义凭证工具未向写入任何机密信息StdErr,因为和 SDKs AWS CLI 可以捕获和记录此类信息,从而有可能将其暴露给未经授权的用户。

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

credential_process-共享 AWS config文件设置

指定SDK或工具代表您运行的外部命令,以生成或检索要使用的身份验证凭据。该设置指定了SDK将要调用的程序/命令的名称。当SDK调用该进程时,它会等待进程向其写入JSON数据。stdout自定义提供者必须以特定格式返回信息。该信息包含SDK或工具可用于对您进行身份验证的凭据。

注意

进程凭证提供者是 凭证提供程序链 的一部分。但是,只有在本系列中的其他几个提供者之后,才会检查进程凭证提供者。因此,如果您希望您的程序使用此提供者的凭证,则必须从配置中删除其他有效的凭证提供者或使用其他配置文件。或者,与其依赖凭证提供者链自动发现哪个提供者返回了有效凭证,不如在代码中指定使用的进程凭证提供者。创建服务客户端时,可直接指定凭证来源。

指定凭证程序的路径

该设置的值是一个字符串,其中包含SDK或开发工具代表您运行的程序的路径:

  • 路径和文件名只能由以下字符组成:A-Z、a-z、0-9、连字符(-)、下划线(_)、句点(.)、正斜杠(/)、反斜杠(\)和空格。

  • 如果路径或文件名包含空格,请将完整路径和文件名用双引号 (" ") 括起来。

  • 如果参数名称或参数值包含空格,则用双引号 (" ") 将该元素括起来。仅括起来名称或值,而不是名称值对。

  • 请勿在字符串中包含任何环境变量。例如,您不能包含 $HOME%USERPROFILE%

  • 不要将主文件夹指定为 ~。* 您必须指定完整路径或基文件名。如果存在基本文件名,则系统会尝试在 PATH 环境变量指定的文件夹中查找该程序。路径因操作系统而异:

    以下示例显示了在 Linux/macOS 上的共享 config 文件中设置 credential_process。

    credential_process = "/path/to/credentials.sh" parameterWithoutSpaces "parameter with spaces"

    以下示例显示了在 Windows 上的共享 config 文件中设置 credential_process。

    credential_process = "C:\Path\To\credentials.cmd" parameterWithoutSpaces "parameter with spaces"
  • 可以在专用配置文件中指定:

    [profile cred_process] credential_process = /Users/username/process.sh region = us-east-1

凭证计划的有效输出

SDK运行配置文件中指定的命令,然后从标准输出流中读取数据。无论是脚本还是二进制程序,您指定的命令都必须生成STDOUT符合以下语法的JSON输出。

{ "Version": 1, "AccessKeyId": "an AWS access key", "SecretAccessKey": "your AWS secret access key", "SessionToken": "the AWS session token for temporary credentials", "Expiration": "RFC3339 timestamp for when the credentials expire" }
注意

截至撰写本文之时,Version 密钥必须设置为 1。随时间推移和该结构的发展,该值可能会增加。

Expiration钥是一个RFC3339格式化的时间戳。如果该Expiration密钥未出现在工具的输出中,则SDK假设这些证书是不会刷新的长期凭证。否则,将其视为临时凭证,并通过在其过期前重新运行 credential_process 命令来自动刷新凭证。

注意

SDK不会像承担角色凭据那样缓存外部进程凭证。如果需要缓存,则必须在外部进程中实现。

外部进程可以返回非零返回代码,以指示在检索凭证时发生错误。

兼容 AWS SDKs

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