고객 관리 암호화 키(CMEK) 사용

이 페이지에서는 Cloud Data Fusion에서 Cloud Key Management Service(Cloud KMS) 암호화 키를 사용하는 방법을 설명합니다.

고객 관리 암호화 키(CMEK)를 사용하면 Cloud KMS를 통해 제어할 수 있는 키로 저장 데이터를 암호화할 수 있습니다. CMEK를 통해 사용자는 테넌트 프로젝트의 Google 내부 리소스에 기록되는 데이터 및 다음과 같이 Cloud Data Fusion 파이프라인에서 기록되는 데이터를 제어할 수 있습니다.

  • 파이프라인 로그 및 메타데이터
  • Dataproc 클러스터 메타데이터
  • 다양한 Cloud Storage, BigQuery, Pub/Sub, Spanner 데이터 싱크, 작업, 소스

Cloud Data Fusion 리소스

CMEK를 지원하는 Cloud Data Fusion 플러그인 목록은 지원되는 플러그인을 참조하세요.

Cloud Data Fusion은 Dataproc 클러스터에 대해 CMEK를 지원합니다. Cloud Data Fusion은 파이프라인에 사용할 임시 Dataproc 클러스터를 만든 후 파이프라인이 완료될 때 클러스터를 삭제합니다. CMEK는 다음에 기록된 클러스터 메타데이터를 보호합니다.

  • 클러스터 VM에 연결된 영구 디스크(PD)
  • 자동 생성되거나 사용자가 만든 Dataproc 스테이징 버킷에 기록된 기타 메타데이터 및 작업 드라이버 출력

CMEK 설정

Cloud KMS 키 만들기

Cloud Data Fusion 인스턴스가 포함된 Google Cloud 프로젝트 또는 별도의 사용자 프로젝트에서 Cloud KMS 키를 만듭니다. Cloud KMS 키링 위치는 인스턴스를 만드는 리전과 일치해야 합니다. Cloud Data Fusion은 항상 특정 리전과 연결되므로 멀티 리전 또는 전역 리전 키는 인스턴스 수준에서 허용되지 않습니다.

키의 리소스 이름 가져오기

REST API

다음 명령어를 사용해 자신이 만든 키의 리소스 이름을 가져옵니다.

projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME

다음을 바꿉니다.

  • PROJECT_ID: Cloud Data Fusion 인스턴스를 호스팅하는 고객 프로젝트
  • REGION: 해당 위치와 가까운 Google Cloud 리전, 예: us-east1
  • KEY_RING_NAME: 암호화 키를 하나로 그룹화하는 키링의 이름
  • KEY_NAME: Cloud KMS 키 이름

콘솔

  1. 암호화 키 페이지로 이동합니다.

    암호화 키로 이동

  2. 키 옆에서 더 보기 를 클릭합니다.

  3. 리소스 이름 복사를 선택하여 리소스 이름을 클립보드에 복사합니다.

키를 사용하도록 프로젝트의 서비스 계정 업데이트하기

