

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

# AWS SDK for C\$1\$1 認証情報プロバイダーの使用
<a name="credproviders"></a>

 へのすべてのリクエストは、 によって発行された認証情報を使用して暗号で署名 AWS する必要があります AWS。実行時、SDK は複数の場所を確認して認証情報の設定値を取得します。

を使用した認証は AWS 、コードベース外で処理できます。多くの認証方法は、認証情報プロバイダーチェーンを使用して、SDK によって自動的に検出、使用、更新されます。

プロジェクトの AWS 認証を開始するためのガイド付きオプションについては、 SDK およびツールリファレンスガイドの[「認証とアクセス](https://docs.aws.amazon.com/sdkref/latest/guide/access.html)」を参照してください。 *AWS SDKs *

## 認証情報プロバイダーチェーン
<a name="credproviders-default-credentials-provider-chain"></a>

クライアントのコンストラクト時に認証情報プロバイダーを明示的に指定しない場合、SDK for C\$1\$1 は認証情報プロバイダーチェーンを使用して、認証情報を提供できる一連の場所を確認します。SDK がこれらの場所のいずれかで認証情報を見つけると、検索は停止します。

### 認証情報の取得順序
<a name="credproviders-credential-retrieval-order"></a>

すべての SDK には、 AWS のサービスに対するリクエストに使用する有効な認証情報を取得するためにチェックする一連の場所 (またはソース) があります。有効な認証情報が見つかると、検索は停止されます。この体系的な検索は、認証情報プロバイダーチェーンと呼ばれます。

チェーンのステップごとに、値を設定するさまざまな方法があります。コード内で直接値を設定することが常に優先され、次に環境変数として を設定し、共有ファイルで を設定します AWS `config`。詳細については、『*AWS SDK とツールのリファレンスガイド*』の「[設定の優先順位](https://docs.aws.amazon.com/sdkref/latest/guide/settings-reference.html#precedenceOfSettings)」を参照してください。

SDK は、共有 AWS `config` ファイルと `credentials` ファイル内の`[default]`プロファイルから認証情報をロードしようとします。`AWS_PROFILE` 環境変数を使用することで、SDK がロードする名前付きプロファイルを選択できます。これにより、`[default]` の代わりに任意のプロファイルを使用できます。`config` および `credentials`ファイルは、 AWS SDKsとツールによって共有されます。*AWS SDKsおよびツールリファレンスガイドには、*すべての SDK および で使用される AWS SDKs設定に関する情報が記載されています AWS CLI。共有 AWS `config`ファイルを使用して SDK を設定する方法の詳細については、[「共有設定ファイルと認証情報ファイル](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html)」を参照してください。環境変数を設定して SDK を設定する方法の詳細については、「[環境変数のサポート](https://docs.aws.amazon.com/sdkref/latest/guide/environment-variables.html)」を参照してください。

で認証するために AWS、 SDK for C\$1\$1 は認証情報プロバイダーを次の順序でチェックします。

1. **AWS アクセスキー (一時的および長期的な認証情報)**

   SDK は、 `AWS_ACCESS_KEY_ID`と `AWS_SECRET_ACCESS_KEY`、`AWS_SESSION_TOKEN`環境変数、または共有 AWS `credentials`ファイルから認証情報をロードしようとします。
   +  このプロバイダーの設定に関するガイダンスについては、「*AWS SDK とツールのリファレンスガイド*」の「 [AWS アクセスキー](https://docs.aws.amazon.com/sdkref/latest/guide/access-users.html)」を参照してください。
   +  このプロバイダーの SDK 設定プロパティの詳細については、「*AWS SDK とツールのリファレンスガイド*」の「 [AWS アクセスキー](https://docs.aws.amazon.com/sdkref/latest/guide/feature-static-credentials.html)」を参照してください。

1. **AWS STS ウェブ ID**

   アクセスを必要とするモバイルアプリケーションまたはクライアントベースのウェブアプリケーションを作成すると AWS、 AWS Security Token Service (AWS STS) は、パブリック ID プロバイダー (IdP) を介して認証されたフェデレーティッドユーザーの一時的なセキュリティ認証情報のセットを返します。
   + プロファイルでこれを指定すると、SDK またはツールは `AssumeRoleWithWebIdentity` API メソッドを使用して AWS STS 一時的な認証情報の取得を試みます。この方法の詳細については、「*AWS Security Token Service API リファレンス*」の「[AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)」を参照してください。
   +  このプロバイダーの設定に関するガイダンスについては、「*AWS SDK とツールのリファレンスガイド*」の「[ウェブアイデンティティまたは OpenID Connect とのフェデレーション](https://docs.aws.amazon.com/sdkref/latest/guide/access-assume-role.html#webidentity)」を参照してください。
   +  このプロバイダーの SDK 設定プロパティの詳細については、「*AWS SDK とツールのリファレンスガイド*」の「[ロール認証情報プロバイダーを引き受ける](https://docs.aws.amazon.com/sdkref/latest/guide/feature-assume-role-credentials.html)」を参照してください。

1. **AWS IAM アイデンティティセンター**

   IAM Identity Center を使用して認証する場合、SDK for C\$1\$1 は AWS CLI コマンド を実行してセットアップされたシングルサインオントークンを使用します`aws sso login`。SDK は、IAM Identity Center が有効なトークンと交換した一時的な認証情報を使用します。次に、SDK は AWS のサービスを呼び出すときにこの一時的な認証情報を使用します。このプロセスの詳細については、「*AWS SDK とツールのリファレンスガイド*」の「[AWS のサービスの SDK 認証情報解決について理解する](https://docs.aws.amazon.com/sdkref/latest/guide/understanding-sso.html#idccredres)」を参照してください。
   +  このプロバイダーの設定に関するガイダンスについては、「*AWS SDK とツールのリファレンスガイド*」の「[IAM Identity Center 認証](https://docs.aws.amazon.com/sdkref/latest/guide/access-sso.html)」を参照してください。
   +  このプロバイダーの SDK 設定プロパティの詳細については、「*AWS SDK とツールのリファレンスガイド*」の「[IAM Identity Center 認証情報プロバイダー](https://docs.aws.amazon.com/sdkref/latest/guide/feature-sso-credentials.html)」を参照してください。

1. **Signin を使用したログイン認証情報 ID AWS リゾルバー**

   AWS サインインとコンソール認証情報を使用して認証する場合、SDK for C\$1\$1 は CLI `aws login --profile`で `aws login`または を実行してセットアップされたコンソール認証情報を使用します。SDK は、 AWS サービスを呼び出すときにこれらの認証情報を使用します。
   +  このプロセスの詳細については、 SDK およびツールリファレンスガイドの[「コンソール認証情報を使用した AWS ローカル開発用ログイン](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sign-in.html)」を参照してください。 *AWS SDKs *

1. **外部プロセスプロバイダー**

   このプロバイダーは、オンプレミスの認証情報ストアからの認証情報の取得やオンプレミスの ID プロバイダーとの統合など、カスタム実装を提供するために使用できます。
   +  このプロバイダーの設定方法の一例については、「*AWS SDK とツールのリファレンスガイド*」の「[IAM Roles Anywhere](https://docs.aws.amazon.com/sdkref/latest/guide/access-rolesanywhere.html)」を参照してください。
   +  このプロバイダーの SDK 設定プロパティの詳細については、「*AWS SDK とツールのリファレンスガイド*」の「[プロセス認証情報プロバイダー](https://docs.aws.amazon.com/sdkref/latest/guide/feature-process-credentials.html)」を参照してください。

1. **Amazon ECS および Amazon EKS コンテナ認証情報**

   Amazon Elastic Container Service のタスクと Kubernetes サービスアカウントには IAM ロールを関連付けることができます。IAM ロールで付与されたアクセス許可は、タスクで実行されているコンテナまたはポッドのコンテナによって引き受けられます。このロールにより、(コンテナ上の) SDK for C\$1\$1 アプリケーションコードが他の AWS のサービスを使用できるようになります。

   SDK は、Amazon ECS と Amazon EKS によって自動的に設定される `AWS_CONTAINER_CREDENTIALS_RELATIVE_URI` または `AWS_CONTAINER_CREDENTIALS_FULL_URI` の環境変数から認証情報を取得しようとします。
   + Amazon ECS 用にこのロールを設定する方法の詳細については、「*Amazon Elastic Container Service デベロッパーガイド*」の「[Amazon ECS タスクの IAM ロール](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html)」を参照してください。
   + Amazon EKS の設定情報については、「**Amazon EKS ユーザーガイド**」の「[Amazon EKS Pod Identity Agent の設定](https://docs.aws.amazon.com/eks/latest/userguide/pod-id-agent-setup.html)」を参照してください。
   +  このプロバイダーの SDK 設定プロパティの詳細については、「*AWS SDK とツールのリファレンスガイド*」の「[コンテナ認証情報プロバイダー](https://docs.aws.amazon.com/sdkref/latest/guide/feature-container-credentials.html)」を参照してください。

1. **Amazon EC2 インスタンスメタデータサービス**

   IAM ロールを作成し、インスタンスにアタッチします。インスタンス上の SDK for C\$1\$1 アプリケーションは、ロールによって提供された認証情報をインスタンスメタデータから取得しようとします。
   + このロールの設定とメタデータの使用の詳細については、「*Amazon EC2 ユーザーガイド*」の「[Amazon EC2 の IAM ロール](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html)」および「[インスタンスメタデータの操作](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html)」を参照してください。
   +  このプロバイダーの SDK 設定プロパティの詳細については、「*AWS SDK とツールのリファレンスガイド*」の「[IMDS 認証情報プロバイダー](https://docs.aws.amazon.com/sdkref/latest/guide/feature-imds-credentials.html)」を参照してください。

認証情報プロバイダーチェーンは、GitHub [https://github.com/aws/aws-sdk-cpp/blob/main/src/aws-cpp-sdk-core/source/auth/AWSCredentialsProviderChain.cpp#L43-L86](https://github.com/aws/aws-sdk-cpp/blob/main/src/aws-cpp-sdk-core/source/auth/AWSCredentialsProviderChain.cpp#L43-L86)の AWS SDK for C\$1\$1 ソースコードの で確認できます。

新しいユーザーが開始するための推奨アプローチに従った場合は、「開始方法」トピック[AWS SDK for C\$1\$1 AWS を使用した での認証](credentials.md)の 中に AWS ログイン認証情報認証を設定します。その他の認証方法もさまざまな状況で役に立ちます。セキュリティリスクを避けるため、常に短期の認証情報を使用することをお勧めします。その他の認証方法については、『*AWS SDK とツールのリファレンスガイド*』の「[認証とアクセス](https://docs.aws.amazon.com/sdkref/latest/guide/access.html)」を参照してください。

## 明示的な認証情報プロバイダー
<a name="credproviders-explicit-credentials-provider"></a>

SDK による認証方法の検出のために認証情報プロバイダーチェーンに依存するのではなく、特定の認証情報プロバイダーを指定できます。そのためには、サービスクライアントのコンストラクタで認証情報を指定します。

次の例では、認証情報プロバイダーチェーンを使用する代わりに一時的なアクセス認証情報を直接指定して、Amazon Simple Storage Service クライアントを作成しています。

```
    SDKOptions options;
    Aws::InitAPI(options);
    {
        const auto cred_provider = Aws::MakeShared<Auth::SimpleAWSCredentialsProvider>("TestAllocationTag",
            "awsAccessKeyId",
            "awsSecretKey",
            "sessionToken");
        S3Client client{cred_provider};
    }
    Aws::ShutdownAPI(options);
```

## アイデンティティのキャッシュ
<a name="credproviders-identity-caching"></a>

SDK は、認証情報や SSO トークンなど他のアイデンティティタイプをキャッシュします。デフォルトでは、SDK は遅延キャッシュ方式を使用します。この方式では、認証情報は最初のリクエスト時にロードされ、キャッシュされて、有効期限が近づいたら、次のリクエスト時に自動的に更新が試みられます。同じ [https://docs.aws.amazon.com/sdk-for-cpp/latest/api/aws-cpp-sdk-core/html/struct_aws_1_1_client_1_1_client_configuration.html](https://docs.aws.amazon.com/sdk-for-cpp/latest/api/aws-cpp-sdk-core/html/struct_aws_1_1_client_1_1_client_configuration.html) から作成されたクライアントはキャッシュを共有します。