Kunci enkripsi yang dikelola pelanggan (CMEK)

Saat Anda menggunakan Dataproc, data tugas dan cluster akan disimpan di persistent disk yang terkait dengan VM Compute Engine di cluster Anda dan di bucket staging Cloud Storage. Data persistent disk dan bucket ini dienkripsi menggunakan kunci enkripsi data (DEK) dan kunci enkripsi kunci (KEK) yang dihasilkan Google.

Dengan fitur CMEK, Anda dapat membuat, menggunakan, dan mencabut kunci enkripsi kunci (KEK). Google masih mengontrol kunci enkripsi data (DEK). Untuk mengetahui informasi selengkapnya tentang kunci enkripsi data Google, lihat Enkripsi dalam Penyimpanan.

Menggunakan CMEK dengan data cluster

Anda dapat menggunakan kunci enkripsi yang dikelola pelanggan (Customer-Managed Encryption Key/CMEK) untuk mengenkripsi data cluster berikut:

  • Data di persistent disk yang terpasang pada VM di cluster Dataproc Anda
  • Data argumen tugas yang dikirimkan ke cluster Anda, seperti string kueri yang dikirimkan dengan tugas Spark SQL
  • Metadata cluster, output driver tugas, dan data lainnya yang ditulis ke bucket staging Dataproc yang Anda buat

