고객 관리 암호화 키(CMEK) 정보

기본적으로 SQL 서버용 Cloud SQL은 고객 저장 콘텐츠를 암호화합니다. SQL 서버용 Cloud SQL은 사용자의 추가 작업 없이 암호화를 처리합니다. 이 옵션을 Google 기본 암호화라고 합니다.

암호화 키를 제어하려면 SQL 서버용 Cloud SQL을 포함한 CMEK 통합 서비스와 함께 Cloud KMS에서 고객 관리 암호화 키(CMEK)를 사용하면 됩니다. Cloud KMS 키를 사용하면 보호 수준, 위치, 순환 일정, 사용 및 액세스 권한, 암호화 경계를 관리할 수 있습니다. Cloud KMS를 사용하면 키 사용을 추적하고, 감사 로그를 보고, 키 수명 주기를 제어할 수도 있습니다. Google에서 데이터를 보호하는 대칭 키 암호화 키(KEK)를 소유하고 관리하는 대신 사용자가 Cloud KMS에서 이러한 키를 제어하고 관리할 수 있습니다.

CMEK로 리소스를 설정한 후 SQL 서버용 Cloud SQL 리소스에 액세스하는 환경은 Google 기본 암호화를 사용하는 것과 유사합니다. 암호화 옵션에 대한 자세한 내용은 고객 관리 암호화 키(CMEK)를 참조하세요.

Cloud KMS Autokey를 사용하는 CMEK

CMEK를 수동으로 만들어 SQL 서버용 Cloud SQL 리소스를 보호하거나 Cloud KMS Autokey를 사용할 수 있습니다. Autokey를 사용하면 SQL 서버용 Cloud SQL에서 리소스를 만들 때 필요에 따라 키링과 키가 생성됩니다. 암호화 및 복호화 작업에 키를 사용하는 서비스 에이전트가 없으면 생성되며, 필요한 Identity and Access Management(IAM) 역할이 부여됩니다. 자세한 내용은 Autokey 개요를 참조하세요.

SQL 서버용 Cloud SQL은 Terraform 또는 REST API를 사용하여 리소스를 만들 때만 Cloud KMS Autokey와 호환됩니다.

수동으로 생성된 CMEK를 사용하여 SQL 서버용 Cloud SQL 리소스를 보호하는 방법은 고객 관리 암호화 키(CMEK) 사용을 참조하세요.

Cloud KMS Autokey에서 만든 CMEK를 사용하여 SQL 서버용 Cloud SQL 리소스를 보호하려면 Secret Manager 리소스에 Autokey 사용에서 Secret Manager에 대해 예시로 제공된 단계를 사용합니다.

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

아래 다이어그램은 기본 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은 키를 사용하여 복원되는 백업 인스턴스의 데이터에 액세스합니다. 다른 인스턴스로 복원할 때 대상 인스턴스는 암호화에 다른 키를 사용할 수 있습니다.
복제본 생성 같은 리전에서 Cloud SQL 인스턴스의 읽기 복제본을 만들면 복제본은 상위 인스턴스에서 CMEK를 상속합니다. 다른 리전에 읽기 복제본을 만드는 경우 다른 리전에서 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/[KMS_PROJECT_ID]/locations/[LOCATION]/keyRings/[KEY_RING]/cryptoKeys/[KEY_NAME]

Cloud SQL이 키에 액세스할 수 없는 경우 (예를 들어 키 버전을 사용 중지하는 경우) Cloud SQL에서 인스턴스를 정지합니다. 키에 다시 액세스할 수 있게 되면 Cloud SQL은 인스턴스를 자동으로 다시 시작합니다.

키를 순환하면 해당 키로 암호화된 인스턴스가 새로운 기본 키 버전으로 자동으로 다시 암호화되지 않습니다. 기존 CMEK 기본 인스턴스 또는 복제본을 새 기본 키 버전으로 다시 암호화할 수 있습니다. 키 순환 후 Cloud SQL 인스턴스 또는 복제본을 다시 암호화하는 방법에 대한 자세한 내용은 기존 CMEK가 사용 설정된 인스턴스 또는 복제본 다시 암호화를 참조하세요.

외부 키 관리자

Fortanix, Futurex, Thales와 같은 외부 키 관리자에 저장된 키를 고객 관리 암호화 키로 사용할 수 있습니다. Cloud KMS에서 외부 키를 사용하는 방법은 Cloud 외부 키 관리자(Cloud EKM)를 참조하세요.

키 액세스 근거

키 액세스 근거를 Cloud EKM의 일부로 사용할 수 있습니다. 키 액세스 근거를 사용하면 각 Cloud EKM 요청의 이유를 볼 수 있습니다. 또한 제공된 근거에 따라 요청을 자동으로 승인하거나 거부할 수 있습니다. 자세한 내용은 키 액세스 근거 개요를 참조하세요.

따라서 키 액세스 근거는 각 데이터 복호화 시도에 대한 근거를 제공하여 데이터를 추가로 제어합니다.

Cloud SQL 인스턴스에서 키를 사용하는 방법에 대한 자세한 내용은 CMEK로 Cloud SQL 인스턴스 만들기를 참조하세요.

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

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

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

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

제한사항

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

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

다음 단계