API 요청용 AWS Signature Version 4 - AWS Identity and Access Management

API 요청용 AWS Signature Version 4

중요

AWS SDK(샘플 코드 및 라이브러리 참조) 또는 AWS Command Line Interface(AWS CLI) 도구를 사용하여 API 요청을 AWS로 전송하는 경우 SDK 및 CLI 클라이언트는 사용자 요청 인증에 사용자가 제공한 액세스 키를 사용하므로 서명 프로세스를 건너뛸 수 있습니다. 그럴 만한 이유가 없는 경우 항상 SDK 또는 CLI를 사용하는 것이 좋습니다.

여러 서명 버전을 지원하는 리전에서는 수동 서명을 요청하는 경우 사용할 서명 버전을 지정해야 합니다. 다중 리전 액세스 포인트로 요청을 공급하는 경우 SDK와 CLI가 자동으로 추가 구성 없이 서명 버전 4A를 사용하는 것으로 전환됩니다.

요청에서 보내는 인증 정보에는 서명이 포함되어야 합니다. AWS Signature Version 4(SigV4)는 AWS API 요청에 인증 정보를 추가하기 위한 AWS 서명 프로토콜입니다.

비밀 액세스 키를 사용하여 API 요청에 서명하지 않습니다. 대신 SigV4 서명 프로세스를 사용합니다. 서명 요청:

  1. 요청 세부 정보를 기반으로 표준 요청 생성.

  2. AWS 자격 증명을 사용하여 서명 계산.

  3. 이 서명을 요청에 Authorization 헤더로 추가.

AWS에서는 이 프로세스를 복제하고 서명을 확인하여 그에 따라 액세스를 허용하거나 거부합니다.

참고

AWS는 다중 리전 API 요청에 대한 서명을 지원하는 확장 기능인 Signature Version 4A도 지원합니다. 자세한 정보는 GitHub에서 sigv4a-signing-examples 프로젝트를 참조하세요.

AWS SigV4 작동 방식

다음 다이어그램은 서명을 계산하는 일반적인 프로세스를 보여줍니다.

서명할 문자열, 서명 키, 계산된 서명을 비롯한 서명 부분의 이미지.
  1. 서명할 문자열은 요청 유형에 따라 다릅니다. 예를 들어 HTTP Authorization 헤더 또는 쿼리 파라미터를 인증에 사용하는 경우 요청 요소 조합을 사용하여 서명할 문자열을 생성합니다. HTTP POST 요청의 경우 요청의 POST 정책은 서명하는 문자열입니다.

  2. 서명 키는 각 단계의 결과를 다음 단계에 제공하는 일련의 계산입니다. 마지막 단계는 서명 키입니다.

  3. AWS 서비스에서 인증된 요청을 수신하면 요청에 포함된 인증 정보를 사용하여 서명을 다시 생성합니다. 서명이 일치하는 경우 서비스에서 요청을 처리합니다. 그렇지 않으면 서비스에서 요청을 거부합니다.

자세한 내용은 AWS API 요청 서명의 요소 단원을 참조하십시오.

요청에 서명하는 경우

AWS에 API 요청을 전송하는 사용자 지정 코드를 작성할 때 요청에 서명하는 코드를 포함해야 합니다. 사용자 지정 코드를 작성하는 이유는 다음과 같습니다.

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

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

API 요청은 AWS SigV4로 액세스를 인증하는 반면, AWS SDK와 AWS CLI는 사용자가 제공하는 액세스 키를 사용하여 요청을 인증합니다. AWS SDK 및 AWS CLI를 사용한 인증에 대한 자세한 내용은 추가 리소스의 내용을 참조하세요.

요청에 서명하는 이유

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

  • 요청자의 ID 확인

    인증된 요청에는 액세스 키(액세스 키 ID, 비밀 액세스 키)를 사용하여 만든 서명이 필요합니다. 임시 보안 인증 정보를 사용하는 경우 서명 계산에 보안 토큰도 필요합니다. 자세한 내용은 AWS 보안 자격 증명 프로그래밍 방식 액세스를 참조하세요.

  • 전송 중인 데이터 보호

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

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

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

AWS SigV4는 HTTP Authorization 헤더에서 또는 URL의 쿼리 문자열로 표현될 수 있습니다. 자세한 내용은 인증 방법 단원을 참조하십시오.

추가 리소스