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