Kunci enkripsi yang dikelola pelanggan (CMEK)

Saat Anda menggunakan Dataproc, data cluster dan tugas disimpan di persistent disk yang terkait dengan VM Compute Engine di cluster Anda dan di bucket staging Cloud Storage. Data bucket dan disk persisten ini dienkripsi menggunakan kunci enkripsi data (DEK) dan kunci enkripsi kunci (KEK) yang dibuat 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 (CMEK) untuk mengenkripsi data cluster berikut:

  • Data di persistent disk yang terpasang ke VM di cluster Dataproc Anda
  • Data argumen tugas yang dikirim ke cluster Anda, seperti string kueri yang dikirimkan dengan tugas Spark SQL
  • Metadata cluster, output driver tugas, dan data lain 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, yang juga disebut ID resource kunci, yang Anda gunakan di 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 #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 Pengenkripsi/Pendekripsi CryptoKey Cloud KMS ke akun layanan Agen layanan Cloud Storage.

    3. Tetapkan peran Pengenkripsi/Pendekripsi CryptoKey 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 menjadi project yang menjalankan resource Dataproc.

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

    4. Aktifkan Cloud KMS API di project yang menjalankan resource Dataproc.

    5. Jika peran Agen Layanan Dataproc tidak dilampirkan ke akun layanan Agen Layanan Dataproc, tambahkan izin serviceusage.services.use ke peran kustom yang dilampirkan ke akun layanan Agen Layanan Dataproc. Jika peran Agen Layanan Dataproc disertakan ke akun layanan Agen Layanan Dataproc, 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 disk persisten cluster menggunakan kunci Anda, teruskan ID resource kunci Anda ke flag --gce-pd-kms-key saat Anda 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 disk persisten 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 di gcePdKmsKeyName dan kmsKey untuk menggunakan kunci Anda dengan enkripsi disk persisten 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 di Cloud Storage:
      gcloud dataproc clusters create CLUSTER_NAME \
          --region=REGION \
          --bucket=CMEK_BUCKET_NAME \
          other arguments ...
          

      Anda juga dapat meneruskan bucket yang mengaktifkan 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 disk persisten 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 disk persisten 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 di gcePdKmsKeyName dan kmsKey untuk menggunakan kunci Anda dengan enkripsi disk persisten 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
      
    • To encrypt cluster metadata, job driver, and other output data written to your Dataproc staging bucket in Cloud Storage:
      gcloud dataproc clusters create CLUSTER_NAME \
          --region=REGION \
          --bucket=CMEK_BUCKET_NAMEt \
          other arguments ...
      

      Anda juga dapat meneruskan bucket yang mengaktifkan 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. Lihat WorkflowTemplate.EncryptionConfig.kmsKey untuk mengetahui 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 Anda gunakan di langkah berikutnya, 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 menjadi project yang menjalankan resource Dataproc.

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

    2. Aktifkan Cloud KMS API di project yang menjalankan resource Dataproc.

    3. Jika peran Agen Layanan Dataproc tidak dilampirkan ke akun layanan Agen Layanan Dataproc, tambahkan izin serviceusage.services.use ke peran kustom yang dilampirkan ke akun layanan Agen Layanan Dataproc. Jika peran Agen Layanan Dataproc dilampirkan ke akun layanan Agen Layanan Dataproc, Anda dapat melewati langkah ini.

  3. Anda dapat menggunakan Google Cloud CLI atau Dataproc API untuk menetapkan kunci yang Anda buat di 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 dalam WorkflowTemplate.EncryptionConfig.kmsKey.

    gcloud CLI

    Teruskan ID resource kunci Anda ke flag --kms-key saat Anda 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 kunci 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 ke dalam log di Logging. Anda dapat memeriksa error cluster yang gagal dari tab Lihat Log.