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 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, 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
Tetapkan peran berikut ke akun layanan berikut:
- 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 Compute Engine service agent.
Tetapkan peran Pengenkripsi/Pendekripsi CryptoKey Cloud KMS ke akun layanan Agen layanan Cloud Storage.
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. \ --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.Aktifkan Cloud KMS API di project yang menjalankan resource Dataproc.
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.
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 digcePdKmsKeyName
dankmsKey
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:
- Buat bucket Anda sendiri dengan CMEK. Saat menambahkan kunci ke bucket, gunakan kunci yang Anda buat di 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 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 digcePdKmsKeyName
dankmsKey
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:
- Create your own bucket with CMEK. When adding the key to the bucket, use a key that you created in Step 1.
- Pass the bucket name to the ClusterConfig.configBucket field as part of a cluster.create request.
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
- Untuk mengenkripsi data disk persisten 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. Lihat WorkflowTemplate.EncryptionConfig.kmsKey untuk mengetahui 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 Anda gunakan di langkah berikutnya,
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. \ --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.Aktifkan Cloud KMS API di project yang menjalankan resource Dataproc.
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.
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:
Anda dapat memverifikasi setelan kunci dari alat command linegcloud 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 ...
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.