Chiavi di crittografia gestite dal cliente (CMEK)

Quando utilizzi Dataproc, i dati dei cluster e dei job vengono archiviati i dischi associati alle VM di Compute Engine nel tuo cluster in un ambiente Cloud Storage bucket gestione temporanea. I dati di questo disco permanente e di questo bucket sono criptati utilizzando una chiave di crittografia dei dati generata da Google (DEK) e chiave di crittografia della chiave (KEK).

La funzionalità CMEK consente di creare, usare e revocare la chiave di crittografia della chiave (KEK). Google continua a controllare i dati chiave di crittografia (DEK). Per ulteriori informazioni sulle chiavi di crittografia dei dati di Google, consulta Crittografia at-rest.

Utilizza CMEK con i dati del cluster

Puoi utilizzare le chiavi di crittografia gestite dal cliente (CMEK) per criptare i seguenti dati del cluster:

  • Dati sui dischi permanenti collegati alle VM nel tuo cluster Dataproc
  • Dati dell'argomento del job inviati al cluster, ad esempio una stringa di query inviata con un job Spark SQL
  • Metadati del cluster, output driver del job, e altri dati scritti su Dataproc bucket gestione temporanea che crei

Segui questi passaggi per utilizzare CMEK con la crittografia dei dati del cluster:

  1. Crea una o più chiavi utilizzando Cloud Key Management Service. Il nome della risorsa, chiamato anche ID risorsa di una chiave, che utilizzerai nei passaggi successivi. è costruito come segue:
    projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
    
  2. Assegna i ruoli seguenti ai seguenti account di servizio:

    1. Segui l'elemento n. 5 in Compute Engine→Protezione delle risorse con le chiavi Cloud KMS→Prima di iniziare per assegnare le risorse di Cloud KMS Autore crittografia/decrittografia CryptoKey il ruolo all'agente di servizio Compute Engine l'account di servizio.
    2. Assegna Cloud KMS Autore crittografia/decrittografia CryptoKey al ruolo Agente di servizio Cloud Storage l'account di servizio.

    3. Assegna Cloud KMS Autore crittografia/decrittografia CryptoKey al ruolo Agente di servizio Dataproc l'account di servizio. Puoi utilizzare Google Cloud 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 progetto Google Cloud che esegue Cloud KMS. Questo progetto può anche essere il progetto che esegue le risorse Dataproc.

      PROJECT_NUMBER: il numero del progetto (non l'ID) del progetto Google Cloud che esegue le risorse Dataproc.

    4. Abilita l'API Cloud KMS nel progetto che esegue le risorse Dataproc.

    5. Se il ruolo di Agente di servizio Dataproc non è collegato a l'account di servizio dell'agente di servizio Dataproc, quindi aggiungi l'autorizzazione serviceusage.services.use al associato all'account di servizio dell'agente di servizio Dataproc. Se il ruolo Agente di servizio Dataproc è associato all'account di servizio dell'agente di servizio Dataproc, puoi saltare questo passaggio.

  3. Passa l'ID risorsa della tua chiave a Google Cloud CLI o all'API Dataproc da utilizzare con la crittografia dei dati del cluster.

    Interfaccia a riga di comando gcloud

    • Per criptare i dati dei disco permanente del cluster utilizzando la tua chiave, passa l'ID risorsa della tua chiave nel flag --gce-pd-kms-key quando crei nel 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=REGION
      

      Snippet dell'output comando:

      ...
      configBucket: dataproc- ...
      encryptionConfig:
      gcePdKmsKeyName: projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name
      ...
      
    • Per criptare i dati dei disco permanente del cluster e dei dati degli argomenti dei job: utilizzando la chiave, passa l'ID risorsa della chiave flag --kms-key quando crei il cluster. Vedi Cluster.EncryptionConfig.kmsKey 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 gcloud CLI Comando dataproc clusters describe. L'ID risorsa della chiave è impostato gcePdKmsKeyName e kmsKey per utilizzare la tua chiave con la crittografia di dei dati di un disco permanente e di un argomento job.

      gcloud dataproc clusters describe CLUSTER_NAME \
          --region=REGION
        

      Snippet dell'output 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-KEY_RING_NAME-name/cryptoKeys/KEY_NAME
      ...
      

    • Per criptare i metadati del cluster, il driver del job e altri dati di output scritti sul tuo Bucket gestione temporanea Dataproc in Cloud Storage:
      gcloud dataproc clusters create CLUSTER_NAME \
          --region=REGION \
          --bucket=CMEK_BUCKET_NAME \
          other arguments ...
          

      Puoi anche passare i bucket abilitati per CMEK a "gcloud dataproc job send" se il tuo 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 disco permanente delle VM del cluster utilizzando la tua chiave, includi: ClusterConfig.EncryptionConfig.gcePdKmsKeyName nell'ambito di un cluster.create richiesta.

      Puoi verificare l'impostazione della chiave con gcloud CLI Comando dataproc clusters describe.

      gcloud dataproc clusters describe CLUSTER_NAME \
          --region=REGION
      

      Snippet dell'output comando:

      ...
      configBucket: dataproc- ...
      encryptionConfig:
      gcePdKmsKeyName: projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
      ...
      
    • Per criptare i dati disco permanente delle VM del cluster e i dati degli argomenti dei job utilizzando la chiave, includi il campo Cluster.EncryptionConfig.kmsKey in un cluster.create richiesta. 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 gcloud CLI Comando dataproc clusters describe. L'ID risorsa della chiave è impostato gcePdKmsKeyName e kmsKey per utilizzare la tua chiave con la crittografia di dei dati di un disco permanente e di un argomento job.

      gcloud dataproc clusters describe CLUSTER_NAME \
          --region=REGION
      

      Snippet dell'output 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
      
    • 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 ...
      

      Puoi anche passare i bucket abilitati per CMEK a "gcloud dataproc job send" se il tuo 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 flusso di lavoro

dati dell'argomento job del modello di flusso di lavoro Dataproc, come la stringa di query di un job Spark SQL, possono essere criptate tramite CMEK. Segui i passaggi 1, 2 e 3 in questa sezione per utilizzare CMEK con il tuo Modello di flusso di lavoro Dataproc. Consulta WorkflowTemplate.EncryptionConfig.kmsKey per un elenco dei tipi di job e degli argomenti del modello di flusso di lavoro criptati usando CMEK quando questa funzione è abilitata.

  1. Crea una chiave utilizzando Cloud Key Management Service (Cloud KMS). Il nome risorsa della chiave, che utilizzerai nei passaggi successivi, è costruito come segue:
    projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name
    
  2. Per abilitare gli account di servizio Dataproc per l'utilizzo della chiave:

    1. Assegna il ruolo CryptoKey Encrypter/Decrypter di Cloud KMS all'account Account di servizio dell'agente di servizio Dataproc. 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 progetto Google Cloud che esegue Cloud KMS. Questo progetto può anche essere il progetto che esegue le risorse Dataproc.

      PROJECT_NUMBER: il numero del progetto (non l'ID) del progetto Google Cloud che esegue le risorse Dataproc.

    2. Abilita l'API Cloud KMS nel progetto che esegue le risorse Dataproc.

    3. Se il ruolo di Agente di servizio Dataproc non è collegato all'account di servizio dell'agente di servizio Dataproc, quindi aggiungi l'autorizzazione serviceusage.services.use al associato all'account di servizio dell'agente di servizio Dataproc. Se il ruolo Agente di servizio Dataproc è associato all'account di servizio dell'agente di servizio Dataproc, puoi saltare questo passaggio.

  3. Puoi utilizzare Google Cloud CLI o l'API Dataproc per impostare la chiave creata nel passaggio 1 su un flusso di lavoro. Una volta impostata la chiave su un flusso di lavoro, tutti gli argomenti e le query dei job del flusso di lavoro sono criptati utilizzando la chiave per qualsiasi tipo di job e gli argomenti elencati in WorkflowTemplate.EncryptionConfig.kmsKey.

    Interfaccia a riga di comando gcloud

    Passa l'ID risorsa della tua chiave flag --kms-key quando crei il modello di flusso di lavoro con Comando gcloud dataproc workflow-templates create.

    Esempio:

    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 ...
    
    Puoi verificare l'impostazione della chiave dalla riga di comando gcloud lo strumento a riga di comando 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 le funzionalità di WorkflowTemplate.EncryptionConfig.kmsKey nell'ambito di un richiesta workflowTemplates.create.

    Per verificare l'impostazione della chiave, puoi emettere un workflowTemplates.get richiesta. Il JSON restituito contiene elenchi di 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) consente di proteggere i dati Dataproc utilizzando chiavi gestite da un partner esterno per la gestione delle chiavi supportato. I passaggi da seguire per utilizzare EKM in Dataproc sono gli stessi di come quelle che utilizzi per configurare le chiavi CMEK, con la seguente differenza: la chiave rimanda a una URI della chiave gestita esternamente (vedi Panoramica di Cloud EKM).

Errori Cloud EKM

Quando utilizzi Cloud EKM, un tentativo di creare un cluster può non riuscire a causa di errori associati agli input, Cloud EKM, la chiave esterna il sistema partner di gestione o le comunicazioni tra EKM e il sistema esterno. Se utilizzi l'API REST o la console Google Cloud, gli errori vengono registrati in Logging. Puoi esaminare le risorse del cluster gli errori nella scheda Visualizza log.