인증 방법 - AWS Identity and Access Management

인증 방법

중요

AWS SDK 또는 CLI를 사용하지 않는 한 요청에 인증 정보를 제공하는 서명을 계산하는 코드를 작성해야 합니다. AWS 서명 버전 4의 서명 계산은 복잡한 작업일 수 있으므로 가능한 경우 AWS SDK 또는 CLI를 사용하는 것이 좋습니다.

다음 방법 중 하나를 사용하여 인증 정보를 표현할 수 있습니다.

HTTP Authorization 헤더

HTTP Authorization 헤더는 요청을 인증하는 가장 일반적인 방법입니다. 모든 REST API 작업(POST를 사용한 브라우저 기반 업로드 제외)에는 이 헤더가 필요합니다. Authorization 헤더 값, 서명 방법과 관련 옵션에 대한 자세한 내용은 Amazon S3 API 참조의 Authenticating Requests: Using the Authorization Header(AWS Signature Version 4)를 참조하세요.

다음은 Authorization 헤더 값의 예시입니다. 가독성을 위해 이 예시에 줄바꿈이 추가됩니다. 코드에서는 헤더가 연속된 문자열이어야 합니다. 알고리즘과 보안 인증 정보 사이에는 쉼표가 없지만 다른 요소는 쉼표로 구분해야 합니다.

Authorization: AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20130524/us-east-1/s3/aws4_request, SignedHeaders=host;range;x-amz-date, Signature=fe5f80f77d5fa3beca038a248ff027d0445342fe2855ddc963176630326f1024

다음 표에서는 앞선 예제에 있는 Authorization 헤더 값의 다양한 구성 요소를 설명합니다.

구성 요소 설명

권한 부여

서명을 계산하는 데 사용된 알고리즘입니다. 인증을 위해 AWS 서명 버전 4를 사용할 때 이 값을 제공해야 합니다. 문자열은 AWS 서명 버전 4(AWS4)와 서명 알고리즘(HMAC-SHA256)을 지정합니다.

Credential

액세스 키 ID 및 범위 정보(날짜, 리전 및 서명 계산에 사용된 서비스 포함).

이 문자열의 형식은 다음과 같습니다.

<your-access-key-id>/<date>/<aws-region>/<aws-service>/aws4_request

여기에서 <date> 값은 YYYYMMDD 형식을 사용하여 지정됩니다. <aws-service> 값은 Amazon S3로 요청을 보낼 때 s3입니다.

SignedHeaders

Signature 계산에 사용한 세미콜론으로 구분된 요청 헤더의 목록입니다. 목록에는 헤더 이름만 포함되며, 헤더 이름은 소문자여야 합니다. 예: host;range;x-amz-date

Signature

64개의 소문자 16진수 문자로 표현되는 256비트 서명. 예:fe5f80f77d5fa3beca038a248ff027d0445342fe2855ddc963176630326f1024

서명 계산은 페이로드를 전송하기 위해 선택한 옵션에 따라 달라집니다.

쿼리 문자열 파라미터

쿼리 문자열을 사용하여 전체 요청을 URL로 표현할 수 있습니다. 이 경우 쿼리 파라미터를 사용하여 인증 정보를 포함한 요청 정보를 제공합니다. 요청 서명이 URL의 일부이므로 이 URL 유형을 미리 서명된 URL이라고 합니다. 미리 서명된 URL을 사용하여 최대 7일 동안 유효할 수 있는 클릭 가능한 링크를 HTML에 포함할 수 있습니다. 자세한 내용은 Amazon S3 API 참조의 Authenticating Requests: Using Query Parameters(AWS Signature Version 4)를 참조하세요.

다음은 미리 서명된 URL의 예입니다. 가독성을 위해 이 예시에 줄바꿈이 추가됩니다.

https://s3.amazonaws.com/amzn-s3-demo-bucket/test.txt ? X-Amz-Algorithm=AWS4-HMAC-SHA256 & X-Amz-Credential=<your-access-key-id>/20130721/us-east-1/s3/aws4_request & X-Amz-Date=20130721T201207Z & X-Amz-Expires=86400 & X-Amz-SignedHeaders=host &X-Amz-Signature=<signature-value>
참고

URL의 X-Amz-Credential 값은 가독성을 위해 ‘/’ 문자만 표시합니다. 실제로는 %2F로 인코딩되어야 합니다. 예:

&X-Amz-Credential=<your-access-key-id>%2F20130721%2Fus-east-1%2Fs3%2Faws4_request

다음 표에서는 인증 정보를 제공하는 URL의 쿼리 파라미터를 설명합니다.

쿼리 문자열 파라미터 이름 설명

X-Amz-Algorithm

AWS 서명의 버전과 서명 계산에 사용한 알고리즘을 식별합니다. AWS 서명 버전 4의 경우 이 파라미터 값을 AWS4-HMAC-SHA256으로 설정합니다. 이 문자열은 AWS 서명 버전 4(AWS4) 및 HMAC-SHA256 알고리즘(HMAC-SHA256)을 식별합니다.

X-Amz-Credential

이 파라미터는 액세스 키 ID 외에도 서명이 유효한 범위(AWS 리전 및 서비스)를 제공합니다. 이 값은 다음 섹션의 설명과 같이 서명 계산에 사용하는 범위와 일치해야 합니다.

이 파라미터의 값의 일반적인 형식은 다음과 같습니다.

<your-access-key-id>/<date>/<AWS Region>/<AWS-service>/aws4_request

예: AKIAIOSFODNN7EXAMPLE/20130721/us-east-1/s3/aws4_request

AWS 리전 문자열 목록은 AWS 일반 참조의 Regional Endpoints를 참조하세요.

X-Amz-Date

날짜 및 시간 형식은 ISO 8601 표준을 따르고, yyyyMMddTHHmmssZ 형식을 사용해야 합니다. 예를 들어 날짜와 시간이 ‘08/01/2016 15:32:41.982-700’인 경우 UTC(협정 세계시)로 변환하여 ‘20160801T223241Z’로 제출해야 합니다.

X-Amz-Expires

생성된 미리 서명된 URL이 유효한 기간(초)을 제공합니다. 예: 86400(24시간). 이 값은 정수입니다. 설정할 수 있는 최솟값은 1이고, 최댓값은 604800(7일)입니다. 서명 계산에 사용하는 서명 키는 최대 7일 동안 유효하므로 미리 서명된 URL은 최대 7일 동안 유효할 수 있습니다.

X-Amz-SignedHeaders

서명 계산에 사용한 헤더를 나열합니다. 서명 계산에는 다음 헤더가 필요합니다.

  • HTTP 호스트 헤더.

  • 요청에 추가하려는 모든 x-amz-* 헤더.

보안을 강화하려면 요청에 포함하려는 모든 요청 헤더에 서명해야 합니다.

X-Amz-Signature

요청을 인증하기 위한 서명을 제공합니다. 이 서명은 서비스에서 계산하는 서명과 일치해야 합니다. 그렇지 않으면 서비스가 요청을 거부합니다. 예제: 733255ef022bec3f2a8701cd61d4b371f3f28c9f193a1f02279211d48d5193d7

서명 계산은 다음 섹션에서 설명합니다.

X-Amz-Security-Token

STS 서비스에서 가져온 보안 인증 정보를 사용하는 경우의 선택적 보안 자격 증명 파라미터입니다.