从外部进程加载临时凭证 - Amazon SDK for Java 2.x
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

从外部进程加载临时凭证

警告

以下描述了一种从外部进程获取临时凭证的方法。这可能有潜在的危险,因此请谨慎行事。如果可能的话,应该首选其他证书提供商。如果使用此选项,则应确保使用操作系统的安全最佳实践尽可能锁定config文件。

确保您的自定义证书工具不会向其中写入任何机密信息StdErr。开发工具和Amazon CLI可以捕获和记录此类信息,可能会将其向未经授权的用户公开。

使用适用于 Java 2.x 的 SDK,您可以从外部进程获取用于自定义用例的临时证书。配置此功能的方法有两种。

使用credential_process设置

如果您有提供临时证书的方法,则可以通过将该credential_process设置作为配置文件定义的一部分添加到config文件中来对其进行集成。您指定的值必须使用命令文件的完整路径。如果文件路径包含任何空格,则必须用引号将其括起来。

SDK 完全按照给定的方式调用命令,然后从中读取 JSON 数据stdout

以下示例说明如何将此设置用于不带空格的文件路径和带空格的文件路径。

Linux/macOS
文件路径中没有空格
[profile process-credential-profile] credential_process = /path/to/credential/file/credential_file.sh --custom-command custom_parameter
文件路径中的空格
[profile process-credential-profile] credential_process = "/path/with/space to/credential/file/credential_file.sh" --custom-command custom_parameter
Windows
文件路径中没有空格
[profile process-credential-profile] credential_process = C:\Path\To\credentials.cmd --custom_command custom_parameter
文件路径中的空格
[profile process-credential-profile] credential_process = "C:\Path\With Space To\credentials.cmd" --custom_command custom_parameter

以下代码片段演示了如何使用作为名为的配置文件一部分定义的临时证书来构建服务客户端process-credential-profile

Region region = Region.US_WEST_2; S3Client s3Client = S3Client.builder() .region(region) .credentialsProvider(ProfileCredentialsProvider.create("process-credential-profile")) .build();

有关使用外部进程作为临时证书来源的详细信息,请参阅《软件开发工具包和Amazon工具参考指南》中的流程证书部分

使用 ProcessCredentialsProvider

除了在config文件中使用设置外,您还可以使用 SDK 通过 Java 加载临时证书。ProcessCredentialsProvider

以下示例显示了如何使用ProcessCredentialsProvider和配置使用临时证书的服务客户端指定外部进程的各种版本。

Linux/macOS
文件路径中没有空格
ProcessCredentialsProvider credentials = ProcessCredentialsProvider .builder() .command("/path/to/credentials.sh optional_param1 optional_param2") .build(); S3Client s3 = S3Client.builder() .region(Region.US_WEST_2) .credentialsProvider(credentials) .build();
文件路径中的空格
ProcessCredentialsProvider credentials = ProcessCredentialsProvider .builder() .command("/path\\ with\\ spaces\\ to/credentials.sh optional_param1 optional_param2") .build(); S3Client s3 = S3Client.builder() .region(Region.US_WEST_2) .credentialsProvider(credentials) .build();
Windows
文件路径中没有空格
ProcessCredentialsProvider credentials = ProcessCredentialsProvider .builder() .command("C:\\Path\\To\\credentials.exe optional_param1 optional_param2") .build(); S3Client s3 = S3Client.builder() .region(Region.US_WEST_2) .credentialsProvider(credentials) .build();
文件路径中的空格
ProcessCredentialsProvider credentials = ProcessCredentialsProvider .builder() .command("\"C:\\Path\\With Spaces To\\credentials.exe\" optional_param1 optional_param2") .build(); S3Client s3 = S3Client.builder() .region(Region.US_WEST_2) .credentialsProvider(credentials) .build();