고객 관리 암호화 키 개요(CMEK)

이 페이지에서는 Cloud SQL에서 고객 관리 암호화 키가 작동하는 방식을 설명합니다. 이 기능을 즉시 사용하려면 고객 관리 암호화 키(CMEK) 사용을 참조하세요.

CMEK가 나에게 적합한가요?

고객 관리 암호화 키는 자체 암호화 키를 관리해야 하는 민감한 데이터 또는 규제 대상 데이터가 있는 조직을 위한 것입니다.

Google 관리 암호화와 고객 관리 암호화 비교

CMEK 기능을 사용하면 Cloud SQL의 저장 데이터에 자체 암호화 키를 사용할 수 있습니다. 고객 관리 암호화 키를 추가한 후 API 호출이 있을 때마다 Cloud SQL은 고객의 키를 사용하여 데이터에 액세스합니다.

Cloud SQL은 Google 관리 데이터 암호화 키(DEK)와 키 암호화 키(KEK)를 사용하여 Cloud SQL을 암호화합니다. 암호화에는 다음 두 가지 수준이 있습니다.

  1. DEK는 데이터를 암호화합니다.
  2. KEK는 DEK를 암호화합니다.

Cloud SQL 인스턴스는 암호화된 데이터와 함께 암호화된 DEK를 PD에 저장하고 Google은 Google KEK를 관리합니다. 고객 관리 암호화 키를 사용하여 Google KEK를 래핑하는 키를 만듭니다. 고객 관리 암호화 키를 사용하면 KEK를 생성, 취소, 삭제할 수 있습니다.

고객 관리 암호화 키는 관리형 서비스인 Cloud Key Management Service(Cloud KMS)에 저장됩니다.

아래 다이어그램은 기본 Google 암호화를 사용하는 경우와 고객 관리 암호화 키를 사용하는 경우에 Cloud SQL 인스턴스 내부에서 저장 데이터 암호화가 작동하는 방식을 비교해서 보여줍니다.

CMEK를 사용하지 않는 경우

데이터가 Google에 업로드된 다음 청크로 분할되고 각 청크가 자체 데이터 암호화 키로 암호화됩니다. 데이터 암호화 키가 키 암호화 키를 사용하여 래핑됩니다. 기본 Google 암호화를 사용하면 Google의 내부 키 저장소에서 키 암호화 키를 가져옵니다. 암호화된 청크와 래핑된 암호화 키가 Google 스토리지 인프라에 배포됩니다.

CMEK를 사용하는 경우

데이터가 Google에 업로드된 다음 청크로 분할되고 각 청크가 자체 데이터 암호화 키로 암호화됩니다. 데이터 암호화 키가 키 암호화 키를 사용하여 래핑됩니다. Cloud KMS를 사용하는 CMEK의 경우 Cloud KMS에서 키 암호화 키를 가져옵니다. 암호화된 청크와 래핑된 암호화 키가 Google 스토리지 인프라에 배포됩니다.

고객 관리 암호화 키로 래핑된 데이터를 복호화할 때 Cloud SQL은 KEK를 사용하여 DEK를 복호화하고 암호화되지 않은 DEK를 사용하여 저장 데이터를 복호화합니다.

데이터 청크가 DEK를 사용하여 암호화되고 래핑된 DEK를 사용하여 저장됩니다. DEK를 래핑 해제하기 위한 요청이 KMS 스토리지로 전송되며, KMS 스토리지에는 내보낼 수 없는 KEK가 저장됩니다. KMS 스토리지는 래핑되지 않은 DEK를 반환합니다.

Cloud SQL이 CMEK 키와 상호작용하는 경우는 언제인가요?

작업 참고
인스턴스 생성 인스턴스를 생성하는 동안 고객 관리 암호화 키를 사용하도록 인스턴스를 구성합니다.
백업 생성 CMEK가 사용 설정된 인스턴스의 백업 중에 고객 관리 암호화 키는 사용자 쿼리 및 응답과 같은 사용자 데이터를 암호화합니다. CMEK가 사용 설정된 인스턴스에서의 백업은 소스 인스턴스와 동일한 Cloud KMS 키를 사용하여 암호화를 상속합니다.
인스턴스 복원 CMEK가 사용 설정된 인스턴스의 복원 중에 Cloud SQL은 키를 사용하여 복원되는 백업 인스턴스의 데이터에 액세스합니다. 다른 인스턴스로 복원할 때 대상 인스턴스는 암호화에 다른 키를 사용할 수 있습니다.
복제본 만들기 CMEK가 사용 설정된 인스턴스의 읽기 복제와 장애 조치 복제본은 기본 인스턴스와 동일한 KMS 키를 사용하여 CMEK 암호화를 상속합니다.
클론 만들기 CMEK가 사용 설정된 인스턴스의 클론은 소스 인스턴스와 동일한 Cloud KMS 키를 사용하여 CMEK 암호화를 상속합니다.
인스턴스 업데이트 CMEK 사용 인스턴스가 업데이트될 때 Cloud SQL은 CMEK 키를 확인합니다.

