피드로 돌아가기
S3 Presigned URLs SSE-KMS: Common Pitfalls and How to Avoid Them
Dev.toDev.to
Security

SSE-KMS 전환 시 Presigned URL 권한 누락 및 SigV4 필수 적용을 통한 보안 설계 최적화

S3 Presigned URLs SSE-KMS: Common Pitfalls and How to Avoid Them

Yuichi Sato2026년 6월 16일8intermediate

Context

SSE-S3에서 SSE-KMS로 암호화 방식을 전환하며 Presigned URL 접근 시 권한 오류 발생. S3 자체 권한 외에 KMS Key에 대한 명시적 접근 제어가 추가로 요구되는 아키텍처적 특성으로 인한 병목 지점 발생.

Technical Solution

  • Presigned URL 생성자의 IAM Role에 kms:Decrypt 권한을 부여하여 S3의 데이터 키 복호화 요청 처리
  • PUT 요청 시 암호화 데이터 키 생성을 위한 kms:GenerateDataKey 권한 추가 할당
  • Multipart Upload 시 각 파트의 데이터 키 일관성 유지를 위한 kms:Decrypt 권한 병행 적용
  • Boto3 클라이언트 설정 내 Config(signature_version="s3v4") 명시를 통한 Signature Version 4 강제 적용
  • IAM Policy 외에 KMS Key Policy 내 Principal 허용 설정을 통한 다중 계층 보안 검증 구현
  • PUT 요청 헤더와 시그니처 간 SSE 파라미터 일치 설계를 통한 SignatureDoesNotMatch 오류 방지

- GET 요청용 URL 생성자에게 kms:Decrypt 권한이 부여되었는지 확인 - PUT 요청용 URL 생성자에게 kms:GenerateDataKey 권한이 부여되었는지 확인 - AWS SDK(Boto3 등) 사용 시 SigV4 프로토콜 사용 여부 명시적 설정 - KMS Key Policy에서 생성자 Principal의 접근 허용 여부 검토 - Multipart Upload 구현 시 create_multipart_upload 단계의 SSE 파라미터 설정 검증

원문 읽기