Quando utilizzi Managed Service for Apache Spark, i dati dei cluster e dei job vengono archiviati sui dischi permanenti associati alle VM di Compute Engine nel cluster e in un bucket di staging di Cloud Storage staging bucket. Per impostazione predefinita, questi dati del disco permanente e del bucket vengono criptati utilizzando una chiave di crittografia dei dati (DEK) e una chiave di crittografia della chiave (KEK) generate da Google.
Se vuoi controllare e gestire la chiave di crittografia della chiave (KEK), puoi utilizzare le chiavi di crittografia gestite dal cliente (CMEK) (Google continua a controllare la chiave di crittografia dei dati (DEK)). Per saperne di più sulle chiavi di crittografia dei dati di Google, consulta Crittografia at-rest.
Crittografia dei dati del cluster CMEK
Puoi utilizzare le chiavi di crittografia gestite dal cliente (CMEK) per criptare i seguenti dati del cluster:
- Dati sui dischi permanenti collegati alle VM del cluster Managed Service for Apache Spark
- Dati degli argomenti del job inviati al cluster, ad esempio una stringa di query inviata con un job Spark SQL
- Metadati del cluster, output del driver del job, e altri dati scritti nel cluster Managed Service for Apache Spark bucket di staging
Prima di iniziare
- Accedi al tuo Google Cloud account. Se non hai mai utilizzato Google Cloud, crea un account per valutare il rendimento dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment dei carichi di lavoro.
-
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
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Installa Google Cloud CLI.
-
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
Per inizializzare gcloud CLI, esegui questo comando:
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
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Installa Google Cloud CLI.
-
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
Per inizializzare gcloud CLI, esegui questo comando:
gcloud init
Crea chiavi
Per proteggere le risorse di Managed Service for Apache Spark con CMEK, puoi automatizzare la creazione delle chiavi o crearle manualmente.
Creazione automatica delle chiavi
Utilizza Autokey per automatizzare il provisioning di CMEK e l'assegnazione. Autokey genera chiavi normali e automatizzate on demand quando vengono create le risorse. I service agent utilizzano le chiavi nelle operazioni di crittografia e decrittografia. Se necessario, Autokey crea gli agent e concede loro i ruoli Identity and Access Management (IAM) richiesti. Per saperne di più, consulta la panoramica di Autokey.
Creazione manuale delle chiavi
Segui questi passaggi per creare manualmente le chiavi per la crittografia CMEK dei dati del cluster:
Crea una o più chiavi utilizzando il Cloud KMS. Il nome della risorsa, chiamato anche ID risorsa di una chiave, che utilizzerai nei passaggi successivi, viene creato nel seguente modo:
La chiave (CMEK) deve trovarsi nella stessa località della risorsa criptata. Ad esempio, la chiave CMEK utilizzata per criptare una risorsa nella regioneprojects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
us-central1deve trovarsi anche nella regioneus-central1.Per assicurarti che ciascuno dei seguenti service account, il service account dell'agente di servizio Compute Engine, il service account dell'agente di servizio Cloud Storage, e il service account dell'agente di servizio Managed Service for Apache Spark, disponga delle autorizzazioni necessarie per proteggere le risorse utilizzando le chiavi Cloud KMS, chiedi all'amministratore di concedere il ruolo IAM Cloud KMS CryptoKey Encrypter/Decrypter (
roles/cloudkms.cryptoKeyEncrypterDecrypter) a ciascuno dei seguenti service account, il service account dell'agente di servizio Compute Engine, il service account dell'agente di servizio Cloud Storage, e il service account dell'agente di servizio Managed Service for Apache Spark, nel tuo progetto.Esempio di assegnazione del ruolo Cloud KMS CryptoKey Encrypter/Decrypter al account di servizio dell'agente di servizio Managed Service for Apache Spark utilizzando 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
Sostituisci quanto segue:
KMS_PROJECT_ID: l'ID del tuo Google Cloud progetto che contiene la chiave Cloud KMS.PROJECT_NUMBER: il numero di progetto (non l'ID progetto) del tuo Google Cloud progetto che esegue le risorse di Managed Service for Apache Spark.Se il ruolo dell'agente di servizio Managed Service for Apache Spark non è collegato a il service account dell'agente di servizio Managed Service for Apache Spark, aggiungi l'autorizzazione
serviceusage.services.usea un ruolo personalizzato collegato al account di servizio dell'agente di servizio Managed Service for Apache Spark.
Crea un cluster con CMEK
Passa l'ID risorsa della chiave quando crei il cluster Managed Service for Apache Spark.
gcloud CLI
- Per criptare i dati del disco permanente del cluster utilizzando la tua chiave, passa
l'ID risorsa della chiave al flag
--gce-pd-kms-keyquando crei il 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 ...Puoi verificare l'impostazione della chiave dallo strumento a riga di comando
gcloud.gcloud dataproc clusters describe CLUSTER_NAME \ --region=REGIONSnippet dell'output del comando:
... configBucket: dataproc- ... encryptionConfig: gcePdKmsKeyName: projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name ... - Per criptare i dati del disco permanente del cluster e i dati degli argomenti del job
utilizzando la tua chiave, passa l'ID risorsa della chiave al
--kms-keyflag quando crei il cluster. Consulta [Cluster.EncryptionConfig.kmsKey](/managed-spark/docs/reference/rest/v1/ClusterConfig#EncryptionConfig.FIELDS.kms_key) per un elenco dei tipi di job e degli argomenti criptati con il flag `--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 ...Puoi verificare le impostazioni delle chiavi con il comando gcloud CLI
dataproc clusters describe. L'ID risorsa della chiave è impostato sugcePdKmsKeyNameekmsKeyper utilizzare la tua chiave con la crittografia dei dati del disco permanente del cluster e degli argomenti del job.gcloud dataproc clusters describe CLUSTER_NAME \ --region=REGIONSnippet dell'output del comando:
... 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 ... - Per criptare i metadati del cluster, il driver del job e altri dati di output scritti nel bucket di staging di Managed Service for Apache Spark in Cloud Storage:
- Crea il tuo bucket con CMEK. Quando aggiungi la chiave al bucket, utilizza una chiave creata nel passaggio 1.
- Passa il nome del bucket al flag
--bucketquando crei il cluster.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --bucket=CMEK_BUCKET_NAME \ other arguments ...Puoi anche passare i bucket abilitati per CMEK al comando `gcloud dataproc jobs submit` se il job accetta argomenti del bucket, come mostrato nel seguente esempio `cmek-bucket`:
gcloud dataproc jobs submit pyspark gs://cmek-bucket/wordcount.py \ --region=region \ --cluster=cluster-name \ -- gs://cmek-bucket/shakespeare.txt gs://cmek-bucket/counts
API REST
- Per criptare i dati del disco permanente della VM del cluster utilizzando la tua chiave, includi il
ClusterConfig.EncryptionConfig.gcePdKmsKeyName
come parte di una
cluster.create.
Puoi verificare l'impostazione della chiave con il comando gcloud CLI
dataproc clusters describe.gcloud dataproc clusters describe CLUSTER_NAME \ --region=REGIONSnippet dell'output del comando:
... configBucket: dataproc- ... encryptionConfig: gcePdKmsKeyName: projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME ... - Per criptare i dati del disco permanente della VM del cluster e i dati degli argomenti del job utilizzando
la tua chiave, includi il campo
Cluster.EncryptionConfig.kmsKeycome parte di una cluster.create. Consulta Cluster.EncryptionConfig.kmsKey per un elenco dei tipi di job e degli argomenti criptati con il campo--kms-key.Puoi verificare le impostazioni delle chiavi con il comando gcloud CLI
dataproc clusters describe. L'ID risorsa della chiave è impostato sugcePdKmsKeyNameekmsKeyper utilizzare la tua chiave con la crittografia dei dati del disco permanente del cluster e degli argomenti del job.gcloud dataproc clusters describe CLUSTER_NAME \ --region=REGIONSnippet dell'output del comando:
... 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 ... - Per criptare i metadati del cluster, il driver del job e altri dati di output scritti nel bucket di staging di Managed Service for Apache Spark in Cloud Storage:
- Crea il tuo bucket con CMEK. Quando aggiungi la chiave al bucket, utilizza una chiave creata nel passaggio 1.
- Passa il nome del bucket al ClusterConfig.configBucket come parte di una cluster.create.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --bucket=CMEK_BUCKET_NAME \ other arguments ...Puoi anche passare i bucket abilitati per CMEK al comando `gcloud dataproc jobs submit` se il job accetta argomenti del bucket, come mostrato nel seguente esempio `cmek-bucket`:
gcloud dataproc jobs submit pyspark gs://cmek-bucket/wordcount.py \ --region=region \ --cluster=cluster-name \ -- gs://cmek-bucket/shakespeare.txt gs://cmek-bucket/counts
Utilizza CMEK con i dati del modello di workflow
I dati degli argomenti del job del modello di workflow di Managed Service for Apache Spark, come la stringa di query di un job Spark SQL, possono essere criptati utilizzando CMEK. Segui i passaggi 1, 2 e 3 in questa sezione per utilizzare CMEK con il modello di workflow di Managed Service for Apache Spark. Consulta WorkflowTemplate.EncryptionConfig.kmsKey per un elenco dei tipi di job e degli argomenti del modello di workflow criptati utilizzando CMEK quando questa funzionalità è abilitata.
- Crea una chiave utilizzando il Cloud KMS.
Il nome della risorsa della chiave, che utilizzerai nei passaggi successivi, viene creato nel seguente modo:
projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name
Per consentire ai service account di Managed Service for Apache Spark di utilizzare la tua chiave:
Assegna il ruolo Cloud KMS
CryptoKey Encrypter/Decrypteral service account dell'agente di servizio Managed Service for Apache Spark. Puoi utilizzare gcloud CLI per assegnare il ruolo:gcloud projects add-iam-policy-binding KMS_PROJECT_ID \ --member serviceAccount:service-PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
Sostituisci quanto segue:
KMS_PROJECT_ID: l'ID del tuo Google Cloud progetto che esegue Cloud KMS. Questo progetto può essere anche il progetto che esegue le risorse di Managed Service for Apache Spark.
PROJECT_NUMBER: il numero di progetto (non l'ID progetto) del tuo Google Cloud progetto che esegue le risorse di Managed Service for Apache Spark.
Abilita l'API Cloud KMS nel progetto che esegue le risorse di Managed Service for Apache Spark.
Se il ruolo dell'agente di servizio Managed Service for Apache Spark non è collegato al service account dell'agente di servizio Managed Service for Apache Spark, aggiungi l'autorizzazione
serviceusage.services.useal ruolo personalizzato collegato al account di servizio dell'agente di servizio Managed Service for Apache Spark. Se il ruolo dell'agente di servizio Managed Service for Apache Spark è collegato al account di servizio dell'agente di servizio Managed Service for Apache Spark, puoi saltare questo passaggio.
Puoi utilizzare gcloud CLI o l'API Dataproc per impostare la chiave creata nel passaggio 1 in un workflow. Una volta impostata la chiave in un workflow, tutti gli argomenti e le query del job del workflow vengono criptati utilizzando la chiave per tutti i tipi di job e gli argomenti elencati in WorkflowTemplate.EncryptionConfig.kmsKey.
gcloud CLI
Passa l'ID risorsa della chiave al
--kms-keyflag quando crei il modello di workflow con il comando gcloud dataproc workflow-templates create.Esempio:
Puoi verificare l'impostazione della chiave dallo strumento a riga di comandogcloud 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 ...
API REST
Utilizza WorkflowTemplate.EncryptionConfig.kmsKey come parte di una richiesta workflowTemplates.create.
Puoi verificare l'impostazione della chiave inviando una workflowTemplates.get. Il JSON restituito contiene
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) ti consente di proteggere i dati di Managed Service for Apache Spark utilizzando le chiavi gestite da un partner di gestione delle chiavi esterne supportato. I passaggi da seguire per utilizzare Cloud EKM in Managed Service for Apache Spark sono gli stessi utilizzati per configurare le chiavi CMEK, con la seguente differenza: la chiave rimanda a un URI per la chiave gestita esternamente (vedi Panoramica di Cloud EKM).
Errori di Cloud EKM
Quando utilizzi Cloud EKM, un tentativo di creare un cluster può non riuscire a causa di errori associati agli input, a Cloud EKM, al sistema del partner di gestione delle chiavi esterne o alle comunicazioni tra Cloud EKM e il sistema esterno. Se utilizzi l'API REST o la Google Cloud console, gli errori vengono registrati in Cloud Logging. Puoi esaminare gli errori del cluster non riuscito dalla scheda Visualizza log.