

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# AWS SDK for C\$1\$1 자격 증명 공급자 사용
<a name="credproviders"></a>

 에 대한 모든 요청은에서 발급한 자격 증명을 사용하여 암호화 방식으로 서명해야 AWS 합니다 AWS. 런타임에 SDK는 여러 위치를 확인하여 자격 증명의 구성 값을 검색합니다.

를 사용한 인증은 코드베이스 외부에서 처리할 AWS 수 있습니다. SDK는 자격 증명 공급자 체인을 사용하여 많은 인증 방법을 자동으로 감지하고 사용하며 새로 고칠 수 있습니다.

프로젝트의 AWS 인증을 시작하기 위한 안내 옵션은 *AWS SDKs 및 도구 참조 안내서*의 [인증 및 액세스를](https://docs.aws.amazon.com/sdkref/latest/guide/access.html) 참조하세요.

## 자격 증명 공급자 체인
<a name="credproviders-default-credentials-provider-chain"></a>

클라이언트를 구성할 때 자격 증명 공급자를 명시적으로 지정하지 않으면 SDK for C\$1\$1는 자격 증명을 제공할 수 있는 일련의 위치를 확인하는 자격 증명 공급자 체인을 사용합니다. 이러한 위치 중 하나에서 자격 증명을 찾으면 검색이 중지됩니다.

### 자격 증명 가져오기 순서
<a name="credproviders-credential-retrieval-order"></a>

모든 SDK에는 AWS 서비스에 요청하는 데 사용할 유효한 보안 인증을 얻기 위해 확인하는 일련의 장소(또는 소스)가 있습니다. 유효한 보안 인증 정보를 찾은 후에는 검색이 중지됩니다. 이러한 체계적인 검색을 자격 증명 공급자 체인이라고 합니다.

체인의 각 단계마다 값을 설정하는 다양한 방법이 있습니다. 코드에서 직접 값을 설정하는 것이 항상 우선하며, 환경 변수로를 설정한 다음 공유 AWS `config` 파일에서를 설정합니다. 자세한 내용은AWS SDK 및 도구 참조 안내서**의 [Precedence of settings](https://docs.aws.amazon.com/sdkref/latest/guide/settings-reference.html#precedenceOfSettings)를 참조하세요.

SDK는 공유 AWS `config` 및 `credentials` 파일의 `[default]` 프로필에서 자격 증명을 로드하려고 시도합니다. `AWS_PROFILE` 환경 변수를 사용하여 `[default]`를 사용하는 대신 SDK가 로드할 명명된 프로파일을 선택할 수 있습니다. `config` 및 `credentials` 파일은 AWS SDKs 및 도구에서 공유됩니다. *AWS SDKs 및 도구 참조 가이드*에는 모든 AWS SDKs 및에서 사용하는 SDK 구성 설정에 대한 정보가 있습니다 AWS CLI. 공유 AWS `config` 파일을 통해 SDK를 구성하는 방법에 대한 자세한 내용은 [공유 구성 및 자격 증명 파일을](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) 참조하세요. 환경 변수 설정을 통해 SDK를 구성하는 방법에 관해 자세히 알아보려면 [Environment variables support](https://docs.aws.amazon.com/sdkref/latest/guide/environment-variables.html) 단원을 참조하세요.

를 인증하기 위해 SDK for C\$1\$1 AWS는 자격 증명 공급자를 다음 순서로 확인합니다.

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 웹 자격 증명**

   액세스가 필요한 모바일 애플리케이션 또는 클라이언트 기반 웹 애플리케이션을 생성할 때 AWS AWS Security Token Service (AWS STS)는 퍼블릭 자격 증명 공급자(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. **IAM Identity Center**

   IAM Identity Center를 사용하여 인증하는 경우 C\$1\$1용 SDK가 AWS CLI 명령를 실행하여 설정한 Single Sign-On 토큰을 사용하는 경우입니다`aws sso login`. SDK는 IAM Identity Center가 유효한 토큰으로 교환된 임시 자격 증명을 사용합니다. 그러면 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. ** AWS 로그인을 사용한 로그인 자격 증명 자격 증명 해석기**

   AWS 로그인 및 콘솔 자격 증명을 사용하여 인증하는 경우, SDK for C\$1\$1가 `aws login` 또는 CLI`aws login --profile`에서를 실행하여 설정한 콘솔 자격 증명을 사용하는 경우입니다. 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의 AWS SDK for C\$1\$1 소스 코드[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 사용하여 로 인증](credentials.md) 중에 AWS 로그인 자격 증명 인증을 설정합니다. 상황에 따라 다른 인증 방법이 유용할 수 있습니다. 보안 위험을 방지하려면 항상 단기 보안 인증을 사용하는 것이 좋습니다. 다른 인증 방법 절차에 대해서는AWS SDK 및 도구 참조 안내서**의 [Authentication and access](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);
```

## ID 캐싱
<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)에서 생성된 클라이언트는 캐시를 공유합니다.