Ikuti langkah-langkah berikut untuk menggunakan CMEK dengan enkripsi data cluster:

  1. Buat satu atau beberapa kunci menggunakan Cloud Key Management Service. Nama resource, juga disebut ID resource kunci, yang Anda gunakan pada langkah berikutnya, dibuat sebagai berikut:
    projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
    
  2. Tetapkan peran berikut ke akun layanan berikut:

    1. Ikuti item no. 5 di Compute Engine→Melindungi Resource dengan Kunci Cloud KMS→Sebelum memulai untuk menetapkan peran CryptoKey Encrypter/Decrypter Cloud KMS ke akun layanan agen layanan Compute Engine.
    2. Tetapkan peran CryptoKey Encrypter/Decrypter Cloud KMS ke akun layanan agen layanan Cloud Storage.

    3. Tetapkan peran CryptoKey Encrypter/Decrypter Cloud KMS ke akun layanan agen layanan Dataproc. Anda dapat menggunakan Google Cloud CLI untuk menetapkan peran:

        gcloud projects add-iam-policy-binding KMS_PROJECT_ID \
        --member serviceAccount:service-PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \
        --role roles/cloudkms.cryptoKeyEncrypterDecrypter
      

      Ganti kode berikut:

      KMS_PROJECT_ID: ID project Google Cloud Anda yang menjalankan Cloud KMS. Project ini juga dapat berupa project yang menjalankan resource Dataproc.

      PROJECT_NUMBER: nomor project (bukan project ID) dari project Google Cloud yang menjalankan resource Dataproc.

    4. Jika peran Agen Layanan Dataproc tidak terkait dengan akun layanan Agen Layanan Dataproc, tambahkan izin serviceusage.services.use ke peran khusus yang dikaitkan dengan akun layanan Agen Layanan Dataproc. Jika peran Dataproc Service Agent dikaitkan ke akun layanan Dataproc Service Agent, Anda dapat melewati langkah ini.

  3. Teruskan ID resource kunci Anda ke Google Cloud CLI atau Dataproc API untuk digunakan dengan enkripsi data cluster.

    gcloud CLI

    • Untuk mengenkripsi data persistent disk cluster menggunakan kunci Anda, teruskan ID resource kunci Anda ke flag --gce-pd-kms-key saat membuat cluster.
      gcloud dataproc clusters create CLUSTER_NAME \
          --region=REGION \
          --gce-pd-kms-key='projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME' \
          other arguments ...
      

      Anda dapat memverifikasi setelan kunci dari alat command line gcloud.

      gcloud dataproc clusters describe CLUSTER_NAME \
          --region=REGION
      

      Cuplikan output perintah:

      ...
      configBucket: dataproc- ...
      encryptionConfig:
      gcePdKmsKeyName: projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name
      ...
      
    • Untuk mengenkripsi data persistent disk cluster dan data argumen tugas menggunakan kunci Anda, teruskan ID resource kunci ke flag --kms-key saat Anda membuat cluster. Lihat Cluster.EncryptionConfig.kmsKey untuk mengetahui daftar jenis dan argumen tugas yang dienkripsi dengan tanda --kms-key.
      gcloud dataproc clusters create CLUSTER_NAME \
          --region=REGION \
          --kms-key='projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME' \
          other arguments ...
        

      Anda dapat memverifikasi setelan kunci dengan perintah dataproc clusters describe gcloud CLI. ID resource kunci ditetapkan pada gcePdKmsKeyName dan kmsKey untuk menggunakan kunci Anda dengan enkripsi persistent disk cluster dan data argumen tugas.

      gcloud dataproc clusters describe CLUSTER_NAME \
          --region=REGION
        

      Cuplikan output perintah:

      ...
      configBucket: dataproc- ...
      encryptionConfig:
      gcePdKmsKeyName: projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
      kmsKey: projects/PROJECT_ID/locations/REGION/keyRings/key-KEY_RING_NAME-name/cryptoKeys/KEY_NAME
      ...
      

    • Untuk mengenkripsi metadata cluster, driver tugas, dan data output lainnya yang ditulis ke bucket staging Dataproc Anda di Cloud Storage:
      gcloud dataproc clusters create CLUSTER_NAME \
          --region=REGION \
          --bucket=CMEK_BUCKET_NAME \
          other arguments ...
          

      Anda juga dapat meneruskan bucket yang mendukung CMEK ke perintah `gcloud dataproc jobs submit` jika tugas Anda menggunakan argumen bucket, seperti yang ditunjukkan dalam contoh `cmek-bucket` berikut:

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

    REST API

    • Untuk mengenkripsi data persistent disk VM cluster menggunakan kunci Anda, sertakan kolom ClusterConfig.EncryptionConfig.gcePdKmsKeyName sebagai bagian dari permintaan cluster.create.

      Anda dapat memverifikasi setelan kunci dengan perintah dataproc clusters describe gcloud CLI.

      gcloud dataproc clusters describe CLUSTER_NAME \
          --region=REGION
      

      Cuplikan output perintah:

      ...
      configBucket: dataproc- ...
      encryptionConfig:
      gcePdKmsKeyName: projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
      ...
      
    • Untuk mengenkripsi data persistent disk VM cluster dan data argumen tugas menggunakan kunci Anda, sertakan kolom Cluster.EncryptionConfig.kmsKey sebagai bagian dari permintaan cluster.create. Lihat Cluster.EncryptionConfig.kmsKey untuk mengetahui daftar jenis dan argumen tugas yang dienkripsi dengan kolom --kms-key.

      Anda dapat memverifikasi setelan kunci dengan perintah dataproc clusters describe gcloud CLI. ID resource kunci ditetapkan pada gcePdKmsKeyName dan kmsKey untuk menggunakan kunci Anda dengan enkripsi persistent disk cluster dan data argumen tugas.

      gcloud dataproc clusters describe CLUSTER_NAME \
          --region=REGION
      

      Cuplikan output perintah:

      ...
      configBucket: dataproc- ...
      encryptionConfig:
      gcePdKmsKeyName: projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
      kmsKey: projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
      
    • Untuk mengenkripsi metadata cluster, driver tugas, dan data output lainnya yang ditulis ke bucket staging Dataproc Anda di Cloud Storage:
      gcloud dataproc clusters create CLUSTER_NAME \
          --region=REGION \
          --bucket=CMEK_BUCKET_NAMEt \
          other arguments ...
      

      Anda juga dapat meneruskan bucket yang mendukung CMEK ke perintah `gcloud dataproc jobs submit` jika tugas Anda menggunakan argumen bucket, seperti yang ditunjukkan dalam contoh `cmek-bucket` berikut:

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

Menggunakan CMEK dengan data template alur kerja

