

# Amazon S3 서명 버전 4 인증 관련 정책 키
<a name="bucket-policy-s3-sigv4-conditions"></a>

다음 표에는 Amazon S3 정책에 있을 수 있는 Amazon S3 서명 버전 4 인증과 관련된 정책 키가 나와 있습니다. 버킷 정책에서 이러한 조건을 추가하여 서명 버전 4를 사용하여 요청이 인증될 때 특정 동작을 적용할 수 있습니다. 예시 정책은 [서명 버전 4 관련 조건 키를 사용하는 버킷 정책 예제](#bucket-policy-sig-v4-condition-key-example) 섹션을 참조하세요.


| 적용 가능한 키 | 설명 | 
| --- | --- | 
| `s3:signatureversion` | 인증된 요청에 대해 지원하려는 AWS Signature의 버전을 식별합니다. 인증된 요청의 경우 Amazon S3는 서명 버전 4와 서명 버전 2를 모두 지원합니다. 버킷 정책에 이 조건을 추가하여 특정 서명 버전을 요구할 수 있습니다.<br />유효한 값: <br />`"AWS"`는 서명 버전 2를 식별함 <br /> `"AWS4-HMAC-SHA256"`은 서명 버전 4를 식별함 | 
| `s3:authType` | Amazon S3는 다양한 인증 방법을 지원합니다([요청 인증(AWS 서명 버전 4)](sig-v4-authenticating-requests.md) 참조). 특정 인증 방법을 사용하도록 수신 요청을 제한하려면 선택적으로 이 조건 키를 사용할 수 있습니다. 예를 들어 요청 인증에 HTTP `Authorization` 헤더만 사용하도록 허용할 수 있습니다.<br />유효한 값: <br />`REST-HEADER` <br />`REST-QUERY-STRING` <br />`POST` <br />  | 
| `s3:signatureAge` | 인증된 요청에서 서명이 유효한 시간(밀리초)입니다.<br />이 조건은 다음에 적용됩니다.+ *미리 서명된 URL* - 가장 제한적인 조건이 적용됩니다. 자세한 내용은 [미리 서명된 URL로 작업](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-presigned-url.html)을 참조하세요.<br />+ *미리 서명된 POST* - 미리 서명된 POST를 사용하여 파일을 S3에 직접 업로드합니다. 자세한 내용은 [Amazon S3 POST 정책](https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-HTTPPOSTConstructPolicy.html)을 참조하세요.<br />서명 버전 2에서는 이 값이 항상 0으로 설정됩니다.<br />서명 버전 4에서는 서명 키가 최대 7일간 유효합니다. 따라서 서명도 최대 7일간 유효합니다. 이 조건을 사용하여 서명 연령을 추가로 제한할 수 있습니다. 자세한 내용은 [서명 요청 소개](sig-v4-authenticating-requests.md#signing-request-intro) 섹션을 참조하세요.<br />예시 값: `100` | 
| `s3:x-amz-content-sha256` | 이 조건 키를 사용하여 버킷에서 서명되지 않은 콘텐츠를 허용하지 않을 수 있습니다.<br />서명 버전 4를 사용할 때 `Authorization` 헤더를 사용하는 요청에 대해 서명 계산에 `x-amz-content-sha256` 헤더를 추가한 다음 해당 값을 해시 페이로드로 설정합니다. 이 조건 키는 `x-amz-content-sha256` 헤더를 쿼리 문자열 파라미터로 지원하지 않습니다.<br />버킷 정책에서 이 조건 키를 사용하여 페이로드에 서명하지 않은 업로드를 거부할 수 있습니다. 예를 들어 `Authorization` 헤더를 사용하여 요청을 인증하지만 페이로드에 서명하지 않는 업로드를 거부합니다. 자세한 내용은 [Authorization 헤더에 대한 서명 계산: 페이로드를 단일 청크로 전송(AWS 서명 버전 4)](sig-v4-header-based-auth.md) 섹션을 참조하세요.<br />유효한 값: `UNSIGNED-PAYLOAD` | 

## 서명 버전 4 관련 조건 키를 사용하는 버킷 정책 예제
<a name="bucket-policy-sig-v4-condition-key-example"></a>

다음 버킷 정책은 서명이 10분 이상 지난 경우 `examplebucket`의 객체에 대한 Amazon S3 미리 서명된 URL 요청을 모두 거부합니다.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Sid": "Deny a presigned URL request if the signature is more than 10 min old",
         "Effect": "Deny",
         "Principal": "*",
         "Action": "s3:*",
         "Resource": "arn:aws:s3:::examplebucket3/*",
         "Condition": {
            "NumericGreaterThan": {
               "s3:signatureAge": 600000
            }
         }
      }
   ]
}
```

------

다음 버킷 정책은 요청 인증에 `Authorization` 헤더를 사용하는 요청만 허용합니다. 모든 POST 또는 미리 서명된 URL 요청은 거부됩니다.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
         {
               "Sid": "Allow only requests that use Authorization header for request authentication. Deny POST or presigned URL requests.",
               "Effect": "Deny",
               "Principal": "*",
               "Action": "s3:*",
               "Resource": "arn:aws:s3:::examplebucket3/*",
               "Condition": {
                     "StringNotEquals": {
                           "s3:authType": "REST-HEADER"
                     }
               }
         }
   ]
}
```

------

다음 버킷 정책은 요청 인증에 미리 서명된 URL을 사용하는 요청을 거부합니다.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"DenyUploadsUsingPresignedURL",
         "Effect":"Deny",
         "Principal":"*",
         "Action":"s3:*",
         "Resource":"arn:aws:s3:::amzn-s3-demo-bucket1/*",
         "Condition":{
            "StringEquals":{
               "s3:authType":"{{REST-query-string}}"
            }
         }
      }
   ]
}
```

------

다음 버킷 정책은 서명되지 않은 페이로드가 있는 업로드를 거부합니다.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
         {
               "Sid": "Deny uploads with unsigned payloads that use the Authorization header.",
               "Effect": "Deny",
               "Principal": "*",
               "Action": "s3:*",
               "Resource": "arn:aws:s3:::examplebucket3/*",
               "Condition": {
                     "StringEquals": {
                           "s3:x-amz-content-sha256": "UNSIGNED-PAYLOAD"
                     }
               }
         }
   ]
}
```

------