

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

# を使用して外部プロセスから認証情報をロードする AWS SDK for Java 2.x
<a name="credentials-process"></a>

**警告**  
以下では、外部プロセスから一時的な認証情報を調達する方法について説明します。これは危険な場合があるため、注意して進めてください。可能であれば、他の認証情報プロバイダーを使用することをお勧めします。このオプションを使用する場合は、使用しているオペレーティングシステムのセキュリティ上のベストプラクティスに従って、`config` ファイルができるだけロックされていることを確認してください。  
カスタム認証情報ツールが `StdErr` に秘密情報を書き込まないようにしてください。SDKsと AWS CLI は、そのような情報をキャプチャしてログに記録し、不正なユーザーに公開する可能性があります。

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

## `credential_process` 設定を使用する
<a name="credentials-credential_process"></a>

一時的な認証情報を提供する方法がある場合は、その `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[「プロセス認証情報」セクション](https://docs.aws.amazon.com/sdkref/latest/guide/feature-process-credentials.html)を参照してください。

## `ProcessCredentialsProvider` を使用する
<a name="credentials-procredprovider"></a>

`config` ファイル内の設定を使用する代わりに、SDK の `[ProcessCredentialsProvider](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/auth/credentials/ProcessCredentialsProvider.html)` を使用して 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();
```

------

## 認証に IAM Roles Anywhere を使用する
<a name="credentials-iam-roles-anywhere"></a>

[IAM Roles Anywhere](https://docs.aws.amazon.com/rolesanywhere/latest/userguide/introduction.html) は、 の外部で実行 AWS のサービス されているワークロードの一時的な AWS 認証情報を取得できる です AWS。これにより、オンプレミスや他のクラウド環境から AWS リソースへの安全なアクセスが可能になります。

IAM Roles Anywhere でリクエストを認証する前に、必要な情報を収集し、[認証情報ヘルパーツール](https://docs.aws.amazon.com/rolesanywhere/latest/userguide/credential-helper.html)をダウンロードする必要があります。「IAM Roles Anywhere ユーザーガイド」の「[開始方法](https://docs.aws.amazon.com/rolesanywhere/latest/userguide/getting-started.html)」の手順に従って、必要なアーティファクトを作成できます。

SDK for Java には、IAM Roles Anywhere から一時的な認証情報を取得するための専用の認証情報プロバイダーはありませんが、認証情報ヘルパーツールと、[外部プロセスから認証情報を取得する](#credentials-process)いずれかのオプションを使用できます。

### プロファイルでの `credential_process` 設定の使用
<a name="credentials-iam-roles-anywhere-config"></a>

共有設定ファイルの次のスニペットは、 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` の設定
<a name="credentials-iam-roles-anywhere-process"></a>

次に示すように、プロファイル設定を使用する代わりに、`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();
```

すべてのアーティファクトを集めた後、赤で表示されているテキストを自分の値に置き換えます。