本文档 AWS CLI 仅适用于版本 1。有关版本 2 的文档 AWS CLI,请参阅版本 2 用户指南。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用外部流程采购凭证 AWS CLI
警告
本主题讨论从外部进程获取凭证。如果生成凭证的命令可由未经批准的进程或用户访问,则可能存在安全风险。我们建议您使用 AWS CLI 和提供的受支持、安全的替代方案, AWS 以降低凭证泄露的风险。请务必保管好 config
文件及任何支持文件和工具,以防泄露。
确保您的自定义凭证工具不会向其写入任何机密信息,StdErr
因为SDKs和 AWS CLI 可以捕获和记录此类信息,从而有可能将其暴露给未经授权的用户。
如果您有一种生成或查找证书的方法,但该方法不受直接支持 AWS CLI,则可以通过配置config
文件中的credential_process
设置来配置 AWS CLI 为使用该凭证。
例如,您可以在 config
文件中包含类似于以下内容的条目。
[profile developer] credential_process = /opt/bin/awscreds-custom --username helen
语法
要以与任何操作系统兼容的方式创建此字符串,请遵循以下规则:
-
如果路径或文件名包含空格,请将完整路径和文件名用双引号 (" ") 括起来。该路径和文件名仅包含以下字符:A-Z a-z 0-9 - _ . 空格
-
如果参数名称或参数值包含空格,则用双引号 (" ") 将该元素括起来。仅括起来名称或值,而不是名称值对。
-
请勿在字符串中包含任何环境变量。例如,您不能包含
$HOME
或%USERPROFILE%
。 -
不要将主文件夹指定为
~
。您必须指定完整路径。
Windows 示例
credential_process = "C:\Path\To\credentials.cmd" parameterWithoutSpaces "parameter with spaces"
Linux 或 macOS 示例
credential_process = "/Users/Dave/path/to/credentials.sh" parameterWithoutSpaces "parameter with spaces"
凭证计划的预期输出
AWS CLI 运行配置文件中指定的命令,然后从中读取数据STDOUT
。您指定的命令必须生成与以下语法STDOUT
相匹配的JSON输出。
{ "Version": 1, "AccessKeyId": "
an AWS access key
", "SecretAccessKey": "your AWS secret access key
", "SessionToken": "the AWS session token for temporary credentials
", "Expiration": "ISO8601 timestamp when the credentials expire
" }
注意
截至撰写本文之时,Version
密钥必须设置为 1
。随时间推移和该结构的发展,该值可能会增加。
Expiration
密钥是一个 ISO8601Expiration
密钥未出现在工具的输出中,则CLI假定这些凭证是不会刷新的长期凭证。否则,将其视为临时凭证,并通过在其过期前重新运行 credential_process
命令来自动刷新凭证。
注意
AWS CLI 不会像承担角色凭据那样缓存外部进程凭证。如果需要缓存,则必须在外部进程中实现。
外部进程可以返回非零返回代码,以指示在检索凭证时发生错误。