View a markdown version of this page

Amazon S3 서명 버전 4 인증 관련 정책 키 - Amazon Simple Storage Service

Amazon S3 서명 버전 4 인증 관련 정책 키

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

적용 가능한 키 설명

s3:signatureversion

인증된 요청에 대해 지원하려는 AWS Signature의 버전을 식별합니다. 인증된 요청의 경우 Amazon S3는 서명 버전 4와 서명 버전 2를 모두 지원합니다. 버킷 정책에 이 조건을 추가하여 특정 서명 버전을 요구할 수 있습니다.

유효한 값:

"AWS"는 서명 버전 2를 식별함

"AWS4-HMAC-SHA256"은 서명 버전 4를 식별함

s3:authType

Amazon S3는 다양한 인증 방법을 지원합니다(요청 인증(AWS 서명 버전 4) 참조). 특정 인증 방법을 사용하도록 수신 요청을 제한하려면 선택적으로 이 조건 키를 사용할 수 있습니다. 예를 들어 요청 인증에 HTTP Authorization 헤더만 사용하도록 허용할 수 있습니다.

유효한 값:

REST-HEADER

REST-QUERY-STRING

POST

s3:signatureAge

인증된 요청에서 서명이 유효한 시간(밀리초)입니다.

이 조건은 다음에 적용됩니다.

  • 미리 서명된 URL - 가장 제한적인 조건이 적용됩니다. 자세한 내용은 미리 서명된 URL로 작업을 참조하세요.

  • 미리 서명된 POST - 미리 서명된 POST를 사용하여 파일을 S3에 직접 업로드합니다. 자세한 내용은 Amazon S3 POST 정책을 참조하세요.

서명 버전 2에서는 이 값이 항상 0으로 설정됩니다.

서명 버전 4에서는 서명 키가 최대 7일간 유효합니다. 따라서 서명도 최대 7일간 유효합니다. 이 조건을 사용하여 서명 연령을 추가로 제한할 수 있습니다. 자세한 내용은 서명 요청 소개 섹션을 참조하세요.

예시 값: 100

s3:x-amz-content-sha256

이 조건 키를 사용하여 버킷에서 서명되지 않은 콘텐츠를 허용하지 않을 수 있습니다.

서명 버전 4를 사용할 때 Authorization 헤더를 사용하는 요청에 대해 서명 계산에 x-amz-content-sha256 헤더를 추가한 다음 해당 값을 해시 페이로드로 설정합니다. 이 조건 키는 x-amz-content-sha256 헤더를 쿼리 문자열 파라미터로 지원하지 않습니다.

버킷 정책에서 이 조건 키를 사용하여 페이로드에 서명하지 않은 업로드를 거부할 수 있습니다. 예를 들어 Authorization 헤더를 사용하여 요청을 인증하지만 페이로드에 서명하지 않는 업로드를 거부합니다. 자세한 내용은 Authorization 헤더에 대한 서명 계산: 페이로드를 단일 청크로 전송(AWS 서명 버전 4) 섹션을 참조하세요.

유효한 값: UNSIGNED-PAYLOAD

서명 버전 4 관련 조건 키를 사용하는 버킷 정책 예제

다음 버킷 정책은 서명이 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" } } } ] }