AWS 요청 인증 방법

AWS 요청 인증 방법

SigV4에서 만든 서명을 요청에 실어 보내는 방법(Authorization 헤더, 사전 서명된 URL, 청크 서명)을 설명하는 페이지예요.

출처: 문서

본문

SigV4로 만든 서명은 다음 세 가지 방법 중 하나로 요청에 포함해 보낼 수 있어요.

1. Authorization 헤더를 사용한 인증

가장 일반적인 방법이에요. Authorization 헤더에 서명 정보를 넣어요. 헤더 형식은 다음과 같아요.

Authorization: AWS4-HMAC-SHA256 Credential=<access-key-id>/<scope>, SignedHeaders=<headers>, Signature=<signature>
  • Credential — 액세스 키 ID와 서명 범위(날짜/리전/서비스).
  • SignedHeaders — 서명에 포함된 헤더 목록 (세미콜론 구분).
  • Signature — 계산된 서명 값.

이 방식은 대부분의 AWS SDK와 애플리케이션에서 사용해요.

2. 쿼리 문자열(사전 서명된 URL) 인증

브라우저에서 직접 접근하거나, 공유 링크를 만들어야 할 때 사용하는 방식이에요. 서명 정보를 URL의 쿼리 파라미터로 넣어요.

GET https://service.example.com/path?
    X-Amz-Algorithm=AWS4-HMAC-SHA256
    &X-Amz-Credential=<access-key-id>%2F<scope>
    &X-Amz-Date=<timestamp>
    &X-Amz-Expires=3600
    &X-Amz-SignedHeaders=host
    &X-Amz-Signature=<signature>
  • X-Amz-Expires — 사전 서명된 URL이 유효한 시간(초). 단기 만료를 지정해요.

사전 서명된 URL을 만든 사람(URL에 서명한 사람)에게 해당 동작 권한이 있어야 URL이 동작해요.

3. 청크 서명 (HTTP 요청 본문) 인증

큰 본문을 스트리밍으로 보내는 경우(예: Amazon S3에 큰 객체 업로드) 사용하는 방식이에요. 본문을 여러 청크로 나누고 각 청크를 개별적으로 서명해요. 이 방식을 통해 전송 중 본문이 변경되지 않았음을 보장하면서도 전체 본문을 메모리에 올릴 필요 없이 큰 데이터를 보낼 수 있어요.

  • 각 청크는 aws-chunked 콘텐츠 인코딩으로 전송되고, 시그니처 체인(signature chain)으로 이전 청크와 연결돼요.

언제 어떤 방법을 쓸까

상황 권장 인증 방법
앱/서버에서 AWS API 호출 Authorization 헤더
브라우저에서 S3 객체 등에 직접 접근 사전 서명된 URL
대용량 객체 스트리밍 업로드 청크 서명

보안 모범 사례로, 사전 서명된 URL은 만료 시간을 짧게 설정하고 민감한 작업에는 다른 인증 방식을 사용하는 것을 권장해요.

더 알아보기 (Learn more)