키를 사용할 프로젝트의 서비스 계정을 설정하려면 다음 안내를 따르세요.

  1. 필수: Cloud Data Fusion 서비스 에이전트에 Cloud KMS CryptoKey 암호화/복호화 역할(roles/cloudkms.cryptoKeyEncrypterDecrypter)을 부여합니다(서비스 계정에 특정 리소스에 대한 역할 부여 참조). 이 계정의 형식은 다음과 같습니다.

    service-PROJECT_NUMBER@gcp-sa-datafusion.iam.gserviceaccount.com

    Cloud Data Fusion 서비스 에이전트에 Cloud KMS CryptoKey 암호화/복호화 역할을 부여하면 Cloud Data Fusion에서 CMEK를 사용하여 테넌트 프로젝트에 저장된 고객 데이터를 암호화할 수 있습니다.

  2. 필수: Compute Engine 서비스 에이전트에 Cloud KMS CryptoKey 암호화/복호화 역할을 부여합니다(Cloud Storage 서비스 계정에 Cloud KMS 키 할당 참조). 기본적으로 Compute Engine 서비스 에이전트 역할이 부여되는 이 계정의 형식은 다음과 같습니다.

    service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com

    Compute Engine 서비스 에이전트에 Cloud KMS CryptoKey 암호화/복호화 역할을 부여하면 Cloud Data Fusion에서 CMEK를 사용하여 파이프라인에서 실행되는 Dataproc 클러스터에서 작성한 영구 디스크(PD) 메타데이터를 암호화할 수 있습니다.

  3. 필수: Cloud Storage 서비스 에이전트에 Cloud KMS CryptoKey 암호화/복호화 역할을 부여합니다(Cloud Storage 서비스 에이전트에 Cloud KMS 키 할당 참조). 이 서비스 에이전트의 형식은 다음과 같습니다.

    service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com

    Cloud Storage 서비스 에이전트에 Cloud KMS CryptoKey 암호화/복호화 역할을 부여하면 Cloud Data Fusion에서 CMEK를 사용하여 파이프라인에서 사용되는 Dataproc 클러스터 스테이징 버킷과 다른 모든 Cloud Storage 리소스에 기록되는 데이터를 암호화할 수 있습니다.

  4. 필수: Google Cloud Dataproc 서비스 에이전트에 Cloud KMS CryptoKey 암호화/복호화 역할을 부여합니다. 이 서비스 에이전트의 형식은 다음과 같습니다.

    service-PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com

  5. 선택사항: 파이프라인에서 BigQuery 리소스를 사용하는 경우 Cloud KMS CryptoKey 암호화/복호화 역할을 BigQuery 서비스 계정에 부여합니다(암호화 및 복호화 권한 부여 참조). 이 계정의 형식은 다음과 같습니다.

    bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com

  6. 선택사항: 파이프라인에서 Pub/Sub 리소스를 사용하는 경우 Cloud KMS CryptoKey 암호화/복호화 역할을 Pub/Sub 서비스 계정에 부여합니다(고객 관리 암호화 키 사용 참조). 이 계정의 형식은 다음과 같습니다.

    service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com

  7. 선택사항: 파이프라인에서 Spanner 리소스를 사용하는 경우 Cloud KMS CryptoKey 암호화/복호화 역할을 Spanner 서비스 계정에 부여합니다. 이 계정의 형식은 다음과 같습니다.

    service-PROJECT_NUMBER@gcp-sa-spanner.iam.gserviceaccount.com

CMEK를 사용해 Cloud Data Fusion 인스턴스 만들기

CMEK는 Cloud Data Fusion 버전 6.5.0 이상의 모든 버전에서 사용할 수 있습니다.

REST API

  1. 고객 관리 암호화 키를 사용하여 인스턴스를 만들려면 다음 환경 변수를 설정합니다.

    export PROJECT=PROJECT_ID
    export LOCATION=REGION
    export INSTANCE=INSTANCE_ID
    export DATA_FUSION_API_NAME=datafusion.googleapis.com
    export KEY=KEY_NAME
    

    다음을 바꿉니다.

    • PROJECT_ID: Cloud Data Fusion 인스턴스를 호스팅하는 고객 프로젝트
    • REGION: 해당 위치와 가까운 Google Cloud 리전, 예: us-east1
    • INSTANCE_ID: Cloud Data Fusion 인스턴스의 이름
    • KEY_NAME: CMEK 키의 전체 리소스 이름
  2. 다음 명령어를 실행하여 Cloud Data Fusion 인스턴스를 만듭니다.

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://$DATA_FUSION_API_NAME/v1/projects/$PROJECT/locations/$LOCATION/instances?instance_id=INSTANCE -X POST -d '{"description": "CMEK-enabled CDF instance created through REST.", "type": "BASIC", "cryptoKeyConfig": {"key_reference": "$KEY"} }'
    

