プロセス認証情報プロバイダー - AWS SDKsとツール

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

プロセス認証情報プロバイダー

SDK には、カスタムユースケースに合わせて認証情報プロバイダーチェーンを拡張する方法の機能があります。

IAM Roles Anywhere は、外部で実行されるワークロードまたはプロセスの一時的な認証情報を取得する方法を提供します。 AWSこの用途に合わせて credential_process を設定するには、 IAM Roles Anywhere を参照してください。

警告

以下では、外部プロセスから認証情報を取得する方法について説明します。これは危険な場合があるため、注意して進めてください。可能であれば、他の認証情報プロバイダーの利用をお勧めします。このオプションを使用する場合は、使用しているオペレーティングシステムのセキュリティ上のベストプラクティスに従って、config ファイルができるだけロックされていることを確認する必要があります。カスタム認証情報ツールが機密情報を StdErr に書き込まないよう確認してください。SDK および 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"

認証情報プログラムからの有効な出力

SDK はプロファイルで指定されたようにコマンドを実行し、次に標準出力からデータを読み取ります。スクリプトであるかバイナリープログラムであるかに関わらず、指定するコマンドは、以下の構文と一致する JSON 出力を STDOUT に生成する必要があります。

{ "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 SDK との互換性

以下の SDK は、このトピックで説明する機能と設定をサポートします。部分的な例外があれば、すべて記載されています。すべての JVM システムプロパティ設定は、 AWS SDK for Java とでのみサポートされます。 AWS SDK for Kotlin

SDK サポート 注意または詳細情報
AWS CLI v2 Yes
SDK for C++ Yes
SDK for Go V2 (1.x) Yes
SDK for Go 1.x (V1) Yes 共有 config ファイル設定を使用するには、設定ファイルからの読み込みを有効にする必要があります。「セッション」を参照してください。
SDK for Java 2.x Yes
SDK for Java 1.x Yes
3.x 用 JavaScript SDK Yes
2.x JavaScript 用の SDK Yes
SDK for Kotlin Yes
SDK for .NET 3.x Yes
SDK for PHP 3.x Yes
SDK for Python (Boto3) Yes
SDK for Ruby 3.x Yes
SDK for Rust Yes
用ツール PowerShell Yes