View a markdown version of this page

고객 제공 키(SSE-C)로 서버 측 암호화 사용 - Amazon Simple Storage Service

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

서버 측 암호화는 저장된 데이터를 보호하기 위한 것입니다. 서버 측 암호화는 객체 메타데이터가 아닌 객체 데이터만 암호화합니다. 범용 버킷에서 고객 제공 키를 사용한 서버 측 암호화(SSE-C)를 사용하여 자체 암호화 키로 데이터를 암호화할 수 있습니다. 요청의 일부로 제공한 암호화 키를 사용하여 Amazon S3는 디스크에 쓸 때 데이터 암호화를 관리하고 객체에 액세스할 때 데이터 암호 해독을 관리합니다. 따라서 데이터 암호화 및 암호 해독을 수행하기 위해 어떠한 코드도 사용할 필요가 없으며, 사용자는 자신이 제공한 암호화 키를 관리하기만 하면 됩니다.

Amazon S3의 최신 사용 사례에서는 더 이상 SSE-C를 사용하지 않습니다. SSE-C는 Amazon S3 관리형 키(SSE-S3) 또는 AWS KMS 키를 사용한 서버 측 암호화(SSE-KMS)에 비해 유연성이 부족하기 때문입니다. SSE-C는 SSE-C 암호화 데이터와 상호 작용할 때마다 암호화 키를 제공해야 하므로 SSE-C 키를 S3 버킷에서 데이터를 읽는 다른 사용자, 역할 또는 AWS 서비스와 공유하여 데이터를 운영할 수 없습니다. AWS에서 SSE-KMS에 대한 광범위한 지원으로 인해 대부분의 최신 워크로드는 SSE-KMS의 유연성이 부족하기 때문에 SSE-C 암호화를 사용하지 않습니다. SSE-KMS에 대한 자세한 내용은 AWS KMS 키를 사용한 서버 측 암호화(SSE-KMS) 사용 섹션을 참조하세요.

버킷에 기록되는 객체에 SSE-C 암호화가 사용되지 않도록 하려면 버킷의 기본 암호화 구성을 변경할 때 SSE-C 암호화를 차단합니다. 범용 버킷에 대해 SSE-C가 차단되면 SSE-C 암호화를 지정하는 모든 PutObject, CopyObject, PostObject, 멀티파트 업로드 또는 복제 요청이 HTTP 403 AccessDenied 오류와 함께 거부됩니다. SSE-C 차단에 대한 자세한 내용은 범용 버킷에 대한 SSE-C 차단 또는 차단 해제 섹션을 참조하세요.

SSE-C 사용에 따르는 추가 비용은 없습니다. 그러나 SSE-C 구성 및 사용 요청에는 표준 Amazon S3 요청 요금이 발생합니다. 요금에 대한 자세한 내용은 Amazon S3 요금을 참조하십시오.

중요

2025년 11월 19일에 발표된 대로 Amazon Simple Storage Service는 모든 새로운 범용 버킷에 대해 고객 제공 키(SSE-C)를 사용한 서버 측 암호화를 자동으로 비활성화하는 새로운 기본 버킷 보안 설정을 배포합니다. SSE-C 암호화 객체가 없는 AWS 계정의 기존 버킷의 경우 Amazon S3는 모든 새 쓰기 요청에 대해 SSE-C도 비활성화합니다. SSE-C를 사용하는 AWS 계정의 경우 Amazon S3는 해당 계정의 기존 버킷에 대한 버킷 암호화 구성을 변경하지 않습니다. 이 배포는 2026년 4월 6일에 시작되었으며 AWS 중국 및 AWS GovCloud(미국) AWS 리전을 포함한 37개 리전에서 향후 몇 주 동안 완료됩니다.

이러한 변경 사항에 따라 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를 사용하여 저장된 기존 객체를 업데이트할 수 도 없습니다(예: 스토리지 클래스 변경 또는 메타데이터 추가).