콘솔

  1. Cloud Data Fusion 페이지로 이동합니다.

  2. 인스턴스를 클릭한 후 인스턴스 만들기를 클릭합니다.

    인스턴스로 이동

  3. 고급 옵션에서 고객 관리 암호화 키(CMEK) 사용을 선택합니다.

  4. 고객 관리 키 선택 필드에서 키의 리소스 이름을 선택합니다.

    암호화 키 이름 선택

  5. 모든 인스턴스 세부정보를 입력한 후 만들기를 클릭합니다. 인스턴스를 사용할 준비가 되면 인스턴스 페이지에 표시됩니다.

인스턴스에 CMEK가 사용 설정되어 있는지 확인

콘솔

인스턴스 세부정보를 확인합니다.

  1. Google Cloud 콘솔에서 Cloud Data Fusion 페이지로 이동합니다.

  2. 인스턴스를 클릭한 후 인스턴스 이름을 클릭하여 인스턴스 세부정보 페이지로 이동합니다.

    인스턴스로 이동

CMEK가 사용 설정된 경우 암호화 키 필드가 사용 가능으로 표시됩니다.

CMEK가 중지되면 암호화 키 필드가 사용 불가능으로 표시됩니다.

지원되는 플러그인에 CMEK 사용

암호화 키 이름을 설정할 때 다음 양식을 사용합니다.

projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME

암호화 키 이름

다음 표에서는 CMEK를 지원하는 Cloud Data Fusion 플러그인에서 키 동작을 설명합니다.

지원되는 플러그인 키 동작
Cloud Data Fusion 싱크
Cloud Storage 플러그인에서 생성되는 모든 버킷에 기록되는 데이터를 암호화합니다. 버킷이 이미 있으면 이 값이 무시됩니다.
Cloud Storage 멀티 파일 플러그인에서 생성되는 모든 버킷에 기록되는 데이터를 암호화합니다.
BigQuery 플러그인으로 생성된 모든 버킷, 데이터 세트, 테이블에 기록된 데이터를 암호화합니다.
BigQuery 멀티 테이블 플러그인으로 생성된 모든 버킷, 데이터 세트, 테이블에 기록된 데이터를 암호화합니다.
Pub/Sub 플러그인에서 생성되는 모든 주제에 기록되는 데이터를 암호화합니다. 주제가 이미 있으면 이 값이 무시됩니다.
Spanner 플러그인에서 생성되는 모든 데이터베이스에 기록되는 데이터를 암호화합니다. 데이터베이스가 이미 있으면 이 값이 무시됩니다.
Cloud Data Fusion 작업
Cloud Storage 만들기
Cloud Storage 복사
Cloud Storage 이동
Cloud Storage 완료 파일 마커
플러그인에서 생성되는 모든 버킷에 기록되는 데이터를 암호화합니다. 버킷이 이미 있으면 이 값이 무시됩니다.
BigQuery 실행 플러그인이 쿼리 결과를 저장하기 위해 만드는 데이터 세트 또는 테이블에 기록되는 데이터를 암호화합니다. BigQuery 테이블에 쿼리 결과를 저장하는 경우에만 적용됩니다.
Cloud Data Fusion 소스
BigQuery 소스 플러그인에서 생성되는 모든 버킷에 기록되는 데이터를 암호화합니다. 버킷이 이미 있으면 이 값이 무시됩니다.
Cloud Data Fusion SQL 엔진
BigQuery Pushdown 엔진 플러그인으로 생성된 모든 버킷, 데이터 세트, 테이블에 기록된 데이터를 암호화합니다.

Dataproc 클러스터 메타데이터에 CMEK 사용

사전 생성된 컴퓨팅 프로필에서 인스턴스 생성 중에 제공된 CMEK 키를 사용하여 파이프라인에서 실행되는 Dataproc 클러스터에서 기록하는 영구 디스크(PD)와스테이징 버킷 메타데이터를 암호화합니다. 다음 작업 중 하나를 통해 다른 키를 사용하도록 수정할 수 있습니다.

  • 권장사항: 새로운 Dataproc 컴퓨팅 프로필을 만듭니다(엔터프라이즈 버전만 해당).
  • 기존 Dataproc 컴퓨팅 프로필을 수정합니다(개발자, 기본, 엔터프라이즈 버전).

