고객 관리 암호화 키(CMEK)

Dataproc을 사용하면 클러스터 및 작업 데이터가 클러스터 및 Cloud Storage 스테이징 버킷의 Compute Engine VM과 연결된 영구 디스크(PD)에 저장됩니다. 이 PD 및 버킷 데이터는 Google에서 생성한 데이터 암호화 키(DEK)와 키 암호화 키(KEK)를 사용하여 암호화됩니다. CMEK 기능을 사용하면 키 암호화 키(KEK)를 만들고 사용하고 취소할 수 있습니다. 데이터 암호화 키(DEK)는 Google에서 계속 관리합니다. Google 데이터 암호화 키에 대한 자세한 내용은 저장 데이터 암호화를 참조하세요.

CMEK 사용

CMEK를 사용하여 Dataproc 클러스터에서 VM과 연결된 PD에 있는 데이터 또는 Dataproc 스테이징 버킷에 작성된 클러스터 메타데이터와 작업 드라이버 출력을 암호화할 수 있습니다. 1, 2단계를 따른 후 3, 4, 5단계에 따라 클러스터의 PD, Cloud Storage 버킷 또는 둘 모두에 CMEK를 사용할 수 있습니다.

  1. Cloud Key Management Service(Cloud KMS)를 사용하여 키를 만듭니다. 다음 단계에서 사용할 수 있는 리소스 이름을 복사합니다. 리소스 이름은 다음과 같이 구성됩니다.
    projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name
    
  2. Compute Engine 및 Cloud Storage 서비스 계정을 사용 설정하여 키를 사용하려면 다음을 따르세요.

    1. Compute Engine→Cloud KMS 키로 리소스 보호→시작하기 전에의 5번 항목을 따라 Cloud KMS CryptoKey Encrypter/Decrypter 역할을 Compute Engine 서비스 계정에 할당합니다.
    2. Cloud KMS CryptoKey Encrypter/Decrypter 역할을 Cloud Storage 서비스 계정에 할당합니다.
  3. gcloud 명령줄 도구 또는 Dataproc API를 사용하여 1단계에서 만든 키를 Dataproc 클러스터의 VM과 연결된 PD에 설정할 수 있습니다.

    gcloud 명령

    gcloud dataproc clusters create 명령어로 클러스터를 만들 때 1단계에서 얻은 Cloud KMS 리소스 ID를 --gce-pd-kms-key 플래그에 전달합니다.

    예:

    gcloud dataproc clusters create my-cluster-name \
        --region=region \
        --gce-pd-kms-key='projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name' \
        other args ...
    

    gcloud 명령줄 도구에서 키 설정을 확인할 수 있습니다.

    gcloud dataproc clusters describe cluster-name \
        --region=region
    
    ...
    configBucket: dataproc- ...
    encryptionConfig:
    gcePdKmsKeyName: projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name
    ...
    

    REST API

    cluster.create 요청의 일부로 ClusterConfig.EncryptionConfig.gcePdKmsKeyName을 사용합니다.

    clusters.get 요청을 실행하여 키 설정을 확인할 수 있습니다. 반환된 JSON에는 gcePdKmsKeyName이 포함됩니다.

    ...
    {
    "projectId": "project-id",
    "clusterName": "cluster-name",
    "config": {
       "encryptionConfig": {
      "gcePdKmsKeyName": "projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name"
    }
    },
    

  4. Dataproc에서 사용되는 Cloud Storage 버킷에서 CMEK를 사용하여 클러스터와 작업 데이터를 읽고 쓰려면 CMEK를 사용하여 버킷을 만듭니다. 참고: 버킷에서 키를 추가할 때 1단계에서 만든 키를 사용하세요. 그런 다음 클러스터를 만들 때 버킷 이름을 gcloud dataproc clusters create 명령어에 전달합니다.

    :

    gcloud dataproc clusters create my-cluster \
        --region=region \
        --bucket=name-of-CMEK-bucket \
        other args ...
    

    작업이 버킷 인수를 사용하는 경우 CMEK 사용 버킷을 gcloud dataproc jobs submit 명령어에 전달할 수도 있습니다(다음 PySpark 작업 제출 예시에서 ...cmek-bucket... 버킷 인수 참조).

    :
    gcloud dataproc jobs submit pyspark gs://cmek-bucket/wordcount.py \
        --region=region \
        --cluster=cluster-name \
        -- gs://cmek-bucket/shakespeare.txt gs://cmek-bucket/counts
    

  5. 클러스터의 PD와 Dataproc에서 사용하는 Cloud Storage 버킷에서 CMEK를 사용하려면 3단계와 4단계에서 설명한 대로 --gce-pd-kms-key 플래그와 --bucket 플래그를 모두 gcloud dataproc clusters create 명령어에 전달합니다. PD 데이터와 버킷 데이터에 별도의 키를 만들어 사용할 수 있습니다.