고객 관리 암호화 키(CMEK)

기본적으로 Cloud Spanner의 데이터를 포함하여 Google Cloud에서 저장 데이터는 Google에서 관리되는 기본 암호화를 사용하여 보호됩니다. Google Cloud는 사용자의 추가 작업 없이 이 기본 암호화를 처리하고 관리합니다.

데이터를 보호하는 키와 관련된 특정 규정 준수 또는 규제 요구사항이 있으면 Cloud Spanner에 고객 관리 암호화 키(CMEK)를 사용할 수 있습니다. 데이터를 보호하는 암호화 키를 Google이 관리하는 대신 사용자가 Cloud Key Management Service(KMS)에서 제어 및 관리하는 키를 사용하여 Cloud Spanner 데이터베이스가 보호됩니다. 대칭 키, Cloud HSM 키 또는 Cloud External Key Manager 키일 수 있습니다.

이 페이지에서는 Cloud Spanner용 CMEK에 대해 설명합니다. CMEK를 사용 설정하는 시기와 이유를 포함한 일반적인 CMEK에 대한 자세한 내용은 Cloud KMS 문서를 참조하세요.

기능

  • 데이터 액세스 제어: 관리자가 Cloud Spanner에서 저장 데이터 보호를 위해 사용되는 키를 순환하고, 액세스 권한을 관리하고, 사용 중지하거나 삭제할 수 있습니다.
  • 감사 기능: 프로젝트에서 Cloud KMS API에 대해 감사 로깅을 사용 설정할 경우 Cloud Spanner에서 수행되는 것을 포함하여 키에 대한 모든 작업을 Cloud Logging에서 로깅하고 확인할 수 있습니다. Cloud EKM 키는 모든 키 요청에 근거 필드를 추가하는 키 액세스 근거를 지원합니다. 일부 외부 키 관리 파트너를 사용하면 근거에 따라 이러한 요청을 자동으로 승인하거나 거부할 수 있습니다.
  • 성능: Cloud Spanner 성능 또는 서비스수준계약에는 변경사항이 없습니다.

가격 책정

Cloud Spanner는 다른 데이터베이스와 같은 방식으로 CMEK 사용 데이터베이스 비용을 청구합니다. Cloud Spanner 비용은 추가되지 않습니다. 자세한 내용은 Cloud Spanner 가격 책정을 참조하세요.

키 비용 및 해당 키를 사용한 모든 암호화 작업에 대해 Cloud KMS에서 비용이 청구됩니다(Cloud Spanner가 암호화/복호화를 위해 키를 사용하는 경우). 이러한 비용은 Cloud Spanner에서 생성되는 예상 암호화 작업 수를 기준으로 최소한으로 예상할 수 있습니다. 자세한 내용은 Cloud KMS 가격 책정을 참조하세요.

CMEK로 보호되는 대상

CMEK 사용 데이터베이스에서 Cloud Spanner는 Cloud KMS 키를 사용하여 저장 데이터를 보호합니다. 여기에는 디스크 또는 플래시에 저장되는 데이터베이스의 데이터가 포함됩니다.

일부 예외가 적용됩니다. 다음 유형의 데이터는 CMEK 키가 아닌 Google 기본 저장 데이터 암호화로 보호됩니다.

  • 범위 경계를 표시하는 행 키의 하위 집합
  • 코어 덤프 및 운영 로그를 포함한 디버깅 데이터
  • 전송 중 데이터 또는 메모리에 있는 데이터
  • 데이터베이스 메타데이터

Cloud Spanner에는 세 가지 암호화 레이어가 있습니다. 저장 데이터는 하위 파일 단위로 분리되어 저장되고 각 단위는 스토리지 수준에서 개별 암호화 키로 암호화됩니다. 청크에 포함된 데이터를 암호화하기 위해 사용되는 키를 DEK(데이터 암호화 키)라고 부릅니다. Google에는 많은 양의 키가 사용되고, 짧은 지연 시간과 고가용성이 요구되기 때문에, 이러한 키는 암호화 대상 데이터 근처에 저장됩니다. DEK는 키 암호화 키(KEK)로 암호화(또는 '래핑')됩니다. 마지막으로 각 KEK는 고객 관리 암호화 키로 암호화됩니다.

CMEK 키를 순환할 때 Cloud Spanner는 CMEK 키의 최신 주 버전을 포함하는 중간 KEK만 다시 암호화합니다. 다시 암호화가 완료되었으면 이전 버전의 CMEK 키를 사용 중지하거나 삭제해도 데이터베이스에 대한 액세스가 사용 중지되지 않습니다. 또한 데이터베이스 보호를 위해 사용되는 키 버전도 확인할 수 있습니다.

CMEK를 사용하는 경우

"고객 관리 암호화 키를 사용한 암호화를 보여주는 다이어그램"

CMEK를 사용하지 않는 경우

"Google 관리 암호화 키를 사용한 암호화를 보여주는 다이어그램"

CMEK 사용 설정

Cloud Spanner 데이터베이스에 CMEK를 사용하려면 새 데이터베이스를 만들고 데이터베이스 생성 시 Cloud KMS 키를 지정해야 합니다.

Google 관리 Cloud Spanner 서비스 계정Cloud KMS CryptoKey Encrypter/Decrypter(roles/cloudkms.cryptoKeyEncrypterDecrypter) 역할을 부여한 후 Cloud Spanner가 키에 액세스할 수 있습니다.

자세한 내용은 CMEK 사용을 참조하세요.

