고객 관리 암호화 키(CMEK)
기본적으로 Bigtable의 모든 저장 데이터는 Google의 기본 암호화를 사용하여 암호화됩니다. Bigtable은 사용자의 추가 작업 없이 이 암호화를 처리하고 관리합니다.
데이터를 보호하는 키와 관련된 특정 규정 준수 또는 규제 요구사항이 있으면 Bigtable에 고객 관리 암호화 키(CMEK)를 사용할 수 있습니다. 데이터를 보호하는 암호화 키를 Google이 관리하는 대신 사용자가 Cloud Key Management Service(Cloud KMS)에서 제어 및 관리하는 키를 사용하여 Bigtable 인스턴스가 보호됩니다.
이 페이지에서는 Bigtabler용 CMEK에 대해 설명합니다. CMEK를 사용 설정하는 시기와 이유를 포함한 일반적인 CMEK에 대한 자세한 내용은 Cloud KMS 문서를 참조하세요. Bigtable로 CMEK 관련 작업을 수행하는 방법은 CMEK 사용을 참조하세요.
특징
보안: CMEK는 Google의 기본 암호화와 동일한 수준의 보안을 제공하지만 더 많은 관리 제어를 제공합니다.
데이터 액세스 제어: 관리자가 Bigtable에서 저장 데이터 보호를 위해 사용되는 키를 순환하고, 액세스 권한을 관리하고, 사용 중지하거나 삭제할 수 있습니다.
감사 기능: CMEK 키의 모든 작업이 Cloud Logging에 로깅되고 표시됩니다. Cloud EKM 키는 모든 키 요청에 근거 필드를 추가하는 키 액세스 근거를 지원합니다. 일부 외부 키 관리 파트너를 사용하면 근거에 따라 이러한 요청을 자동으로 승인하거나 거부할 수 있습니다.
비교 가능한 성능: Bigtable CMEK로 보호되는 인스턴스는 Google 기본 암호화를 사용하는 Bigtable 인스턴스와 비슷한 성능을 제공합니다.
유연성: 여러 프로젝트, 인스턴스 또는 클러스터에서 동일한 CMEK 키를 사용하거나 비즈니스 요구사항에 따라 별도의 키를 사용할 수 있습니다.
리전 간 보호: Bigtable을 사용할 수 있는 모든 리전에 있는 클러스터가 있는 인스턴스에서 CMEK를 사용 설정할 수 있습니다. 각 클러스터는 해당 클러스터의 리전에 있는 CMEK 키로 보호됩니다.
가격 책정
Cloud KMS는 키 및 해당 키를 사용하여 수행된 암호화 작업에 대한 비용을 청구합니다. 자세한 내용은 Cloud KMS 가격 책정을 참조하세요.
Bigtable이 암호화 또는 복호화 작업을 수행할 때 Cloud KMS 키를 요청하면 작업 비용이 청구됩니다. 각 암호화 또는 복호화 요청은 인스턴스의 모든 클러스터에 있는 모든 테이블에서 전송됩니다. Bigtable은 봉투 암호화를 사용하므로 예상 암호화 작업 수가 적은 경우 테이블당 비용이 일반적으로 저렴합니다. CMEK로 보호되는 인스턴스에 여러 테이블을 저장할 경우 비용이 더 높습니다.
CMEK가 사용 설정된 인스턴스를 사용하기 위한 추가 Bigtable 비용은 없습니다.
CMEK로 보호되는 대상
CMEK로 보호되는 인스턴스에서 Bigtable은 CMEK 키를 사용하여 저장 데이터를 보호합니다. 여기에는 클러스터의 모든 테이블에 있는 데이터가 포함됩니다. HDD 및 SSD 스토리지에 저장된 데이터는 모두 보호됩니다.
일부 데이터는 CMEK 키가 아닌 Google의 기본 암호화로 보호됩니다.
- 범위 경계를 표시하고 라우팅에 사용되는 row key 하위 집합
- 코어 덤프 및 운영 로그를 포함한 디버깅 데이터
- 전송 중 데이터 또는 메모리에 있는 데이터
- 가비지 컬렉션에 사용되는 타임스탬프 값의 하위 집합
Bigtable은 저장 데이터에 봉투 암호화를 사용합니다. CMEK 키는 Bigtable에서 사용하는 다른 키를 암호화하는 키 암호화 키 (KEK)로 사용됩니다. CMEK 키를 순환할 때는 Bigtable이 중간 키만 다시 암호화하면 됩니다.
CMEK 사용 설정
상위 수준에서 Bigtable에 CMEK를 사용하려면 다음 단계를 따르세요.
- 인스턴스 클러스터가 위치할 각 리전에서 CMEK 키를 만들고 구성합니다.
- 인스턴스의 클러스터마다 CMEK 키를 선택하여 새 Bigtable 인스턴스를 만듭니다. 클러스터의 CMEK 키는 클러스터와 동일한 리전에 있어야 합니다.
- 키마다 키 순환을 예약합니다.
데이터를 읽거나 쓰거나 삭제할 때 Bigtable을 사용하는 애플리케이션에 키나 암호화 구성을 지정할 필요가 없습니다. Bigtable 서비스 에이전트에 Cloud KMS 암호화/복호화 역할을 부여한 후 Bigtable에서 사용자 대신 키에 액세스할 수 있으며. 이는 Google 관리형 서비스 계정의 유형입니다.
자세한 안내는 CMEK 사용을 참조하세요.
Bigtable용 CMEK를 작업할 때는 다음을 사용할 수 있습니다.
- Google Cloud console
- Google Cloud CLI
- Cloud Bigtable API를 호출하는 정식 버전(GA)의 클라이언트 라이브러리입니다.
Cloud Bigtable Admin API에 직접 액세스할 수도 있지만 API에 CMEK 호출을 하는 Bigtable 클라이언트 라이브러리를 사용할 수 없는 경우에만 그렇게 하는 것이 좋습니다.
키 관리
키 관리 작업은 Cloud KMS를 사용하여 수행됩니다. Bigtable는 Cloud KMS에서 전파될 때까지 어떤 키 변경사항도 검색하거나 대응할 수 없습니다. 키를 사용 중지하거나 삭제하는 등의 일부 작업은 적용되는 데 최대 4시간이 걸릴 수 있고 키 권한 변경사항은 일반적으로 더 빠르게 적용됩니다.
CMEK로 보호되는 인스턴스에 테이블을 최소 하나 이상 만들면 Bigtable은 5분마다 각 클러스터의 테이블마다 키 유효성을 검사합니다.
Bigtable에서 중지된 키를 감지하면 인스턴스의 모든 클러스터가 중지될 때까지 계단식 방식으로 한 번에 클러스터 하나를 중지합니다.
첫 번째 클러스터에서 키가 중지되거나 삭제되었다고 보고한 후에 인스턴스가 중지될 때까지 일부 데이터 요청은 성공할 수 있지만 다른 요청에서는 오류를 반환합니다. 중지된 클러스터로 전송되는 모든 데이터 작업은 FAILED_PRECONDITION
또는 NOT_FOUND
오류를 반환합니다.
또한 Bigtable 복제는 eventual consistency를 가지므로 클러스터에서 쓰기 요청을 확인했지만 중지되기 전에 인스턴스의 다른 클러스터에 아직 복제되지 않았을 수 있습니다.
키 하나가 중지되면 인스턴스의 모든 클러스터를 자동으로 중지하는 Bigtable 프로세스는 최대 몇 시간이 걸릴 수 있습니다. 이 상태가 방지되도록 항상 모든 인스턴스 키를 동시에 중지하는 것이 좋습니다.
Bigtable 클러스터를 중지하면 전체 인스턴스에 다음 관리 작업이 제한됩니다.
- 클러스터 만들기
- 클러스터 삭제
- 표 만들기
- column family 수정
- 테이블 복원
계속해서 인스턴스, 테이블, 백업을 삭제할 수 있습니다.
Bigtable의 Cloud KMS 호출로 이전에 사용 중지된 키가 다시 사용 설정된 것으로 확인되면 Cloud KMS가 Bigtable 클러스터에 대한 액세스를 자동으로 복원합니다.
Cloud KMS 키가 삭제되면 해당 키로 암호화된 클러스터가 있는 Bigtable 인스턴스에 영구적으로 액세스할 수 없습니다.
사용할 수 없는 키 상태의 처리 방법
드문 경우지만 Cloud KMS를 사용할 수 없는 기간 중에는 Bigtable이 Cloud KMS에서 키 상태를 검색하지 못할 수 있습니다.
Bigtable 클러스터가 Bigtable이 Cloud KMS와 처음 통신할 때 사용 설정된 키로 보호되는 경우, Bigtable은 Cloud KMS 키에서 파생된 캐시된 키를 사용하여 최대 1시간 동안 가능한 한 전체 인스턴스 작업을 계속 지원하여 이러한 문제가 워크로드에서 미치는 영향을 최소화합니다.
1시간 후에도 Bigtable이 Cloud KMS에 연결할 수 없으면 Bigtable은 보호 조치로 인스턴스를 오프라인으로 시작합니다. Bigtable 인스턴스의 데이터는 인스턴스를 Cloud KMS에 다시 연결할 수 있고 Cloud KMS에서 키가 활성 상태라고 응답할 때까지 액세스할 수 없는 상태로 유지됩니다.
반대로 Bigtable 클러스터가 Bigtable이 Cloud KMS와 처음 통신할 수 없게 되기 전에 사용 중지된 키로 보호되는 경우 Cloud KMS에 다시 연결할 수 있고 키가 다시 사용 설정될 때까지 인스턴스는 액세스할 수 없는 상태로 유지됩니다.
외부 키 고려사항
Cloud EKM을 사용하는 경우 Google은 외부 키 관리 파트너 시스템에서 외부 관리 키의 가용성을 제어 할 수 없습니다.
외부 관리 키를 사용할 수 없는 경우 Bigtable은 최대 1시간 동안 캐시된 버전의 키를 사용하여 클러스터 작업을 계속 지원합니다.
1시간 후에도 Bigtable이 Cloud KMS에 연결할 수 없으면 Bigtable은 보호 조치로 인스턴스를 오프라인으로 시작합니다. Bigtable 인스턴스의 데이터는 인스턴스를 Cloud KMS에 다시 연결할 수 있고 Cloud KMS에서 외부 키가 활성 상태라고 응답할 때까지 액세스할 수 없는 상태로 유지됩니다.
리전 두 개 이상에 클러스터가 있는 Bigtable 인스턴스에 외부 키를 사용하려는 경우 키가 해당 리전에서 지원되는지 확인하세요. 자세한 내용은 외부 키 관리자 및 리전을 참조하세요. 또한 동일한 인스턴스에서 외부 키와 비외부 키의 조합을 사용하면 안 됩니다.
Cloud Key Management Service에서 외부 키를 사용하는 방법에 대한 자세한 내용은 Cloud 외부 키 관리자(Cloud EKM)를 참조하세요.
조직 정책
Bigtable은 조직 전반에서 CMEK 사용을 보장하기 위해 조직 정책 제약조건을 지원합니다. 조직 정책을 사용하는 방법에 대한 자세한 내용은 CMEK 조직 정책을 참조하세요.
백업
다른 데이터와 마찬가지로 백업은 백업이 저장된 클러스터의 CMEK 키로 보호됩니다. 백업에서 복원된 새 테이블은 CMEK 키 또는 복원되는 클러스터의 키로 보호됩니다. CMEK가 백업 및 복원 작업에 미치는 영향에 대한 자세한 내용은 백업을 참조하세요. 백업에서 만들거나 복원하는 방법을 알아보려면 백업 관리를 참조하세요.
로깅
프로젝트의 Cloud KMS API에 대해 Cloud KMS 감사 로그를 사용 설정한 경우 Cloud Logging에서 Bigtable이 사용자를 대신하여 Cloud KMS로 전송하는 요청을 감사할 수 있습니다. 각 클러스터의 테이블당 5분 정도마다 몇 개의 로그 항목이 있을 수 있습니다.
제한사항
CMEK는 클러스터 수준에서만 구성할 수 있습니다. 백업, 테이블 또는 앱 프로필에는 CMEK를 구성할 수 없습니다.
클러스터의 CMEK 키는 클러스터와 동일한 리전에 있어야 합니다. Cloud KMS 키링을 만들 때 계획된 Bigtable 영역 구성에 해당하는 리전을 선택해야 합니다.
Bigtable 리소스 (인스턴스, 클러스터, 테이블, 백업)의 암호화 구성은 변경할 수 없습니다.
- CMEK가 아닌 인스턴스는 CMEK를 사용하도록 변환할 수 없습니다.
- CMEK 인스턴스는 Google 기본 암호화를 사용하도록 변환할 수 없습니다.
- CMEK 키로 만든 클러스터는 다른 키를 사용하도록 재구성할 수 없습니다.
사용자가 트리거한 작업(예: 키 사용 중지 또는 소멸, 암호화/복호화 역할 취소)의 결과로 액세스 불가능하게 된 키에 30일 이상 연속으로 연결된 CMEK 보호 Bigtable 리소스(인스턴스, 클러스터, 테이블 또는 백업)는 자동으로 삭제됩니다.
사용 중지된 CMEK 키를 다시 사용 설정하여 해당 키로 보호되는 Bigtable 인스턴스에 대한 액세스를 복원하면 데이터를 다시 온라인으로 가져오는 동안 일부 데이터 API 요청이 타임아웃될 수 있습니다.
CMEK로 보호되는 인스턴스에서 테이블이 생성된 후 최대 5분 동안 키 버전 및 키 상태가 알 수 없는 것으로 보고될 수 있습니다. 하지만 이 기간 동안 테이블에 기록된 모든 데이터는 CMEK 키로 계속 보호됩니다.
Bigtable에서 사용하는 키의 모든 버전 대신 하나의 버전만 사용 중지하거나 삭제하면 예기치 않은 동작이 발생할 수 있습니다. 항상 CMEK 키의 모든 버전을 사용 중지하거나 삭제합니다.