인증 방법
중요
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( |
Credential |
액세스 키 ID 및 범위 정보(날짜, 리전 및 서명 계산에 사용된 서비스 포함). 이 문자열의 형식은 다음과 같습니다.
여기에서 |
SignedHeaders |
|
Signature |
64개의 소문자 16진수 문자로 표현되는 256비트 서명. 예: 서명 계산은 페이로드를 전송하기 위해 선택한 옵션에 따라 달라집니다. |
쿼리 문자열 파라미터
쿼리 문자열을 사용하여 전체 요청을 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의 경우 이 파라미터 값을 |
X-Amz-Credential |
이 파라미터는 액세스 키 ID 외에도 서명이 유효한 범위(AWS 리전 및 서비스)를 제공합니다. 이 값은 다음 섹션의 설명과 같이 서명 계산에 사용하는 범위와 일치해야 합니다. 이 파라미터의 값의 일반적인 형식은 다음과 같습니다.
예: AWS 리전 문자열 목록은 AWS 일반 참조의 Regional Endpoints를 참조하세요. |
X-Amz-Date |
날짜 및 시간 형식은 ISO 8601 표준을 따르고, |
X-Amz-Expires |
생성된 미리 서명된 URL이 유효한 기간(초)을 제공합니다. 예: 86400(24시간). 이 값은 정수입니다. 설정할 수 있는 최솟값은 1이고, 최댓값은 604800(7일)입니다. 서명 계산에 사용하는 서명 키는 최대 7일 동안 유효하므로 미리 서명된 URL은 최대 7일 동안 유효할 수 있습니다. |
X-Amz-SignedHeaders |
서명 계산에 사용한 헤더를 나열합니다. 서명 계산에는 다음 헤더가 필요합니다.
보안을 강화하려면 요청에 포함하려는 모든 요청 헤더에 서명해야 합니다. |
X-Amz-Signature |
요청을 인증하기 위한 서명을 제공합니다. 이 서명은 서비스에서 계산하는 서명과 일치해야 합니다. 그렇지 않으면 서비스가 요청을 거부합니다. 예제: 서명 계산은 다음 섹션에서 설명합니다. |
X-Amz-Security-Token |
STS 서비스에서 가져온 보안 인증 정보를 사용하는 경우의 선택적 보안 자격 증명 파라미터입니다. |