초오오오오오짜개발자의낙서장
AWS signature version 4 본문
진행하는 프로젝트에서 AWS Lamda, Bedrock을 사용하다보니 api 호출할일이 생겼다.
일반적인 endpoint 만으로는 응답이 오지 않아 원인을 찾던중 AWS 서명이 필요한 것을 알게되어 정리를 좀 하려 한다.
- 요청에서 보내는 인증 정보에는 서명이 포함되어야 합니다. AWS Signature Version 4(SigV4)는 AWS API 요청에 인증 정보를 추가하기 위한 AWS 서명 프로토콜입니다.
- 비밀 액세스 키를 사용하여 API 요청에 서명하지 않습니다. 대신 SigV4 서명 프로세스를 사용합니다. 서명 요청:
- 요청 세부 정보를 기반으로 표준 요청 생성.
- AWS 자격 증명을 사용하여 서명 계산.
- 이 서명을 요청에 Authorization 헤더로 추가.
- 비대칭 서명 버전 4(SigV4a)는 새로운 알고리즘을 사용한 서명을 지원하고 두 개 이상의 AWS 리전에서 확인 가능한 개별 서명을 생성하는 것을 지원하는 확장 프로그램입니다.
요청에 서명하는 경우
AWS에 API 요청을 전송하는 사용자 지정 코드를 작성할 때 요청에 서명하는 코드를 포함해야 합니다. 사용자 지정 코드를 작성하는 이유는 다음과 같습니다.
- AWS SDK가 없는 프로그래밍 언어로 작업하는 경우
- AWS에 요청을 전송하는 방법을 완벽하게 제어해야 하는 경우
API 요청은 AWS SigV4로 액세스를 인증하는 반면, AWS SDK와 AWS CLI는 사용자가 제공하는 액세스 키를 사용하여 요청을 인증합니다.
요청에 서명하는 이유
서명 프로세스는 다음과 같은 방법으로 요청을 보호할 수 있습니다.
- 요청자의 ID 확인
- 인증된 요청에는 액세스 키(액세스 키 ID, 비밀 액세스 키)를 사용하여 만든 서명이 필요합니다. 임시 보안 인증 정보를 사용하는 경우 서명 계산에 보안 토큰도 필요합니다.
- 전송 중인 데이터 보호
- 요청이 전송되는 동안 훼손되는 것을 방지하기 위해 일부 요청 요소를 사용하여 요청의 해시(다이제스트)를 계산하고 결과 해시 값을 요청의 일부로 포함합니다. AWS 서비스에서는 요청이 수신되면 동일한 정보를 사용하여 해시를 계산한 후 요청에 있는 해시 값과 비교합니다. 값이 일치하지 않으면 AWS에서 요청을 거부합니다.
- 잠재적 재생 공격으로부터 보호
- 대부분의 경우 요청서의 타임스탬프 시간으로부터 5분 이내에 AWS에 요청이 도착해야 합니다. 그렇지 않으면 AWS가 요청을 거부합니다.
위와같이 필요한 내용이 좀 많다.
한번 슥 보고 필요할때 써본다.
'Back-end > Cloud' 카테고리의 다른 글
| 스케일 업, 스케일 아웃 (0) | 2025.09.21 |
|---|---|
| AWS bedrock에 사용할 데이터 생성기 (1) | 2025.09.14 |
| MSA - 개요 (0) | 2025.06.01 |
