

# 인증 방법
<a name="reference_sigv-authentication-methods"></a>

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

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

## HTTP Authorization 헤더
<a name="aws-signing-authentication-methods-http"></a>

HTTP `Authorization` 헤더는 요청을 인증하는 가장 일반적인 방법입니다. 모든 REST API 작업(`POST`를 사용한 브라우저 기반 업로드 제외)에는 이 헤더가 필요합니다.

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

**Example SigV4**  

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

**Example SigV4a**  

```
Authorization: AWS4-ECDSA-P256-SHA256
Credential=AKIAIOSFODNN7EXAMPLE/20130524/s3/aws4_request, 
SignedHeaders=host;range;x-amz-date;x-amz-region-set,
Signature=fe5f80f77d5fa3beca038a248ff027d0445342fe2855ddc963176630326f1024
```

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


| 구성 요소 | 설명 | 
| --- | --- | 
|  권한 부여  | 서명을 계산하는 데 사용된 알고리즘입니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/reference_sigv-authentication-methods.html)  | 
|  자격 증명  |  액세스 키 ID 및 범위 정보. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/reference_sigv-authentication-methods.html) <date> 값은 YYYYMMDD 형식을 사용하여 지정됩니다. Amazon S3로 요청을 보낼 때 <aws-service> 값은 S3입니다.  | 
|  SignedHeaders  |   서명 계산에 사용된 세미콜론으로 구분된 요청 헤더의 목록. 목록에는 헤더 이름만 포함되며, 헤더 이름은 소문자여야 합니다. 예: `host;range;x-amz-date` SigV4a의 경우 요청이 유효한 리전 세트를 지정하는 리전 세트 헤더를 포함해야 합니다. X-Amz-Region-Set 헤더는 쉼표로 구분된 값 목록으로 지정됩니다.  | 
|  서명  |  64개의 소문자 16진수 문자로 표현되는 256비트 서명. 예:`fe5f80f77d5fa3beca038a248ff027d0445342fe2855ddc963176630326f1024` 서명 계산은 페이로드를 전송하기 위해 선택한 옵션에 따라 달라집니다.  | 

## 쿼리 문자열 파라미터
<a name="aws-signing-authentication-methods-query"></a>

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

다음 예제에서는 SigV4 및 SigV4a에 대해 미리 서명된 URL을 보여줍니다. 가독성을 위해 이 예시에 줄바꿈이 추가됩니다.

**Example SigV4**  

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

**Example SigV4a**  

```
http://s3.amazonaws.com/amzn-s3-demo-bucket/test.txt ?
X-Amz-Algorithm=AWS4-ECDSA-P256-SHA256 &
X-Amz-Credential=<your-access-key-id>/20240721/s3/aws4_request &
X-amz-Region-Set=<regionset> &
X-Amz-Date=20240721T201207Z &
X-Amz-Expires=86400 &
X-Amz-SignedHeaders=host;x-amz-region-set &
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 서명 버전 및 알고리즘을 식별합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/reference_sigv-authentication-methods.html)  | 
|  X-Amz-Credential  |  이 파라미터는 액세스 키 ID 외에도 서명이 유효한 범위를 제공합니다. 이 값은 다음 섹션의 설명과 같이 서명 계산에 사용하는 범위와 일치해야 합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/reference_sigv-authentication-methods.html) AWS 리전 문자열 목록은 **AWS 일반 참조의 [Regional Endpoints](https://docs.aws.amazon.com//general/latest/gr/rande.html#regional-endpoints)를 참조하세요.  | 
|  X-Amz-Region-Set  |  요청이 유효한 리전 세트. x-amz-region-set 헤더는 쉼표로 구분된 값 목록으로 지정됩니다.  | 
|  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  |  서명 계산에 사용한 헤더를 나열합니다. 서명 계산에는 다음 헤더가 필요합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/reference_sigv-authentication-methods.html) 보안을 강화하려면 요청에 포함하려는 모든 요청 헤더에 서명해야 합니다.  | 
|  X-Amz-Signature  |  요청을 인증하기 위한 서명을 제공합니다. 이 서명은 서비스에서 계산하는 서명과 일치해야 합니다. 그렇지 않으면 서비스가 요청을 거부합니다. 예: `733255ef022bec3f2a8701cd61d4b371f3f28c9f193a1f02279211d48d5193d7` 서명 계산은 다음 섹션에서 설명합니다.  | 
|  X-Amz-Security-Token  |  STS 서비스에서 가져온 보안 인증 정보를 사용하는 경우의 선택적 보안 자격 증명 파라미터입니다.  | 