外部プロセスからの一時的な認証情報をロードする - AWS SDK for Java 2.x

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

外部プロセスからの一時的な認証情報をロードする

警告

以下では、外部プロセスから一時的な認証情報を調達する方法について説明します。これは危険な場合があるため、注意して進めてください。可能であれば、他の認証情報プロバイダーの利用をお勧めします。このオプションを使用する場合は、使用しているオペレーティングシステムのセキュリティ上のベストプラクティスに従って、config ファイルができるだけロックされていることを確認する必要があります。

カスタム認証情報ツールが StdErr に秘密情報を書き込まないようにしてください。SDKsと AWS CLI は、このような情報をキャプチャしてログに記録し、不正ユーザーに公開する可能性があります。

SDK for Java 2.x では、カスタムユースケース用に外部プロセスから一時的な認証情報を取得できます。この機能を設定するには、次の 2 つの方法があります。

credential_process 設定を使用する

一時的な認証情報を提供する方法がある場合は、その credential_process 設定を config ファイル内のプロファイル定義の一部として追加することで統合できます。指定する値には、コマンドファイルへのフルパスを使用する必要があります。ファイルパスにスペースが含まれている場合は、引用符で囲む必要があります。

SDK は指定されたとおりにコマンドを呼び出し、stdout から JSON データを読み取ります。

次の例は、スペースを含まないファイルパスとスペースを含むファイルパスにこの設定を使用する方法を示しています。

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();

外部プロセスを一時的な認証情報のソースとして使用する方法の詳細については、 AWS SDKs「プロセス認証情報」セクションを参照してください。

ProcessCredentialsProvider を使用する

config ファイル内の設定を使用する代わりに、SDK の ProcessCredentialsProvider を使用して Java を使用して一時的な認証情報を読み込むこともできます。

以下の例は、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();