Data argumen tugas template alur kerja Dataproc, seperti string kueri tugas Spark SQL, dapat dienkripsi menggunakan CMEK. Ikuti langkah 1, 2, dan 3 di bagian ini untuk menggunakan CMEK dengan template alur kerja Dataproc Anda. Lihat WorkflowTemplate.EncryptionConfig.kmsKey untuk daftar jenis tugas dan argumen template alur kerja yang dienkripsi menggunakan CMEK saat fitur ini diaktifkan.

  1. Buat kunci menggunakan Cloud Key Management Service (Cloud KMS). Nama resource kunci yang akan Anda gunakan pada langkah berikutnya akan dibuat sebagai berikut:
    projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name
    
  2. Untuk mengaktifkan akun layanan Dataproc agar dapat menggunakan kunci Anda:

    1. Tetapkan peran CryptoKey Encrypter/Decrypter Cloud KMS ke akun layanan Agen Layanan Dataproc. Anda dapat menggunakan gcloud CLI untuk menetapkan peran:

       gcloud projects add-iam-policy-binding KMS_PROJECT_ID \
       --member serviceAccount:service-PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \
       --role roles/cloudkms.cryptoKeyEncrypterDecrypter
      

      Ganti kode berikut:

      KMS_PROJECT_ID: ID project Google Cloud Anda yang menjalankan Cloud KMS. Project ini juga dapat berupa project yang menjalankan resource Dataproc.

      PROJECT_NUMBER: nomor project (bukan project ID) dari project Google Cloud yang menjalankan resource Dataproc.

    2. Jika peran Agen Layanan Dataproc tidak terkait dengan akun layanan Agen Layanan Dataproc, tambahkan izin serviceusage.services.use ke peran khusus yang terkait dengan akun layanan Agen Layanan Dataproc. Jika peran Dataproc Service Agent dikaitkan ke akun layanan Dataproc Service Agent, Anda dapat melewati langkah ini.

  3. Anda dapat menggunakan Google Cloud CLI atau Dataproc API untuk menetapkan kunci yang Anda buat pada Langkah 1 pada alur kerja. Setelah kunci ditetapkan pada alur kerja, semua argumen dan kueri tugas alur kerja dienkripsi menggunakan kunci untuk jenis tugas dan argumen apa pun yang tercantum di WorkflowTemplate.EncryptionConfig.kmsKey.

    gcloud CLI

    Teruskan ID resource kunci Anda ke flag --kms-key saat membuat template alur kerja dengan perintah gcloud dataproc Workflow-templates create.

    Contoh:

    gcloud dataproc workflow-templates create my-template-name \
        --region=region \
        --kms-key='projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name' \
        other arguments ...
    
    Anda dapat memverifikasi setelan kunci dari alat command line gcloud.
    gcloud dataproc workflow-templates describe TEMPLATE_NAME \
        --region=REGION
    
    ...
    id: my-template-name
    encryptionConfig:
    kmsKey: projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
    ...
    

    REST API

    Gunakan WorkflowTemplate.EncryptionConfig.kmsKey sebagai bagian dari permintaan workflowTemplates.create.

    Anda dapat memverifikasi setelan utama dengan mengeluarkan permintaan workflowTemplates.get. JSON yang ditampilkan berisi daftar kmsKey:

    ...
    "id": "my-template-name",
    "encryptionConfig": {
      "kmsKey": "projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name"
    },
    

Cloud External Key Manager

Cloud External Key Manager (Cloud EKM) (EKM) memungkinkan Anda melindungi data Dataproc menggunakan kunci yang dikelola oleh partner pengelolaan kunci eksternal yang didukung. Langkah-langkah yang Anda ikuti untuk menggunakan EKM di Dataproc sama dengan langkah-langkah yang Anda gunakan untuk menyiapkan kunci CMEK, dengan perbedaan berikut: kunci Anda mengarah ke URI untuk kunci yang dikelola secara eksternal (lihat Ringkasan Cloud EKM).

Error Cloud EKM

Saat Anda menggunakan Cloud EKM, upaya untuk membuat cluster dapat gagal karena error yang terkait dengan input, Cloud EKM, sistem partner pengelolaan kunci eksternal, atau komunikasi antara EKM dan sistem eksternal. Jika Anda menggunakan REST API atau Konsol Google Cloud, error akan dicatat dalam log Logging. Anda dapat memeriksa error cluster yang gagal dari tab View Log.