고객 제공 키를 사용한 서버 측 암호화(SSE-C)

고객 제공 키를 사용한 서버 측 암호화(SSE-C) (Using server-side encryption with customer-provided keys (SSE-C))

범용 버킷에서 고객 제공 키(SSE-C)를 사용한 서버 측 암호화로 자체 암호화 키를 사용해 데이터를 암호화할 수 있어요.

출처: 문서

본문

서버 측 암호화는 저장 시 데이터를 보호하는 것이에요. 서버 측 암호화는 객체 데이터만 암호화하고 객체 메타데이터는 암호화하지 않아요. 범용 버킷에서 고객 제공 키(SSE-C)를 사용한 서버 측 암호화를 사용해 자체 암호화 키로 데이터를 암호화할 수 있어요. 요청의 일부로 제공하는 암호화 키로 Amazon S3는 디스크에 쓸 때 데이터 암호화를, 객체에 접근할 때 데이터 복호화를 관리해요. 따라서 데이터 암호화와 복호화를 수행하는 코드를 유지할 필요가 없어요. 해야 할 일은 제공하는 암호화 키를 관리하는 것뿐이에요.

2026년 4월부터 SSE-C는 모든 신규 범용 버킷과 SSE-C 암호화 객체가 없는 계정의 기존 버킷에서 기본적으로 비활성화돼요. 대부분의 최신 워크로드는 SSE-C가 매 요청마다 암호화 키를 제공해야 하므로 다른 사용자, 역할 또는 데이터를 운영하는 AWS 서비스와 접근을 공유하기 어렵게 만들기 때문에 대신 Amazon S3 관리 키(SSE-S3)나 AWS KMS 키(SSE-KMS)를 사용한 서버 측 암호화를 사용해요. SSE-KMS에 대해 자세히 알아보려면 AWS KMS 키를 사용한 서버 측 암호화(SSE-KMS)를 참고하세요.

워크로드에 SSE-C가 필요하다면 PutBucketEncryption API를 사용해 버킷의 기본 암호화 구성에서 BlockedEncryptionTypes를 NONE으로 설정해 SSE-C를 명시적으로 활성화해야 해요. SSE-C가 차단되어 있는 동안에는 SSE-C 암호화를 지정하는 모든 PutObject, CopyObject, PostObject, 멀티파트 업로드 또는 복제 요청이 HTTP 403 AccessDenied 오류로 거부돼요. 자세히 알아보려면 범용 버킷에 대한 SSE-C 차단 또는 차단 해제를 참고하세요.

SSE-C 사용에는 추가 요금이 없어요. 그러나 SSE-C를 구성하고 사용하는 요청에는 표준 Amazon S3 요청 요금이 부과돼요. 요금에 대한 정보는 Amazon S3 요금을 참고하세요.

중요 Amazon Simple Storage Service는 이제 모든 신규 범용 버킷에서 고객 제공 키(SSE-C)를 사용한 서버 측 암호화를 자동으로 비활성화하는 새 기본 버킷 보안 설정을 적용해요. 2026년 4월에 Amazon S3는 모든 신규 범용 버킷에서 모든 신규 쓰기 요청에 대해 SSE-C 암호화를 비활성화하는 업데이트를 배포했어요. SSE-C 암호화 객체가 없는 AWS 계정의 기존 버킷에서도 Amazon S3는 모든 신규 쓰기 요청에 대해 SSE-C를 비활성화했어요. 이 변경으로 인해 SSE-C 암호화가 필요한 애플리케이션은 새 버킷을 만든 후 PutBucketEncryption API 작업을 사용해 SSE-C를 의도적으로 활성화해야 해요. 이 변경에 대한 자세한 내용은 신규 버킷의 기본 SSE-C 설정 FAQ를 참고하세요.

SSE-C 사용 전 고려 사항

  • SSE-C를 사용할 때 S3는 암호화 키를 저장하지 않아요. 누구든 S3에서 SSE-C로 암호화된 데이터를 다운로드하게 하려면 매번 암호화 키를 제공해야 해요. 어떤 암호화 키로 어떤 객체를 암호화했는지 매핑을 직접 관리해요. 어떤 객체에 어떤 암호화 키를 제공했는지 추적하는 것은 사용자의 책임이에요. 즉, 암호화 키를 잃으면 객체를 잃는 것이에요. 암호화 키를 클라이언트 측에서 관리하므로 키 회전과 같은 추가 안전 장치도 클라이언트 측에서 관리해요. 이 설계는 데이터를 운영해야 하는 다른 사용자, 역할 또는 AWS 서비스와 SSE-C 키를 공유하기 어렵게 만들 수 있어요. AWS 전반의 SSE-KMS 지원이 광범위하기 때문에 대부분의 최신 워크로드는 SSE-KMS의 유연성이 부족한 SSE-C를 사용하지 않아요. SSE-KMS에 대해 자세히 알아보려면 AWS KMS 키를 사용한 서버 측 암호화(SSE-KMS)를 참고하세요. 이는 SSE-C로 암호화된 객체가 AWS 관리 서비스에서 기본적으로 복호화될 수 없음을 의미해요.
  • 요청에 SSE-C 헤더를 지정할 때는 HTTPS를 사용해야 해요. Amazon S3는 SSE-C를 사용할 때 HTTP로 이루어진 모든 요청을 거부해요. 보안 고려 사항으로, 실수로 HTTP로 보낸 키는 손상된 것으로 간주하는 것이 좋아요. 키를 폐기하고 적절히 교체하세요.
  • 버킷에 버전 관리가 활성화되어 있으면 업로드하는 각 객체 버전이 자체 암호화 키를 가질 수 있어요. 어떤 객체 버전에 어떤 암호화 키를 사용했는지 추적하는 것은 사용자의 책임이에요.
  • SSE-C는 Amazon S3 콘솔에서 지원되지 않아요. Amazon S3 콘솔로 객체를 업로드하고 SSE-C 암호화를 지정할 수 없어요. 또한 콘솔로 SSE-C를 사용해 저장된 기존 객체를 업데이트(예: 스토리지 클래스 변경 또는 메타데이터 추가)할 수도 없어요.
  • SSE-C는 새 버킷에서 기본적으로 차단되어 있어요. SSE-C 암호화로 객체를 업로드하기 전에 PutBucketEncryption API를 사용해 SSE-C를 명시적으로 활성화해야 해요. 자세한 내용은 범용 버킷에 대한 SSE-C 차단 또는 차단 해제를 참고하세요.

관련 주제

더 알아보기 (Learn more)