CMEK가 사용 설정된 Cloud SQL 인스턴스를 지원하는 위치는 어디인가요?

CMEK는 모든 Cloud SQL 인스턴스 위치에서 사용할 수 있습니다.

서비스 계정 이해

Cloud SQL 인스턴스에 CMEK가 사용 설정된 경우 서비스 계정을 사용하여 Cloud KMS에서 키 액세스를 요청해야 합니다.

프로젝트에서 고객 관리 암호화 키를 사용하려면 서비스 계정이 있어야 하며 고객 관리 암호화 키에 서비스 계정에 대한 액세스 권한을 부여해야 합니다. 서비스 계정은 프로젝트 내에 있어야 합니다. 모든 리전에서 서비스 계정을 볼 수 있습니다.

Console을 사용하여 인스턴스를 만들 경우 고객 관리 키 옵션을 처음 선택하면 Cloud SQL에서 서비스 계정을 자동으로 만듭니다(서비스 계정이 아직 없는 경우). Cloud SQL에서 서비스 계정을 자동으로 만들 때 사용자 계정에 대한 특별한 권한은 필요 없습니다.

키 이해

Cloud KMS에서는 위치가 설정된 암호화 키를 사용하여 키링을 만들어야 합니다. 새 Cloud SQL 인스턴스를 만들 때 이 키를 선택하여 인스턴스를 암호화합니다.

고객 관리 암호화 키를 사용하는 새 Cloud SQL 인스턴스를 만들 때는 키 ID와 키 리전을 알아야 합니다. 새 Cloud SQL 인스턴스는 인스턴스와 연결된 고객 관리 암호화 키와 동일한 리전에 배치해야 합니다. 키와 Cloud SQL 인스턴스 모두를 위한 하나의 프로젝트를 만들거나 각각을 위해 서로 다른 프로젝트를 만들 수 있습니다.

고객 관리 암호화 키는 다음 형식을 사용합니다.

projects/[CMEK_ENABLED_PROJECT]/locations/[REGION]/keyRings/[RING_NAME]/cryptoKeys/[KEYNAME]

키 버전을 중지하면 Cloud SQL은 이 키 버전으로 암호화된 인스턴스를 정지합니다. 키 버전을 다시 사용 설정하면 Cloud SQL은 이 키 버전으로 암호화된 인스턴스를 다시 시작합니다.

키를 순환하면 해당 키로 암호화된 인스턴스가 새로운 기본 키 버전으로 다시 암호화되지 않습니다.

CMEK로 암호화된 데이터를 영구적으로 액세스할 수 없도록 하려면 어떻게 해야 하나요?

CMEK로 암호화된 데이터를 영구적으로 폐기하려는 경우가 있을 수 있습니다. 이렇게 하려면 고객 관리 암호화 키 버전을 삭제합니다. 키링이나 키를 삭제할 수 없지만 키의 키 버전을 삭제할 수 있습니다.

CMEK 사용 설정 인스턴스에서 데이터를 내보내고 가져오려면 어떻게 해야 하나요?

내보내기 또는 가져오기 중에 데이터를 고객 관리 키를 사용하여 암호화된 상태로 유지하려면 데이터를 내보내기 전에 Cloud Storage 버킷에 고객 관리 암호화 키를 설정해야 합니다. 데이터가 이전에 고객 관리 암호화 키가 사용 설정된 인스턴스에 저장되면 데이터를 새 인스턴스로 가져올 때 특별한 요구사항이나 제한사항이 적용되지 않습니다.

제한사항

고객 관리 암호화 키를 사용할 때 다음 제한사항이 적용됩니다.

  • 기존 인스턴스에 고객 관리 암호화 키를 사용 설정할 수 없습니다.
  • 기존 인스턴스에서 키 버전을 순환할 수 없습니다.
  • 복제본에 다른 키 버전을 할당할 수 없습니다.
  • 클론에 다른 키 버전을 할당할 수 없습니다.
  • 고객 관리 암호화 키를 사용하여 암호화할 수 없습니다.
    • 외부 서버(외부 기본 인스턴스 및 외부 복제본)
    • 인스턴스 메타데이터(예: 인스턴스 ID, 데이터베이스 버전, 머신 유형, 플래그, 백업 일정 등)
  • 고객 관리 암호화 키를 사용하여 사용자 쿼리 및 응답과 같은 전송 중인 사용자 데이터를 암호화할 수 없습니다.

다음 단계