AWS API 요청에 서명 - AWS 일반 참조

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWS API 요청에 서명

HTTP 요청을 AWS에 전송할 때 AWS에서 보낸 사람을 식별할 수 있도록 요청에 서명합니다. 액세스 키 ID와 보안 액세스 키로 구성된 액세스 키를 사용하여 요청에 서명합니다. 일부 요청(예: Amazon Simple Storage Service(Amazon S3)에 대한 익명 요청, AWS Security Token Service(AWS STS)의 일부 API 작업(예: AssumeRoleWithWebIdentity)에 대한 익명 요청)에는 서명이 필요하지 않습니다.

참고

HTTP 요청을 수동으로 생성하려는 경우에만 HTTP 요청에 서명하는 방법을 알아야 합니다. AWS Command Line Interface(AWS CLI) 또는 AWS SDK 중 하나를 사용하여 AWS에 요청할 경우 도구를 구성할 때 지정한 액세스 키를 사용하여 도구가 요청에 자동으로 서명합니다. 따라서 이러한 도구를 사용할 경우 요청에 서명하는 방법을 알 필요가 없습니다.

액세스 키 ID를 생성하고, 보고, 다운로드하는 방법은 프로그래밍 방식 액세스을 참조하십시오.

요청에 서명하는 경우

AWS에 HTTP 요청을 보내는 사용자 지정 코드를 작성할 때 요청에 서명하는 코드를 포함해야 합니다. 이렇게 해야 하는 경우는 다음과 같습니다.

  • AWS SDK가 없는 프로그래밍 언어로 작업하는 경우

  • AWS에 요청을 전송하는 방법을 완벽하게 제어하려는 경우

AWS Command Line Interface(AWS CLI) 또는 AWS SDK 중 하나를 사용할 경우 요청에 서명할 필요가 없습니다. 이러한 도구에서는 서명 계산, 요청 재시도 처리, 오류 처리 등과 같은 연결 세부 정보를 관리합니다. 대부분의 경우 와 상호 작용하는 애플리케이션 작업을 시작하는 데 도움이 되는 샘플 코드, 자습서 및 기타 리소스가 포함되어 있습니다.

요청에 서명하는 이유

서명 프로세스는 다음과 같은 방법으로 요청을 보호할 수 있습니다.

  • 요청자의 ID 확인

    서명은 올바른 액세스 키를 가진 사람이 요청을 전송했음을 확인합니다. 자세한 내용은 AWS 자격 증명 이해 및 가져오기 단원을 참조하십시오.

  • 전송 중인 데이터 보호

    요청이 전송되는 동안 훼손되는 것을 방지하기 위해 일부 요청 요소를 사용하여 요청의 해시(다이제스트)를 계산하고 결과 해시 값을 요청의 일부로 포함합니다. AWS 서비스에서는 요청이 수신되면 동일한 정보를 사용하여 해시를 계산한 후 요청에 있는 해시 값과 비교합니다. 값이 일치하지 않으면 에서 요청을 거부합니다.

  • 잠재적 재생 공격으로부터 보호

    대부분의 경우 요청서의 타임스탬프 시간으로부터 5분 이내에 AWS에 요청이 도착해야 합니다. 그렇지 않으면 가 요청을 거부합니다.

요청에 서명하기

요청에 서명하려면 먼저 요청의 해시(다이제스트)를 계산해야 합니다. 그런 다음 해시 값, 요청의 그 밖의 정보 및 보안 액세스 키를 사용하여 서명으로 알려진 다른 해시를 계산합니다. 그리고 나서 다음 한 가지 방법으로 요청에 서명을 추가합니다.

  • HTTP Authorization 헤더 사용.

  • 요청에 쿼리 문자열 값 추가. 이 경우, 서명이 URL의 일부이므로 이 URL 유형을 미리 서명된 URL이라고 합니다.

서명 버전

AWS에서는 두 서명 버전 즉, 서명 버전 4 및 서명 버전 2를 지원합니다. 를 사용해야 합니다. 모든 AWS 서비스에서는 서명 버전 4(서명 버전 2가 필요한 Amazon SimpleDB 제외)를 지원합니다. 두 버전을 모두 지원하는 AWS 서비스에 대해 서명 버전 4를 사용하는 것이 좋습니다.

모든 AWS 리전에서는 서명 버전 4를 지원합니다.