

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

# プロセス認証情報プロバイダー
<a name="feature-process-credentials"></a>

**注記**  
設定ページのレイアウトの理解、または以下の ** AWS SDKs**「」を参照してください[このガイドの設定ページについて](settings-reference.md#settingsPages)。

SDK には、カスタムユースケースに合わせて認証情報プロバイダーチェーンを拡張する方法の機能があります。このプロバイダーは、オンプレミスの認証情報ストアからの認証情報の取得やオンプレミスの ID プロバイダーとの統合など、カスタム実装を提供するために使用できます。

 例えば、IAM Roles Anywhere は `credential_process` を使用して、アプリケーションに代わって一時的な認証情報を取得します。この用途に合わせて `credential_process` を設定するには、 [IAM Roles Anywhere を使用した AWS SDKsとツールの認証](access-rolesanywhere.md) を参照してください。

**注記**  
外部プロセスから認証情報を取得する方法を以下に示します。これは、 AWSの外部でソフトウェアを実行している場合に使用できます。 AWS コンピューティングリソース上に構築する場合は、他の認証情報プロバイダーを使用します。このオプションを使用する場合は、使用しているオペレーティングシステムのセキュリティ上のベストプラクティスに従って、設定ファイルができるだけロックされていることを確認する必要があります。SDKs と はそのような情報を AWS CLI キャプチャしてログに記録し`StdErr`、権限のないユーザーに公開する可能性があるため、カスタム認証情報ツールがシークレット情報を に書き込まないことを確認します。

この機能を設定するには、以下のように使用します。

**`credential_process` - 共有 AWS `config`ファイル設定**  
使用する認証情報を生成あるいは取得するために ユーザーに代わって SDK またはツールが実行する外部のコマンドを指定します。この設定では、SDK が呼び出すプログラム/コマンドの名前を指定します。SDK がプロセスを呼び出すと、プロセスが JSON データを `stdout` に書き込むのを待ちます。カスタムプロバイダーは、特定の形式で情報を返す必要があります。この情報には、 SDK またはツールがユーザーを認証するために使用できる認証情報が含まれています。

**注記**  
プロセス認証情報プロバイダーは [認証情報プロバイダーチェーンを理解する](standardized-credentials.md#credentialProviderChain) の一部です。ただし、プロセス認証情報プロバイダーは、このシリーズの他のいくつかのプロバイダーの後にのみチェックされます。そのため、プログラムでこのプロバイダーの認証情報を使用する場合は、設定から他の有効な認証情報プロバイダーを削除するか、別のプロファイルを使用する必要があります。あるいは、認証情報プロバイダーチェーンに頼ってどのプロバイダーが有効な認証情報を返すかを自動的に検出する代わりに、プロセス認証情報プロバイダーの使用をコードで指定してください。サービスクライアントを作成するときに、認証情報ソースを直接指定できます。

## 認証情報プログラムへのパスの指定
<a name="feature-process-credentials-detail-path"></a>

設定の値は、SDK または開発ツールがユーザーに代わって実行するプログラムへのパスを含む文字列です。
+ パスとファイル名には、A～Z、a～z、0～9、ハイフン (-)、アンダースコア (\$1)、ピリオド (.)、フォワードスラッシュ (/)、バックスラッシュ (\$1)、スペースのみを使用できます。
+ パスまたはファイル名にスペースが含まれている場合は、完全なパスとファイル名を二重引用符 (" ") で囲みます。
+ パラメータ名またはパラメータ値にスペースが含まれている場合は、その要素を二重引用符 (" ") で囲みます。囲むのは、名前または値のみであり、そのペアではありません。
+ 文字列に環境変数を含めないでください。例えば、`$HOME` または `%USERPROFILE%` を含めることはできません。
+ ホームフォルダを `~` として指定しないでください。\$1 フルパスまたはベースファイル名を指定する必要があります。ベースファイル名がある場合、システムは `PATH` 環境変数で指定されたフォルダー内でプログラムを検索しようとします。次のようにパスはオペレーティングシステムによって異なります。

  次の例は、Linux/macOS上の `config` 共有ファイルに credential\$1process を設定する方法を示しています。

  ```
  credential_process = "/path/to/credentials.sh" parameterWithoutSpaces "parameter with spaces"
  ```

  次の例は、Windows 上の `config` 共有ファイルに credential\$1process を設定する方法を示しています。

  ```
  credential_process = "C:\Path\To\credentials.cmd" parameterWithoutSpaces "parameter with spaces"
  ```
+  以下の専用プロファイル内で指定できます。

  ```
  [profile cred_process] 
  credential_process = /Users/username/process.sh 
  region = us-east-1
  ```

## 認証情報プログラムからの有効な出力
<a name="feature-process-credentials-output"></a>

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 SDKsとツールによるサポート
<a name="feature-process-credentials-sdk-compat"></a>

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


| SDK | サポート | 注意または詳細情報 | 
| --- | --- | --- | 
| [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/) v2 | はい |  | 
| [SDK for C\$1\$1](https://docs.aws.amazon.com/sdk-for-cpp/latest/developer-guide/) | はい |  | 
| [SDK for Go V2 (1.x)](https://docs.aws.amazon.com/sdk-for-go/v2/developer-guide/) | はい |  | 
| [SDK for Go 1.x (V1)](https://docs.aws.amazon.com/sdk-for-go/latest/developer-guide/) | はい | 共有 config ファイル設定を使用するには、設定ファイルからの読み込みを有効にする必要があります。「[セッション](https://docs.aws.amazon.com/sdk-for-go/api/aws/session/)」を参照してください。 | 
| [SDK for Java 2.x](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/) | はい |  | 
| [SDK for Java 1.x](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/) | はい |  | 
| [SDK for JavaScript 3.x](https://docs.aws.amazon.com/sdk-for-javascript/latest/developer-guide/) | はい |  | 
| [SDK for JavaScript 2.x](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/) | はい |  | 
| [SDK for Kotlin](https://docs.aws.amazon.com/sdk-for-kotlin/latest/developer-guide/) | はい |  | 
| [SDK for .NET 4.x](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/) | はい |  | 
| [SDK for .NET 3.x](https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/) | はい |  | 
| [SDK for PHP 3.x](https://docs.aws.amazon.com/sdk-for-php/latest/developer-guide/) | はい |  | 
| [SDK for Python (Boto3)](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html) | はい |  | 
| [SDK for Ruby 3.x](https://docs.aws.amazon.com/sdk-for-ruby/latest/developer-guide/) | はい |  | 
| [SDK for Rust](https://docs.aws.amazon.com/sdk-for-rust/latest/dg/) | はい |  | 
| [SDK for Swift](https://docs.aws.amazon.com/sdk-for-swift/latest/developer-guide/) | はい |  | 
| [PowerShell V5 のツール](https://docs.aws.amazon.com/powershell/latest/userguide/) | はい |  | 
| [PowerShell V4 のツール](https://docs.aws.amazon.com/powershell/v4/userguide/) | はい |  | 