세션 관리 및 데이터에 대한 트랜잭션 수행을 위해 사용되는 것과 같은 Cloud Spanner의 데이터 액세스 API는 CMEK 사용 및 Google 관리 데이터베이스 모두 정확하게 동일합니다. 데이터를 읽거나 쓸 때 애플리케이션이 키 또는 암호화 구성을 지정할 필요가 없습니다. 모든 암호화가 서비스에서 처리됩니다.

키 관리

키 관리 작업은 Cloud KMS를 사용하여 수행됩니다. Cloud Spanner는 Cloud KMS에서 전파될 때까지 어떤 키 변경사항도 검색하거나 대응할 수 없습니다. 키 사용 중지 또는 삭제와 같은 일부 작업은 전파되는 데 최대 3시간까지 걸릴 수 있고, 권한 변경사항은 일반적으로 훨씬 더 빠르게 전파됩니다.

데이터베이스가 생성된 후 Cloud Spanner는 키가 계속 유효한지 확인하기 위해 약 5분 간격으로 Cloud KMS를 호출합니다.

Cloud Spanner에서 Cloud KMS 키가 사용 중지되었거나 삭제된 것으로 감지되면 데이터베이스를 액세스할 수 없게 만드는 작업이 즉시 시작됩니다. 세션, 읽기, 쓰기를 포함하여 데이터베이스에 대한 모든 후속 호출은 FAILED_PRECONDITION 오류를 반환합니다. KMS key required by the Spanner resource is not accessible.

Cloud Spanner의 Cloud KMS 호출로 이전에 사용 중지된 키가 다시 사용 설정된 것으로 확인되면 Cloud KMS가 Cloud Spanner 데이터베이스에 대한 액세스를 자동으로 복원합니다.

사용할 수 없는 키 상태의 처리 방법

드문 경우지만 Cloud KMS를 사용할 수 없는 기간 중에는 Cloud Spanner가 Cloud KMS에서 키 상태를 검색하지 못할 수 있습니다.

database is protected by a key that is enabled at the time at which Cloud Spanner가 먼저 Cloud KMS와 통신할 수 없는 시간에 사용 설정된 키로 Cloud Spanner 데이터베이스가 보호되는 경우, Cloud Spanner는 그러한 장애가 워크로드에 미치는 영향을 최소화하기 위해 최대 1시간 동안 가능한 한 전체 데이터베이스 작업을 계속 지원합니다.

1시간 후에도 Cloud Spanner가 Cloud KMS에 연결할 수 없으면 Cloud Spanner가 사전적인 조치로 데이터베이스를 오프라인으로 전환합니다. Cloud Spanner 데이터베이스에 있는 데이터는 데이터베이스가 Cloud KMS에 다시 연결할 수 있고 Cloud KMS가 활성 키로 응답할 때까지 액세스할 수 없는 상태로 유지됩니다.

반대로 Cloud Spanner가 먼저 Cloud KMS와 통신할 수 없는 시간에 사용 중지된 키로 Cloud Spanner 데이터베이스가 보호되는 경우에는 Cloud KMS에 다시 연결할 수 있고 사용자가 키를 다시 사용 설정할 때까지 데이터베이스가 액세스할 수 없는 상태로 유지됩니다.

외부 키 고려사항

Cloud EKM 키를 사용하는 경우 Google은 외부 키 관리 파트너 시스템에서 외부 관리 키의 가용성을 제어 할 수 없습니다.

외부 관리 키를 사용할 수 없는 경우 Cloud Spanner는 최대 1시간 동안 캐시된 버전의 키를 사용하여 전체 데이터베이스 작업을 계속 지원합니다.

1시간 후에도 Cloud Spanner가 Cloud KMS에 연결할 수 없으면 Cloud Spanner가 사전적인 조치로 데이터베이스를 오프라인으로 전환합니다. 데이터베이스를 호출하면 FAILED_PRECONDITION 오류(External key error: Could not find a key resource at the key URI.)가 발생하여 실패합니다.

외부 키 사용 시 추가 고려사항은 Cloud 외부 키 관리자 문서를 참조하세요.

백업 및 복원

데이터베이스와 같은 Cloud Spanner 백업은 CMEK 또는 Google 관리 암호화로 보호될 수 있습니다. 기본적으로 백업은 해당 데이터베이스와 동일한 암호화 구성을 사용하지만, 백업을 만들 때 다른 암호화 구성을 지정하여 이 동작을 재정의할 수 있습니다. 백업에 CMEK가 사용 설정되었으면 백업을 만들 때 KMS 키의 기본 버전을 사용하여 암호화됩니다. 백업을 만든 후에는 KMS 키가 순환되어도 해당 키 및 키 버전을 수정할 수 없습니다. 자세한 내용은 데이터베이스 백업을 참조하세요.

백업에서 데이터베이스를 복원할 때 복원된 데이터베이스는 기본적으로 백업과 동일한 암호화 구성을 사용합니다. 데이터베이스를 복원할 때 다른 암호화 구성을 지정하여 이 동작을 재정의할 수 있습니다. CMEK 사용 백업을 복원하려면 백업 암호화에 사용된 키 및 키 버전을 모두 사용할 수 있어야 합니다. 자세한 내용은 백업에서 복원을 참조하세요.

로깅

프로젝트에서 Cloud KMS API에 대해 감사 로깅을 사용 설정한 경우 Cloud Logging에서 사용자 대신 Cloud Spanner가 Cloud KMS에 전송하는 요청을 감사할 수 있습니다. 이러한 Cloud KMS 로그 항목Cloud Logging에서 확인할 수 있습니다.