Saat Anda menggunakan Managed Service for Apache Spark, data tugas dan cluster disimpan di persistent disk yang terkait dengan VM Compute Engine di cluster Anda dan di bucket penyiapan Cloud Storage. Secara default, data bucket dan disk persisten ini dienkripsi menggunakan kunci enkripsi data (DEK) dan kunci enkripsi kunci (KEK) yang dibuat oleh Google.
Jika ingin mengontrol dan mengelola kunci enkripsi kunci (KEK), Anda dapat menggunakan Kunci Enkripsi yang Dikelola Pelanggan (CMEK) (Google akan terus mengontrol kunci enkripsi data (DEK)). Untuk mengetahui informasi selengkapnya tentang kunci enkripsi data Google, lihat Enkripsi dalam Penyimpanan.
Enkripsi data cluster CMEK
Anda dapat menggunakan kunci enkripsi yang dikelola pelanggan (CMEK) untuk mengenkripsi data cluster berikut:
- Data di persistent disk yang terpasang ke VM cluster Managed Service untuk Apache Spark
- 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 Managed Service for Apache Spark cluster Anda
Sebelum memulai
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Dataproc, Cloud Key Management Service, Compute Engine, and Cloud Storage APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Dataproc, Cloud Key Management Service, Compute Engine, and Cloud Storage APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init
Membuat kunci
Untuk melindungi resource Managed Service for Apache Spark dengan CMEK, Anda dapat mengotomatiskan pembuatan kunci atau membuat kunci secara manual.
Pembuatan kunci otomatis
Gunakan Autokey untuk mengotomatiskan penyediaan dan penetapan CMEK. Autokey membuat key ring dan kunci sesuai permintaan saat resource dibuat. Agen layanan menggunakan kunci dalam operasi enkripsi dan dekripsi. Jika diperlukan, Autokey akan membuat agen dan memberikan peran Identity and Access Management (IAM) (IAM) yang diperlukan kepada agen tersebut. Untuk mengetahui informasi selengkapnya, lihat Ringkasan Autokey.
Pembuatan kunci manual
Ikuti langkah-langkah berikut untuk membuat kunci secara manual untuk enkripsi CMEK data cluster:
Buat satu atau beberapa kunci menggunakan Cloud KMS. Nama resource, yang juga disebut ID resource kunci, yang Anda gunakan pada langkah berikutnya, dibuat sebagai berikut:
Kunci (CMEK) harus berada di lokasi yang sama dengan resource terenkripsi. Misalnya, CMEK yang digunakan untuk mengenkripsi resource di regionprojects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
us-central1juga harus berada di regionus-central1.Untuk memastikan setiap akun layanan berikut, akun layanan Agen Layanan Compute Engine, akun layanan Agen Layanan Cloud Storage, dan akun layanan Agen Layanan Managed Service for Apache Spark, memiliki izin yang diperlukan untuk melindungi resource menggunakan kunci Cloud KMS, minta administrator Anda untuk memberikan peran IAM Pengenkripsi/Pendekripsi CryptoKey Cloud KMS (
roles/cloudkms.cryptoKeyEncrypterDecrypter) kepada setiap akun layanan berikut, akun layanan Agen Layanan Compute Engine, akun layanan Agen Layanan Cloud Storage, dan akun layanan Agen Layanan Managed Service for Apache Spark, di project Anda.Contoh penetapan peran Pengenkripsi/Pendekripsi CryptoKey Cloud KMS ke akun layanan Agen layanan Managed Service for Apache Spark menggunakan Google Cloud CLI:
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 berisi kunci Cloud KMS.PROJECT_NUMBER: nomor project (bukan project ID) dari Google Cloud project yang menjalankan resource Managed Service for Apache Spark.Jika Managed Service for Apache Spark Service Agent role tidak dilampirkan ke Managed Service for Apache Spark Service Agent service account, tambahkan izin
serviceusage.services.useke peran kustom yang dilampirkan ke Managed Service for Apache Spark Service Agent service account.
Membuat cluster dengan CMEK
Teruskan ID resource kunci Anda saat Anda membuat cluster Managed Service for Apache Spark.
gcloud CLI
- Untuk mengenkripsi data persistent disk cluster menggunakan kunci Anda, teruskan
ID resource kunci Anda ke tanda
--gce-pd-kms-keysaat 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=REGIONCuplikan 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-keysaat Anda membuat cluster. Lihat [Cluster.EncryptionConfig.kmsKey](/dataproc/docs/reference/rest/v1/ClusterConfig#EncryptionConfig.FIELDS.kms_key) 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 digcePdKmsKeyNamedankmsKeyuntuk menggunakan kunci Anda dengan enkripsi data argumen tugas dan disk persisten cluster.gcloud dataproc clusters describe CLUSTER_NAME \ --region=REGIONCuplikan 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 Managed Service for Apache Spark Anda di Cloud Storage:
- Buat bucket Anda sendiri dengan CMEK. Saat menambahkan kunci ke bucket, gunakan kunci yang Anda buat pada Langkah 1.
- Teruskan nama bucket ke tanda
--bucketsaat 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 memerlukan 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=REGIONCuplikan 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.kmsKeysebagai 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 digcePdKmsKeyNamedankmsKeyuntuk menggunakan kunci Anda dengan enkripsi data argumen tugas dan disk persisten cluster.gcloud dataproc clusters describe CLUSTER_NAME \ --region=REGIONCuplikan 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 penyiapan Managed Service for Apache Spark di Cloud Storage:
- Buat 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_NAME \ other arguments ...Anda juga dapat meneruskan bucket yang mendukung CMEK ke perintah `gcloud dataproc jobs submit` jika tugas Anda memerlukan 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 Managed Service for Apache Spark, 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 Managed Service for Apache Spark Anda. Lihat WorkflowTemplate.EncryptionConfig.kmsKey untuk mengetahui daftar jenis dan argumen tugas template alur kerja yang dienkripsi menggunakan CMEK jika fitur ini diaktifkan.
- Buat kunci menggunakan 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 mengizinkan akun layanan Managed Service for Apache Spark menggunakan kunci Anda:
Tetapkan peran Cloud KMS
CryptoKey Encrypter/Decrypterke akun layanan Agen Layanan Managed Service for Apache Spark. 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 yang menjalankan Cloud KMS. Project ini juga dapat berupa project yang menjalankan resource Managed Service for Apache Spark.
PROJECT_NUMBER: nomor project (bukan project ID) dari Google Cloud project yang menjalankan resource Managed Service for Apache Spark.
Aktifkan Cloud KMS API di project yang menjalankan resource Managed Service for Apache Spark.
Jika Managed Service for Apache Spark Service Agent role tidak dilampirkan ke Managed Service for Apache Spark Service Agent service account, tambahkan izin
serviceusage.services.useke peran kustom yang dilampirkan ke Managed Service for Apache Spark Service Agent service account. Jika peran Managed Service for Apache Spark Service Agent sudah diberikan ke akun layanan Managed Service for Apache Spark Service Agent, Anda dapat melewati langkah ini.
Anda dapat menggunakan gcloud 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 semua jenis tugas dan argumen yang tercantum dalam WorkflowTemplate.EncryptionConfig.kmsKey.
gcloud CLI
Teruskan ID resource kunci Anda ke flag
--kms-keysaat 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
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) memungkinkan Anda melindungi data Managed Service for Apache Spark menggunakan kunci yang dikelola oleh partner pengelolaan kunci eksternal yang didukung. Langkah-langkah yang Anda ikuti untuk menggunakan Cloud EKM di Managed Service for Apache Spark sama dengan langkah-langkah yang Anda gunakan untuk menyiapkan kunci CMEK, dengan perbedaan berikut: kunci Anda menunjuk 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 Cloud EKM dan sistem eksternal. Jika Anda menggunakan REST API atau konsol Google Cloud , error akan dicatat di Cloud Logging. Anda dapat memeriksa error cluster yang gagal dari tab Lihat Log.