보안 인증 제공업체 - AWS SDK for Kotlin

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

보안 인증 제공업체

기본 자격 증명 공급자 체인이 버전 1.4.0으로 변경된 자격 증명을 확인하는 순서 자세한 내용은 아래 참고 사항을 참조하세요.

를 사용하여 Amazon Web Services에 요청하기 위해 SDK AWS SDK for Kotlin는에서 발급한 암호화 서명 보안 인증 정보를 사용합니다 AWS. SDK는 자격 증명을 획득하기 위해 JVM 시스템 속성, 환경 변수, 공유 AWS configcredentials 파일, Amazon EC2 인스턴스 메타데이터 등 여러 위치에 있는 구성 설정을 사용할 수 있습니다.

SDK는 자격 증명 공급자 추상화를 사용하여 다양한 소스에서 자격 증명을 검색하는 프로세스를 간소화합니다. SDK에는 여러 자격 증명 공급자 구현이 포함되어 있습니다.

예를 들어 검색된 구성에 공유 config 파일의 IAM Identity Center Single Sign-On 액세스 설정이 포함된 경우 SDK는 IAM Identity Center와 협력하여 요청에 사용하는 임시 자격 증명을 검색합니다 AWS 서비스. 이러한 자격 증명 획득 접근 방식을 통해 SDK는 IAM Identity Center 공급자(SSO 자격 증명 공급자라고도 함)를 사용합니다. 이 가이드의 설정 섹션에서는이 구성을 설명합니다.

특정 자격 증명 공급자를 사용하려면 서비스 클라이언트를 생성할 때 자격 증명 공급자를 지정할 수 있습니다. 또는 기본 자격 증명 공급자 체인을 사용하여 구성 설정을 자동으로 검색할 수 있습니다.

기본 자격 증명 공급자 체인

클라이언트 구성에서 명시적으로 지정되지 않은 경우 SDK for Kotlin은 자격 증명을 제공할 수 있는 각 위치를 순차적으로 확인하는 자격 증명 공급자를 사용합니다. 이 기본 자격 증명 공급자는 자격 증명 공급자 체인으로 구현됩니다.

기본 체인을 사용하여 애플리케이션에서 자격 증명을 제공하려면 credentialsProvider 속성을 명시적으로 제공하지 않고 서비스 클라이언트를 생성합니다.

val ddb = DynamoDbClient { region = "us-east-2" }

서비스 클라이언트 생성에 대한 자세한 내용은 클라이언트 구성 및 구성을 참조하세요.

기본 자격 증명 공급자 체인에 대해 알아보기

기본 자격 증명 공급자 체인은 다음과 같은 사전 정의된 시퀀스를 사용하여 자격 증명 구성을 검색합니다. 구성된 설정이 유효한 자격 증명을 제공하면 체인이 중지됩니다.

1. AWS 액세스 키(JVM 시스템 속성)

SDK는 aws.accessKeyId, aws.secretAccessKeyaws.sessionToken JVM 시스템 속성을 찾습니다.

2. AWS 액세스 키(환경 변수)

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

3. 웹 자격 증명 토큰

SDK는 환경 변수 AWS_WEB_IDENTITY_TOKEN_FILEAWS_ROLE_ARN (또는 JVM 시스템 속성 aws.webIdentityTokenFileaws.roleArn)를 찾습니다. SDK는 토큰 정보와 역할에 따라 임시 자격 증명을 획득합니다.

4. 구성 파일의 프로필

이 단계에서 SDK는 프로필과 연결된 설정을 사용합니다. 기본적으로 SDK는 공유 AWS configcredentials 파일을 사용하지만 AWS_CONFIG_FILE 환경 변수가 설정된 경우 SDK는 해당 값을 사용합니다. AWS_PROFILE 환경 변수(또는 aws.profile JVM 시스템 속성)가 설정되지 않은 경우 SDK는 “기본” 프로파일을 찾고, 그렇지 않으면 AWS_PROFILE’s 값과 일치하는 프로파일을 찾습니다.

