기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
인증 구성
AWS SDK for Go는 인증 동작 서비스를 구성하는 기능을 제공합니다. 대부분의 경우 기본 구성으로도 충분하지만 사용자 지정 인증을 구성하면 시험판 서비스 기능 작업과 같은 추가 동작을 수행할 수 있습니다.
정의
이 섹션에서는 AWS SDK for Go의 인증 구성 요소에 대한 개략적인 설명을 제공합니다.
AuthScheme
AuthScheme
인증 체계는 아래에 자세히 설명된 다음 구성 요소를 사용합니다.
-
체계를 식별하는 고유 ID
-
서명 프로세스에 사용되는 호출자 자격 증명(예: AWS 자격 증명)을 반환하는 자격 증명 해석기
-
작업의 전송 요청에 호출자 자격 증명을 실제로 삽입하는 서명자(예:
AuthorizationHTTP 헤더)
각 서비스 클라이언트 옵션에는 AuthSchemes 필드가 포함되며, 기본적으로 이 필드는 해당 서비스에서 지원하는 인증 체계 목록으로 채워집니다.
AuthSchemeResolver
각 서비스 클라이언트 옵션에는 AuthSchemeResolver 필드가 포함됩니다. 서비스별로 정의된 이 인터페이스는 각 작업에 대해 가능한 인증 옵션을 결정하기 위해 SDK에서 호출하는 API입니다.
중요
인증 체계 해석기는 사용되는 인증 체계를 지정하지 않습니다. 사용할 수 있는 체계 목록('옵션')을 반환하고 여기에 설명된 고정 알고리즘을 통해 최종 체계를 선택합니다.
옵션
ResolverAuthSchemes에 대한 직접 호출에서 반환되는 옵션
옵션은 세 가지 정보 세트로 구성됩니다.
-
가능한 체계를 나타내는 ID
-
체계의 자격 증명 해석기에 제공할 불투명한 속성 세트
-
체계의 서명자에 제공할 불투명한 속성 세트
속성에 대한 참고 사항
사용 사례의 99%에서 호출자는 자격 증명 확인 및 서명을 위한 불투명한 속성에 대해 걱정할 필요가 없습니다. SDK는 각 체계에 필요한 속성을 가져와 SDK에 노출된 강력한 유형의 인터페이스에 전달합니다. 예를 들어 서비스의 기본 인증 해석기는 서명 이름 및 리전에 대한 서명자 속성을 갖도록 SigV4 옵션을 인코딩합니다. 서명 이름 및 리전의 값은 SigV4를 선택할 때 클라이언트의 구성된 v4.HTTPSigner
자격 증명
자격 증명
SDK에 사용되는 가장 일반적인 유형의 자격 증명은 aws.Credentials 집합입니다. 대부분의 사용 사례에서 호출자는 Identity를 추상화로 간주할 필요가 없으며 구체적인 유형으로 직접 작업할 수 있습니다.
참고
이전 버전과의 호환성을 유지하고 API 혼동을 방지하기 위해 AWS SDK별 자격 증명 유형 aws.Credentials는 Identity 인터페이스를 직접 충족하지 않습니다. 이 매핑은 내부적으로 처리됩니다.
IdentityResolver
IdentityResolverIdentity가 검색되는 인터페이스입니다.
IdentityResolver의 구체적인 버전은 강력한 형식(예: aws.CredentialsProvider
호출자는 외부 인증 체계를 정의할 때 IdentityResolver 인터페이스를 직접 구현하기만 하면 됩니다.
Signer
서명자Identity로 요청이 보완되는 인터페이스입니다.
Signer의 구체적인 버전은 강력한 형식(예: v4.HTTPSigner
호출자는 외부 인증 체계를 정의할 때 Signer 인터페이스를 직접 구현하기만 하면 됩니다.
AuthResolverParameters
각 서비스는 각 서비스 패키지에 AuthResolverParameters로 정의된 확인 함수로 전달되는 특정 입력 세트를 가져옵니다.
기본 해석기 파라미터는 다음과 같습니다.
| name | 유형 | 설명 |
|---|---|---|
Operation
|
string
|
간접적으로 호출 중인 작업의 이름입니다. |
Region
|
string
|
클라이언트의 AWS 리전입니다. SigV4[A]를 사용하는 서비스에만 표시됩니다. |
자체 해석기를 구현하는 경우 파라미터의 자체 인스턴스를 구성할 필요가 없습니다. SDK는 요청당 이러한 값을 소싱하여 구현에 전달합니다.
인증 체계 해결 워크플로
SDK를 통해 AWS 서비스 작업을 직접 호출하면 요청이 직렬화된 후 다음과 같은 일련의 작업이 수행됩니다.
-
SDK는 필요에 따라 입력 파라미터를 소싱하여 클라이언트의
AuthSchemeResolver.ResolveAuthSchemes()API를 직접 호출하여 작업에 사용할 수 있는 옵션목록을 가져옵니다. -
SDK는 해당 목록을 반복하고 다음 조건을 충족하는 첫 번째 체계를 선택합니다.
-
ID가 일치하는 체계가 클라이언트 자체
AuthSchemes목록에 있습니다. -
체계의 자격 증명 해석기가 클라이언트의 옵션에 있음(비
nil)(체계의GetIdentityResolver메서드를 통해 확인됨, 위에서 설명한 구체적인 자격 증명 해석기 유형에 대한 매핑은 내부적으로 처리됨)(1)
-
-
실행 가능한 체계가 선택되었다고 가정하면 SDK는
GetIdentityResolver()API를 간접적으로 호출하여 호출자의 자격 증명을 검색합니다. 예를 들어 내장 SigV4 인증 체계는 내부적으로 클라이언트의Credentials공급자에 매핑됩니다. -
SDK는 자격 증명 해석기의
GetIdentity()를 호출합니다(예: SigV4용aws.CredentialProvider.Retrieve()). -
SDK는 엔드포인트 해석기의
ResolveEndpoint()를 직접 호출하여 요청에 대한 엔드포인트를 찾습니다. 엔드포인트에는 서명 프로세스에 영향을 미치는 추가 메타데이터(예: S3 Object Lambda의 고유한 서명 이름)가 포함될 수 있습니다. -
SDK는 인증 체계의
Signer()API를 호출하여 서명자를 검색하고SignRequest()API를 사용하여 이전에 검색한 호출자 자격 증명으로 요청에 서명합니다.
(1) SDK가 목록에서 익명 옵션(ID smithy.api#noAuth)을 발견하면 해당하는 자격 증명 해석기가 없으므로 자동으로 선택됩니다.
기본 지원 AuthScheme
다음 인증 체계는 기본적으로 AWS SDK for Go에서 지원됩니다.
| 명칭 | 체계 ID | 자격 증명 해석기 | Signer | Notes |
|---|---|---|---|---|
| SigV4 |
aws.auth#sigv4
|
aws.CredentialsProvider |
v4.HTTPSigner |
대부분의 AWS 서비스 작업에 대한 현재 기본값입니다. |
| SigV4A |
aws.auth#sigv4a
|
aws.CredentialsProvider | 해당 사항 없음 | SigV4A 사용은 현재 제한되어 있으며 서명자 구현은 내부적입니다. HTTP 요청에 서명하기 위한 범용 API를 제공하는 새로운 옵트인 모듈 aws-http-auth에 대한 이 공지 |
| SigV4Express |
com.amazonaws.s3#sigv4express
|
s3.ExpressCredentialsProvider |
v4.HTTPSigner | Express One Zone |
| HTTP 보유자 |
smithy.api#httpBearerAuth
|
smithybearer.TokenProvider |
smithybearer.Signer |
codecatalyst |
| 익명 |
smithy.api#noAuth
|
해당 사항 없음 | 해당 사항 없음 | 인증 없음 - 자격 증명이 필요하지 않으며 요청에 서명되거나 인증되지 않습니다. |
자격 증명 구성
AWS SDK for Go에서 인증 체계의 자격 증명 구성 요소는 SDK 클라이언트 Options에서 구성됩니다. SDK는 작업이 호출될 때 선택한 체계에 대해 이러한 구성 요소의 값을 자동으로 선택하고 사용합니다.
참고
이전 버전과의 호환성을 위해 SDK는 자격 증명 해석기가 구성되지 않은 경우 익명 인증 체계의 사용을 암시적으로 허용합니다. 이는 클라이언트의 Options의 모든 자격 증명 해석기를 nil로 설정하여 수동으로 수행할 수 있습니다(sigv4 자격 증명 해석기는 aws.AnonymousCredentials{}로 설정할 수도 있음).
서명자 구성
AWS SDK for Go에서 인증 체계의 서명자 구성 요소는 SDK 클라이언트 Options에서 구성됩니다. SDK는 작업이 호출될 때 선택한 체계에 대해 이러한 구성 요소의 값을 자동으로 선택하고 사용합니다. 추가 구성은 필요하지 않습니다.
사용자 지정 인증 체계
사용자 지정 인증 체계를 정의하고 사용하도록 구성하려면 호출자가 다음을 수행해야 합니다.
-
AuthScheme
구현 정의 -
SDK 클라이언트
AuthSchemes목록에 체계 등록 -
해당하는 경우 SDK 클라이언트의
AuthSchemeResolver를 계측하여 체계의 ID로 인증Option을 반환합니다.
주의
다음 서비스에는 고유하거나 사용자 지정된 인증 동작이 있습니다. 사용자 지정 인증 동작이 필요한 경우 기본 구현에 위임하고 그에 따라 래핑하는 것이 좋습니다.
| Service | Notes |
|---|---|
| S3 | 작업 입력에 따라 SigV4A 및 SigV4Express의 조건부 사용. |
| EventBridge | 작업 입력에 따라 SigV4A의 조건부 사용. |
| Cognito | 특정 작업은 익명 전용입니다. |
| SSO | 특정 작업은 익명 전용입니다. |
| STS | 특정 작업은 익명 전용입니다. |