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 oleh Google.

Dengan fitur CMEK, Anda dapat membuat, menggunakan, dan mencabut kunci enkripsi kunci (KEK). Google tetap 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 dikirimkan ke cluster Anda, seperti string kueri yang dikirimkan dengan tugas Spark SQL
  • Metadata cluster, output driver tugas, dan data lain yang ditulis ke bucket penyiapan 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→Protecting Resources with Cloud KMS Keys→Before you begin 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 berupa project yang menjalankan resource Dataproc.

      PROJECT_NUMBER: nomor project (bukan project ID) Google Cloud project 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 dilekatkan 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 persistent disk cluster menggunakan kunci Anda, teruskan ID resource kunci Anda ke tanda --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 tugas dan argumen 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 utama dengan perintah gcloud CLI dataproc clusters describe. ID resource kunci ditetapkan di gcePdKmsKeyName dan kmsKey untuk menggunakan kunci Anda dengan enkripsi data argumen tugas dan disk persisten cluster.

      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 diaktifkan untuk CMEK ke perintah `gcloud dataproc jobs submit` jika tugas Anda mengambil 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 gcloud CLI dataproc clusters describe.

      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 tugas dan argumen yang dienkripsi dengan kolom --kms-key.

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

      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 diaktifkan untuk CMEK ke perintah `gcloud dataproc jobs submit` jika tugas Anda mengambil 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 mengetahui daftar jenis dan argumen tugas template alur kerja yang dienkripsi menggunakan CMEK jika 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 mengizinkan akun layanan Dataproc 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) Google Cloud project 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 sudah 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 di Logging. Anda dapat memeriksa error cluster yang gagal dari tab Lihat Log.