翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
外部プロセスからの一時的な認証情報をロードする
警告
以下では、外部プロセスから一時的な認証情報を調達する方法について説明します。これは危険な場合があるため、注意して進めてください。可能であれば、他の認証情報プロバイダーの利用をお勧めします。このオプションを使用する場合は、使用しているオペレーティングシステムのセキュリティ上のベストプラクティスに従って、config
ファイルができるだけロックされていることを確認する必要があります。
カスタム認証情報ツールが StdErr
に秘密情報を書き込まないようにしてください。SDKs および AWS CLI は、このような情報をキャプチャしてログに記録し、許可されていないユーザーに公開する可能性があります。
SDK for Java 2.x を使用すると、カスタムユースケースの外部プロセスから一時的な認証情報を取得できます。この機能を設定するには、次の 2 つの方法があります。
credential_process
設定を使用する
一時的な認証情報を提供する方法がある場合は、その credential_process
設定を config
ファイル内のプロファイル定義の一部として追加することで統合できます。指定する値には、コマンドファイルへのフルパスを使用する必要があります。ファイルパスにスペースが含まれている場合は、引用符で囲む必要があります。
SDK は指定されたとおりにコマンドを呼び出し、 から JSON データを読み取りますstdout
。
次の例は、スペースを含まないファイルパスとスペースを含むファイルパスにこの設定を使用する方法を示しています。
次のコードスニペットは、process-credential-profile
というプロファイルの一部として定義された一時的な認証情報を使用するサービスクライアントを構築する方法を示しています。
Region region = Region.US_WEST_2; S3Client s3Client = S3Client.builder() .region(region) .credentialsProvider(ProfileCredentialsProvider.create("process-credential-profile")) .build();
一時的な認証情報のソースとして外部プロセスを使用する方法の詳細については、 AWS SDKs and Tools リファレンスガイドのプロセス認証情報セクションを参照してください。
ProcessCredentialsProvider
を使用する
config
ファイルで設定を使用する代わりに、SDK を使用して Java を使用して一時的な認証情報ProcessCredentialsProvider
をロードできます。
以下の例は、ProcessCredentialsProvider
を使用して外部プロセスを指定する方法と、一時的な認証情報を使用するサービスクライアントを設定する方法のさまざまなバージョンを示しています。
認証に IAM Roles Anywhere を使用する
IAM Roles Anywhere は、 の外部で実行 AWS のサービス されているワークロードの一時的な AWS 認証情報を取得できる です AWS。これにより、オンプレミスやその他のクラウド環境から AWS リソースへの安全なアクセスが可能になります。
IAM Roles Anywhere でリクエストを認証する前に、まず必要な情報を収集し、認証情報ヘルパーツールをダウンロードする必要があります。IAM Roles Anywhere ユーザーガイドの開始手順に従うことで、必要なアーティファクトを作成できます。
SDK for Java には、IAM Roles Anywhere から一時的な認証情報を取得する専用の認証情報プロバイダーはありませんが、認証情報ヘルパーツールとオプションの 1 つを使用して、外部プロセスから認証情報を取得できます。
プロファイルで credential_process
設定を使用する
共有AWS
設定ファイルの次のスニペットは、 という名前のプロファイルを示しています。 は credential_process
設定roles_anywhere
を使用します。
[profile roles_anywhere] 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-name-with-path
すべてのアーティファクトをアセンブルした後、赤で表示されているテキストを値に置き換える必要があります。設定の最初の要素である はaws_signing_helper
、認証情報ヘルパーツールの実行ファイルであり、 コマンドcredential-process
です。
次のコードに示すように、roles_anywhere
プロファイルを使用するようにサービスクライアントを設定すると、SDK は一時的な認証情報をキャッシュし、有効期限が切れる前に更新します。
S3Client s3Client = S3Client.builder() .credentialsProvider(ProfileCredentialsProvider.builder() .profileName("roles_anywhere").build()) .build();
を設定する ProcessCredentialsProvider
次に示すように、プロファイル設定を使用するProcessCredentialsProvider
代わりに、 でコードのみのアプローチを使用できます。
ProcessCredentialsProvider processCredentialsProvider = ProcessCredentialsProvider.builder() .command("""
./
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-name-with-path
""").build(); S3Client s3Client = S3Client.builder() .credentialsProvider(processCredentialsProvider) .build();
すべてのアーティファクトをアセンブルした後、赤で表示されているテキストを値に置き換えます。