콘솔

  1. Cloud Data Fusion 인스턴스를 엽니다.

    1. Google Cloud 콘솔에서 Cloud Data Fusion 페이지로 이동합니다.

    2. Cloud Data Fusion 웹 인터페이스에서 인스턴스를 열려면 인스턴스를 클릭한 후 인스턴스 보기를 클릭합니다.

      인스턴스로 이동

  2. 시스템 관리자 > 구성을 클릭합니다.

  3. 시스템 컴퓨팅 프로필 드롭다운을 클릭합니다.

  4. 새 프로필 만들기를 클릭하고 Dataproc을 선택합니다.

  5. 프로필 라벨, 프로필 이름, 설명을 입력합니다.

  6. 기본적으로 Dataproc는 Cloud Data Fusion에서 임시 클러스터를 만들 때마다 스테이징 및 임시 버킷을 만듭니다. Cloud Data Fusion은 Dataproc 스테이징 버킷을 컴퓨팅 프로필의 인수로 전달할 수 있습니다. 스테이징 버킷을 암호화하려면 CMEK가 사용 설정된 버킷을 만들고 컴퓨팅 프로필의 인수로 Dataproc에 전달합니다.

  7. 기본적으로 Cloud Data Fusion은 Cloud Storage 버킷을 자동으로 만들어 Dataproc에서 사용하는 종속 항목을 스테이징합니다. 프로젝트에 기존에 있는 Cloud Storage 버킷을 사용하려면 다음 단계를 따르세요.

    1. 일반 설정 섹션에서 Cloud Storage 버킷 필드에 기존 Cloud Storage 버킷을 입력합니다.

    2. Cloud Storage 버킷에 Cloud KMS 키를 추가합니다.

  8. Cloud KMS 키의 리소스 ID를 가져옵니다. 일반 설정 섹션에서 암호화 키 이름 필드에 리소스 ID를 입력합니다.

  9. 만들기를 클릭합니다.

  10. 구성 탭의 시스템 컴퓨팅 프로필 섹션에 프로필이 두 개 이상 나열된 경우 프로필 이름 필드 위에 포인터를 올려놓고 표시되는 별표를 클릭하여 새 Dataproc 프로필을 기본 프로필로 설정합니다.

    기본 프로필을 선택합니다.

다른 리소스에 CMEK 사용

제공된 CMEK 키는 Cloud Data Fusion 인스턴스를 만드는 동안 시스템 환경설정으로 설정됩니다. 이 키는 Cloud Storage, BigQuery, Pub/Sub 또는 Spanner 싱크와 같은 파이프라인 싱크에서 새로 만든 리소스에 기록되는 데이터를 암호화하는 데 사용됩니다.

이 키는 새로 생성된 리소스에만 적용됩니다. 파이프라인 실행 전 리소스가 이미 있으면 해당 기존 리소스에 CMEK 키를 수동으로 적용해야 합니다.

다음 중 하나를 수행하여 CMEK 키를 변경할 수 있습니다.

  • 런타임 인수를 사용합니다.
  • Cloud Data Fusion 시스템 환경설정을 구성합니다.

런타임 인수

  1. Cloud Data Fusion 파이프라인 스튜디오 페이지에서 실행 버튼 오른쪽에 있는 드롭다운 화살표를 클릭합니다.
  2. 이름 필드에 gcp.cmek.key.name를 입력합니다.
  3. 필드에 키의 리소스 ID를 입력합니다.
    Data Fusion 버전을 선택합니다.
  4. 저장을 클릭합니다.

    여기에 설정한 런타임 인수는 현재 파이프라인 실행에만 적용됩니다.

환경설정

  1. Cloud Data Fusion UI에서 시스템 관리자를 클릭합니다.
  2. 구성 탭을 클릭합니다.
  3. 시스템 환경설정 드롭다운을 클릭합니다.
  4. 시스템 환경 설정 수정을 클릭합니다.
  5. 필드에 gcp.cmek.key.name을 입력합니다.
  6. 필드에 키의 리소스 ID를 입력합니다.
    Data Fusion 버전을 선택합니다.
  7. 저장 후 닫기를 클릭합니다.