

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

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

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

검색된 구성에 [AWS IAM Identity Center Single Sign-On 액세스 설정](credentials.md)이 포함된 경우 SDK는 IAM Identity Center와 협력하여 AWS 서비스에 요청하는 데 사용하는 임시 자격 증명을 검색합니다.

검색된 구성에 [임시 자격 증명](https://docs.aws.amazon.com/sdkref/latest/guide/access-temp-idc.html)이 포함된 경우 SDK는 이를 사용하여 AWS 서비스 호출합니다. 임시 자격 증명은 액세스 키와 세션 토큰으로 구성됩니다.

를 사용한 인증은 코드베이스 외부에서 처리할 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 Rust가 자격 증명을 제공할 수 있는 일련의 위치를 확인하는 자격 증명 공급자 체인을 사용합니다. SDK가 이러한 위치 중 하나에서 자격 증명을 찾으면 검색이 중지됩니다. 클라이언트 구성에 대한 자세한 내용은 [코드에서 AWS SDK for Rust 서비스 클라이언트 구성](config-code.md) 섹션을 참조하세요.

다음 예제에서는 코드에 자격 증명 공급자를 지정하지 않습니다. SDK는 자격 증명 공급자 체인을 사용하여 호스팅 환경에 설정된 인증을 감지하고 AWS 서비스에 대한 직접 호출에 해당 인증을 사용합니다.

```
let config = aws_config::defaults(BehaviorVersion::latest()).load().await;
let s3 = aws_sdk_s3::Client::new(&config);
```

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

자격 증명 공급자 체인은 다음과 같은 사전 정의된 시퀀스를 사용하여 자격 증명을 검색합니다.

1. **액세스 키 환경 변수**

   SDK는 `AWS_ACCESS_KEY_ID` 및 `AWS_SECRET_ACCESS_KEY`, `AWS_SESSION_TOKEN` 환경 변수에서 자격 증명을 로드하려고 시도합니다.

1. **공유 AWS `config` 및 `credentials` 파일**

   SDK는 공유 AWS `config` 및 `credentials` 파일의 `[default]` 프로필에서 자격 증명을 로드하려고 시도합니다. `AWS_PROFILE` 환경 변수를 사용하여 `[default]`를 사용하는 대신 SDK가 로드할 명명된 프로파일을 선택할 수 있습니다. `config` 및 `credentials` 파일은 다양한 AWS SDKs 및 도구에서 공유됩니다. 이러한 파일에 관한 자세한 정보를 알아보려면 *AWS SDK 및 도구 참조 가이드*에 나와 있는 [공유 `config` 및 `credentials` 파일](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) 섹션을 참조하세요. 프로필에서 지정할 수 있는 표준화된 공급자에 대한 자세한 내용은 [AWS SDKs 및 도구 표준화된 자격 증명 공급자를 참조하세요](https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html).

1. **AWS STS 웹 자격 증명**

   액세스가 필요한 모바일 애플리케이션 또는 클라이언트 기반 웹 애플리케이션을 생성할 때 AWS AWS Security Token Service (AWS STS)는 퍼블릭 자격 증명 공급자(IdP)를 통해 인증된 페더레이션 사용자를 위한 임시 보안 자격 증명 세트를 반환합니다.
   + 프로필에서 이를 지정하면 SDK 또는 도구가 API 메서드를 사용하여 AWS STS `AssumeRoleWithWebIdentity` 임시 자격 증명을 검색하려고 시도합니다. 이 메서드에 관한 자세한 정보는 *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. **Amazon ECS 및 Amazon EKS 컨테이너 자격 증명 **

   Amazon Elastic Container Service 작업과 Kubernetes 서비스 계정에는 이와 연결된 IAM 역할이 있을 수 있습니다. IAM 역할에서 부여된 권한은 작업에서 실행 중인 컨테이너 또는 포드의 컨테이너에 위임됩니다. 이 역할을 통해 컨테이너에 있는 SDK for Rust 애플리케이션 코드가 다른 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 Rust 애플리케이션은 인스턴스 메타데이터에서 역할이 제공하는 자격 증명을 검색하려고 시도합니다.
   + SDK for Rust는 [IMDSv2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html)만 지원합니다.
   + 이 역할 설정과 메타데이터 사용에 대한 자세한 내용은 *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)를 참조하세요.

1. 이 시점에서 자격 증명이 여전히 확인되지 않으면 오류가 있는 panics 작업입니다.

 AWS 자격 증명 공급자 구성 설정에 대한 자세한 내용은 SDK 및 도구 참조 안내서의 *설정 참조*에서 [표준화된 자격 증명 공급자](https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html)를 참조하세요. *AWS SDKs *

## 명시적 자격 증명 공급자
<a name="credproviders-explicit-credentials-provider"></a>

자격 증명 공급자 체인을 사용하여 인증 방법을 감지하는 대신 SDK에서 사용해야 하는 특정 자격 증명 공급자를 지정할 수 있습니다. `aws_config::defaults`를 사용하여 일반 구성을 로드할 때 다음과 같이 사용자 지정 자격 증명 공급자를 지정할 수 있습니다.

```
let config = aws_config::defaults(BehaviorVersion::latest())
    .credentials_provider(MyCredentialsProvider::new())
    .load()
    .await;
```

[https://docs.rs/aws-credential-types/latest/aws_credential_types/provider/trait.ProvideCredentials.html](https://docs.rs/aws-credential-types/latest/aws_credential_types/provider/trait.ProvideCredentials.html) 특성을 구현하여 자체 자격 증명 공급자를 구현할 수 있습니다.

## 자격 증명 캐싱
<a name="credproviders-identity-caching"></a>

SDK는 자격 증명 및 SSO 토큰과 같은 기타 자격 증명 유형을 캐싱합니다. 기본적으로 SDK는 처음 요청 시 자격 증명을 로드하고 캐싱한 다음 만료될 때 다른 요청 중에 자격 증명을 새로 고치려고 시도하는 지연 캐시 구현을 사용합니다. 동일한 `SdkConfig`에서 생성된 클라이언트는 [https://docs.rs/aws-smithy-runtime/latest/aws_smithy_runtime/client/identity/struct.IdentityCache.html](https://docs.rs/aws-smithy-runtime/latest/aws_smithy_runtime/client/identity/struct.IdentityCache.html)를 공유합니다.