SDK는 이전 단락에 설명된 구성을 기반으로 프로파일을 찾고 여기에 정의된 설정을 사용합니다. SDK에서 찾은 설정에 서로 다른 자격 증명 공급자 접근 방식에 대한 설정 조합이 포함된 경우 SDK는 다음 순서를 사용합니다.

  1. AWS 액세스 키(구성 파일) - SDK는 aws_access_key_id, aws_access_key_id및에 대한 설정을 사용합니다aws_session_token.

  2. 역할 구성 수임 - SDK가 role_arnsource_profile 또는 credential_source 설정을 찾으면 역할을 수임하려고 시도합니다. SDK가 source_profile 설정을 찾으면 다른 프로필에서 자격 증명을 소싱하여에서 지정한 역할에 대한 임시 자격 증명을 수신합니다role_arn. SDK가 credential_source 설정을 찾으면 credential_source 설정 값에 따라 Amazon ECS 컨테이너, Amazon EC2 인스턴스 또는 환경 변수에서 자격 증명을 소싱합니다. 그런 다음 해당 자격 증명을 사용하여 역할에 대한 임시 자격 증명을 획득합니다.

    프로필에는 source_profile 설정 또는 credential_source 설정이 포함되어야 하지만 둘 다 포함될 수는 없습니다.

  3. 웹 자격 증명 토큰 구성 - SDK가 role_arnweb_identity_token_file 설정을 찾으면 role_arn 및 토큰을 기반으로 AWS 리소스에 액세스할 수 있는 임시 자격 증명을 획득합니다.

  4. SSO 토큰 구성 - SDK가 sso_session, sso_account_id, sso_role_name 설정(구성 파일의 컴패니언 sso-session 섹션과 함께)을 찾으면 SDK는 IAM Identity Center 서비스에서 임시 자격 증명을 검색합니다.

  5. 레거시 SSO 구성 - SDK가 sso_start_url, sso_regionsso_account_id, 및 sso_role_name 설정을 찾으면 SDK는 IAM Identity Center 서비스에서 임시 자격 증명을 검색합니다.

  6. 프로세스 구성 - SDK가 credential_process 설정을 찾으면 경로 값을 사용하여 프로세스를 호출하고 임시 자격 증명을 획득합니다.

5. 컨테이너 자격 증명

SDK는 환경 변수 AWS_CONTAINER_CREDENTIALS_RELATIVE_URI 또는 AWS_CONTAINER_CREDENTIALS_FULL_URIAWS_CONTAINER_AUTHORIZATION_TOKEN_FILE 또는를 찾습니다AWS_CONTAINER_AUTHORIZATION_TOKEN. 이 값을 사용하여 GET 요청을 통해 지정된 HTTP 엔드포인트에서 자격 증명을 로드합니다.

6. IMDS 자격 증명

SDK는 기본 또는 구성된 HTTP 엔드포인트에서 인스턴스 메타데이터 서비스에서 자격 증명을 가져오려고 시도합니다. SDK는 IMDSv2만 지원합니다.

현재 자격 증명이 여전히 해결되지 않으면 예외를 제외하고 클라이언트 생성이 실패합니다.

참고: 자격 증명 확인 순서 변경

위에서 설명한 자격 증명 확인 순서는 SDK for Kotlin 1.4.x+ 릴리스의 최신 상태입니다. 1.4.0 릴리스 전에 항목 번호 3과 4가 전환되었고 현재 4a 항목은 현재 4f 항목을 따랐습니다.

명시적 자격 증명 공급자

기본 공급자 체인을 사용하는 대신 SDK에서 사용해야 하는 특정 자격 증명 공급자 또는 사용자 지정 체인(CredentialsProviderChain)을 지정할 수 있습니다. 예를 들어 환경 변수를 사용하여 기본 자격 증명을 설정하는 경우 다음 코드 조각과 같이 클라이언트 빌더EnvironmentCredentialsProvider에를 제공합니다.

val ddb = DynamoDbClient { region = "us-east-1" credentialsProvider = EnvironmentCredentialsProvider() }
참고

기본 체인은 자격 증명을 캐시하지만 독립 실행형 공급자는 캐시하지 않습니다. CachedCredentialsProvider 클래스를 사용하여 모든 자격 증명 공급자를 래핑하여 모든 API 호출에서 자격 증명을 불필요하게 가져오지 않도록 할 수 있습니다. 캐시된 공급자는 현재 자격 증명이 만료될 때만 새 자격 증명을 가져옵니다.

참고

CredentialsProvider 인터페이스를 구현하여 자체 자격 증명 공급자 또는 공급자 체인을 구현할 수 있습니다.