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:
- 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
Tetapkan peran berikut ke akun layanan berikut:
- 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.
Tetapkan peran CryptoKey Encrypter/Decrypter Cloud KMS ke akun layanan agen layanan Cloud Storage.
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.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.
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 padagcePdKmsKeyName
dankmsKey
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:
- Membuat bucket Anda sendiri dengan CMEK. Saat menambahkan kunci ke bucket, gunakan kunci yang Anda buat pada Langkah 1.
- Teruskan nama bucket ke flag `--bucket` saat Anda membuat cluster.
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 padagcePdKmsKeyName
dankmsKey
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:
- Membuat bucket Anda sendiri dengan CMEK. Saat menambahkan kunci ke bucket, gunakan kunci yang Anda buat pada Langkah 1.
- Teruskan nama bucket ke kolom ClusterConfig.configBucket sebagai bagian dari permintaan cluster.create.
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
- Untuk mengenkripsi data persistent disk cluster menggunakan kunci Anda, teruskan ID resource kunci Anda ke flag
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.
- 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
Untuk mengaktifkan akun layanan Dataproc agar dapat menggunakan kunci Anda:
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.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.
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 linegcloud
.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.