암호화
버킷 암호화 설정
버킷에 저장되는 객체를 보호하기 위해 버킷 생성 시 서버 측 암호화 방식을 선택할 수 있습니다.
암호화 방식 비교
| 암호화 방식 | 키 관리 주체 | 암호화 알고리즘 | 설명 |
|---|---|---|---|
| 서비스 관리형 키 (Service-managed key) | Object Storage 서비스 | AES256 | 서비스가 자동으로 관리하는 키를 사용하여 암호화합니다. 별도의 키 관리 없이 모든 객체에 자동으로 암호화가 적용됩니다. |
| 사용자 키 (SSE-KMS) | 사용자 (KMS 사용자 키) | AES256 | KMS 서비스에서 사용자가 직접 생성한 사용자 키로 버킷을 암호화합니다. 키에 대한 완전한 제어권을 보유하며, 키 사용 이력을 감사(Audit)할 수 있습니다. |
안내
- 버킷의 암호화 방식은 변경할 수 있습니다. 객체는 업로드 시점의 암호화 방식에 따라 암호화되므로, 방식 변경 전후에 업로드된 객체의 암호화 키가 서로 다를 수 있습니다.
- 사용자 키(SSE-KMS) 설정 직후 업로드: 버킷에 사용자 키(SSE-KMS) 암호화를 설정한 직후에는 암호화 설정이 완전히 반영되기까지 짧은 시간이 소요될 수 있습니다.
이 시간 동안 업로드된 객체는 서비스 관리형 키(Service-managed key)로 암호화될 수 있으므로, 암호화 설정 후 잠시 대기한 뒤 객체를 업로드하는 것을 권장합니다. - 암호화 방식 변경 후에는 변경 전 객체와 변경 후 객체 각각에 사용된 KMS 사용자 키에 대한 접근 권한이 있어야 정상적으로 복호화할 수 있습니다.
- KMS 사용자 키가 비활성화되거나 삭제된 경우, 해당 키로 암호화된 버킷의 객체에 접근할 수 없습니다.
SSE-KMS 사용 조건
SSE-KMS로 암호화된 버킷에 객체를 업로드하거나 조회하려면, 요청자의 자격증명이 다음 두 가지 권한을 모두 보유해야 합니다.
주의
두 권한 중 하나라도 누락된 경우 접근이 거부됩니다.
| 필요 권한 | 설명 |
|---|---|
| KMS 서비스의 IAM 역할 | KMS 서비스에서 키를 사용한 암호화 작업을 수행할 수 있는 최소 IAM 역할, 자세한 내용은 KMS 역할을 참고하시기 바랍니다 |
| KMS 사용자 키 접근 제어 권한 | 버킷 암호화에 사용된 KMS 사용자 키에 대한 접근 권한 KMS 키 접근 제어에 대한 자세한 내용은 KMS 서비스 가이드를 참고하시기 바랍니다 |
안내
Presigned URL을 통해 SSE-KMS 암호화 객체에 접근하는 경우에도, Presigned URL을 생성하는 자격 증명에 해당 KMS 사용자 키 접근 권한이 있어야 합니다.
프로젝트 외부 사용자와 SSE-KMS 암호화 버킷 공유 시 주의
버킷 권한은 도메인 내 모든 사용자(프로젝트 외부 포함)에게 부여할 수 있지만, KMS 사용자 키 접근 제어 권한은 해당 프로젝트 내 사용자에게만 부여할 수 있습니다.
따라서 SSE-KMS로 암호화된 버킷의 접근 권한을 프로젝트 외부 사용자에게 부여하더라도, 해당 사용자는 KMS 사용자 키 접근 권한을 가질 수 없어 암호화된 객체에 접근할 수 없습니다.
해결 방안
- 프로젝트 멤버로 초대: 외부 사용자를 해당 프로젝트의 멤버로 초대한 후, KMS 사용자 키 접근 제어에 해당 사용자를 추가합니다.
KMS 키 상태와 암호화 동작
SSE-KMS로 암호화된 버킷의 객체 암호화/복호화 가능 여부는 KMS 사용자 키의 상태에 따라 결정됩니다.
| KMS 키 상태 | 설명 | 신규 객체 암호화 | 기존 객체 복호화 |
|---|---|---|---|
| 준비(Pre-activation) | 키가 생성되었지만 운영 상태의 버전이 없는 상태 | 불가 | 불가 |
| 운영(Active) | 암호화 및 복호화 작업을 수행할 수 있는 상태 | 가능 | 가능 |
| 정지(Deactivated) | 비활성화되어 신규 암호화는 불가하나 기존 데이터는 복호화 가능한 상태 | 불가 | 가능 |
| 폐기(Destroyed) | 버전이 영구적으로 삭제되어 복구가 불가능한 상태 | 불가 | 불가 |
주의
KMS 사용자 키가 정지 또는 폐기 상태가 되면, 해당 키로 암호화된 버킷에 새로운 객체를 업로드할 수 없습니다. 또한 폐기 상태의 경우 기존 객체도 복호화할 수 없어 데이터에 영구적으로 접근이 불가능해집니다.
KMS 키 상태에 대한 자세한 내용은 KMS 키 상태를 참고하시기 바랍니다.
암호화 설정 변경
버킷의 기본 암호화 정보를 확인하고, 암호화 방식 또는 KMS 키를 변경할 수 있습니다.
- 카카오클라우드 콘솔 > Storage > Object Storage 메뉴로 이동합니다.
- 일반 버킷 목록에서 대상 버킷을 클릭합니다.
- 속성 탭의 기본 암호화 섹션에서 현재 암호화 방식과 키 정보를 확인합니다.
- [기본 암호화 설정] 버튼을 클릭합니다.
- 모달 창에서 변경할 암호화 방식과 KMS 키를 선택한 후 [저장] 버튼을 클릭합니다.
암호화 관련 유의 사항
주의
- 사용자 키(SSE-KMS) 설정 직후 업로드: 버킷에 사용자 키(SSE-KMS) 암호화를 설정한 직후에는 암호화 설정이 완전히 반영되기까지 짧은 시간이 소요될 수 있습니다. 이 시간 동안 업로드된 객체는 서비스 관리형 키(Service-managed key)로 암호화될 수 있으므로, 암호화 설정 후 잠시 대기한 뒤 객체를 업로드하는 것을 권장합니다.
- 업로드 시점 기준: 객체는 업로드 시점의 암호화 설정을 따릅니다. 버킷의 기본 암호화 방식을 변경해도 기존에 업로드된 객체의 암호화 방식은 변경되지 않습니다.
- 암호화 → 비암호화 전환 불가: 암호화된 버킷을 비암호화 버킷으로 전환할 수 없습니다.
- 비암호화 → 암호화 전환: 버킷 사용량(bytes)이 0인 경우에만 가능합니다.
- 암호화 방식 변경: Service-managed key와 SSE-KMS 간의 기본 암호화 방식 변경은 버킷 사용량과 무관하게 자유롭게 가능합니다.
- SSE-C 미지원: 고객 제공 키(SSE-C)는 지원하지 않습니다. 관련 헤더 사용 시 501 응답을 반환합니다.
- DeleteBucketEncryption 미지원: 버킷 암호화 설정 삭제는 지원하지 않습니다 (403 반환).