고객 제공 암호화 키(CSEK)는 Google Cloud Storage와 Google Compute Engine의 기능입니다. 자체 암호화 키를 제공할 경우 Google은 이 키를 사용하여 데이터를 암호화 및 복호화하는 데 사용되는 Google 생성 키를 보호합니다.
이 주제에 사용되는 용어:
데이터 암호화 키(DEK): 데이터 암호화에 사용되는 키
키 암호화 키(KEK): 데이터 암호화 키를 암호화하거나 '래핑'하는 데 사용되는 키
Cluster Manager: Google의 프로덕션 인프라의 Cluster Manager ID에서 작동하는 프로세스 모음. 디스크 및 VM 인스턴스와 같이, Compute Engine 리소스를 관리하기 위한 논리를 구현합니다. 이러한 리소스에 관련된 메타데이터를 저장합니다.
Instance Manager: Google의 프로덕션 인프라의 Instance Manager ID에서 작동하는 프로세스 모음. VM 시작/중지 또는 디스크 연결/분리와 같이, 플릿에서 VM 인스턴스(프로세스)에 대한 수정을 실행합니다. Cluster Manager는 임의 시점에서 VM의 상태가 어떤 상태여야 할지 지정하고, Instance Manager는 그에 따라 실행하는 방식으로 작동합니다.
고객 제공 암호화 키의 작동 방식
다음 섹션에서는 고객 제공 암호화 키가 Google Cloud Storage 및 Google Compute Engine과 어떻게 작동하는지에 관한 정보를 제공합니다.
Cloud Storage
Cloud Storage에서 고객 제공 암호화 키를 사용할 때:
API 호출에 원시 CSEK를 제공합니다. 이 키는 Google 프런트 엔드에서 저장소 시스템의 메모리로 전달됩니다. 이 키는 Google Cloud Storage에서 사용자의 데이터에 대한 키 암호화 키로 사용됩니다.
원시 CSEK는 메모리에 원시 청크 키를 만들기 위해 래핑된 청크 키를 래핑 해제하는 데 사용됩니다. 이러한 키는 저장소 시스템에 저장된 데이터 청크를 복호화하는 데 사용됩니다. 이 키는 Google Cloud Storage에서 사용자의 데이터에 대한 데이터 암호화 키(DEK)로 사용됩니다.
키 | 저장 위치 | 목적 | 다음 시점까지 액세스 가능 |
---|---|---|---|
원시 CSEK | 저장소 시스템 메모리 | 고객이 제공합니다. 청크 키용 키 암호화 키(KEK). 청크 키를 래핑합니다. |
고객 요청 작업(예: insertObject 또는 getObject )이 완료될 때까지 |
래핑된 청크 키 | 저장 기기 | 저장된 후 미사용 상태의 청크 키를 보호합니다. | 저장소 객체가 삭제될 때까지 |
원시 청크 키 | 저장 기기의 메모리 | 데이터용 데이터 암호화 키(DEK). 데이터를 읽고 디스크에 씁니다. |
고객 요청 작업이 완료될 때까지 |
Compute Engine
Compute Engine에서 고객 제공 암호화 키를 사용할 때:
API 호출에 원시 CSEK를 제공합니다.
- 선택적으로 공개 키 래핑 CSEK를 제공할 수 있습니다.
이 키는 Google 프런트 엔드에서 Cluster Manager의 프런트 엔드로 전달됩니다.
- 래핑된 CSEK가 제공된 경우 이 CSEK는 Google 소유의 비대칭 래핑 키를 사용하여 래핑 해제됩니다.
- 원시 CSEK는 영구 디스크마다 암호화 난스와 결합되어 CSEK 파생 키를 생성합니다. 이 키는 Google Compute Engine에서 사용자의 데이터에 대한 키 암호화 키로 사용됩니다.
Cluster Manager 프런트 엔드에서 CSEK와 CSEK 파생 키는 모두 Cluster Manager 메모리에만 유지됩니다. CSEK 파생 키는 Cluster Manager 인스턴스 메타데이터와 Instance Manager 메타데이터에 저장되어 있는 래핑된 디스크 키를 래핑 해제하기 위해 Cluster Manager 메모리에서 사용되며, 이러한 메타데이터에서 자동 재시작이 활성화됩니다(이 메타데이터는 인스턴스 메타데이터와 다름).
- CSEK 파생 키는 디스크를 만들 때 원시 디스크 키를 래핑하고 디스크에 액세스할 때 원시 디스크 키를 래핑 해제하는 데 사용됩니다.
- 자동 재시작이 활성화되는 경우 비정상 종료 발생 시 VM을 다시 시작할 수 있도록 VM의 수명이 끝날 때까지 Cluster Manager가 래핑된 디스크 키를 유지합니다. 래핑된 디스크 키는 Google 소유의 대칭 래핑 키로 래핑됩니다. 이 키의 권한에 따라 Google Compute Engine만이 이 키를 사용할 수 있습니다.
- 실시간 이전이 사용되는 경우 이전 VM 인스턴스 메모리에서 새 VM 인스턴스 메모리로 원시 디스크 키가 전달되며 키 복사에 Instance Manager 또는 Cluster Manager가 관여하지 않습니다.
원시 디스크 키는 Cluster Manager, Instance Manager 및 가상 머신의 메모리로 전달됩니다. 이러한 키는 Google Compute Engine에서 사용자 데이터의 데이터 암호화 키로 사용됩니다.
키 | 보유자 | 목적 | 다음 시점까지 액세스 가능 |
---|---|---|---|
원시 CSEK | Cluster Manager 프런트 엔드 | 고객이 제공합니다. 암호화 난스를 추가하여 CSEK 파생 키를 파생하는 데 사용됩니다 |
고객 요청 작업(예: instances.insert , instances.attachDisk )이 완료될 때까지 |
공개 키 래핑 CSEK (선택사항 - RSA 키 래핑이 사용되는 경우) |
Cluster Manager 프런트 엔드 | 고객이 선택적으로 제공합니다. Google 소유 비대칭 키로 최초 래핑 해제하여 CSEK 파생 키를 파생하는 데 사용됩니다. |
고객 요청 작업이 완료될 때까지 |
비대칭 래핑 키 (RSA 키 래핑이 사용되는 경우) |
Google의 내부 키 관리 서비스 | 고객이 제공한 RSA 래핑 키를 래핑 해제하는 데 사용됩니다. | 무기한 |
CSEK 파생 키 | Cluster Manager 프런트엔드 | 디스크 키용 키 암호화 키(KEK). 디스크 키를 래핑합니다. |
키 래핑 또는 래핑 해제 작업이 완료될 때까지 |
Google 래핑 디스크 키 (선택사항 - 자동 재시작이 사용되는 경우) |
Cluster Manager 프런트 엔드 | 실행 중인 인스턴스에 연결된 디스크의 경우 저장된 후 미사용 상태의 디스크 키를 보호합니다. VM 메모리가 손실된 경우 인스턴스를 다시 시작합니다(예: 호스트 장애). |
VM이 중지되거나 삭제될 때까지 |
원시 디스크 키 | 가상 머신 모니터(VMM) 메모리, 클러스터 관리자(CM) 메모리 |
데이터용 데이터 암호화 키(DEK). 데이터를 읽고 디스크에 쓰고, VM을 라이브 마이그레이션하고, 인플레이스 업그레이드를 수행합니다. |
VM이 중지되거나 삭제될 때까지 |
Google 래핑 CSEK 파생 키 | Cluster Manager 데이터베이스 | 장애가 발생할 경우 작업을 다시 시작합니다. | 고객 요청 작업이 완료될 때까지 |
.
고객 제공 암호화 키 보호 방법
다음 섹션에서는 고객 제공 암호화 키가 Google Cloud Platform 인프라와 메모리 내에서 이동할 때 디스크에서 어떻게 보호되는지에 관한 정보를 제공합니다.
디스크에서
원시 CSEK, CSEK 파생 키 및 원시 청크/디스크 키는 암호화되지 않은 상태로는 결코 디스크에 저장되지 않습니다. 원시 청크/디스크 키는 CSEK 파생 키와 자동 재시작이 사용되는 Google 키로 래핑되어 저장됩니다. Google은 사용자의 키를 서버에 영구 저장하지 않습니다.
인프라 내에서 이동할 때
각 서비스는 인프라에서 제공하는 액세스 관리 기능을 사용하여 통신 가능한 다른 서비스를 정확히 지정합니다. 허용된 서비스 계정 ID의 허용 목록으로 서비스를 구성하며 그러면 인프라가 이 액세스 제한사항을 자동으로 적용합니다. 서비스 ID, 무결성 및 격리에 대해 자세히 알아보세요.
이전 섹션에서 설명한 RPC 인증 및 승인 기능 외에도 인프라는 네트워크의 RPC 데이터에 대한 암호화 개인정보 보호 및 무결성을 제공합니다. 서비스는 각 인프라 RPC에 대해 원하는 암호화 보호의 수준을 구성할 수 있고 고객 제공 암호화 키에 이러한 서비스를 사용할 수 있습니다. 서비스 간 통신의 암호화에 대해 자세히 알아보세요.
메모리 내
키 자료는 위에서 상술한 바와 같이 Cluster Manager 메모리와 가상 머신 모니터 메모리를 포함한 다양한 시스템의 메모리에 상주합니다. 이러한 시스템의 메모리에 대한 액세스는 예외적으로만(예: 이슈가 발생할 경우) 허용되며 액세스 제어 목록에 의해 관리됩니다. 이러한 시스템은 메모리 덤프를 사용 중지하거나 메모리 덤프에 있는 키 자료를 자동으로 검색합니다. 작업 자체에 대한 액세스는 서비스 유지를 목적으로 필요에 따라 소수의 사이트 안정성 엔지니어로 한정되고, 로그에 대한 액세스는 디버깅을 위해 이러한 기능이 필요한 소수의 소프트웨어 엔지니어로 한정됩니다.