Chiavi di crittografia gestite dal cliente (CMEK)

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

La funzionalità CMEK consente di creare, utilizzare e revocare la chiave di crittografia della chiave (KEK). Google controlla ancora la chiave di crittografia dei dati (DEK). Per ulteriori informazioni sulle chiavi di crittografia dei dati di Google, consulta Crittografia dei dati inattivi.

Utilizzare CMEK con i dati del cluster

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

  • Dati sui dischi permanenti collegati alle VM nel cluster Dataproc
  • 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 di job e altri dati scritti in un bucket gestione temporanea di Dataproc creato da te

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

  1. Creare 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, è strutturato 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 il ruolo Autore crittografia/decrittografia CryptoKey di Cloud KMS all'account di servizio Agente di servizio Compute Engine.
    2. Assegna il ruolo Autore crittografia/decriptazione CryptoKey Cloud KMS all'account di servizio dell'agente di servizio Cloud Storage.

    3. Assegna il ruolo Autore crittografia/decriptazione CryptoKey Cloud KMS all'account di servizio dell'agente di servizio Dataproc. 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 progetto Google Cloud che esegue Cloud KMS. che può anche essere quello che esegue le risorse Dataproc.

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

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

  3. Trasmetti l'ID risorsa della 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 del disco permanente del cluster utilizzando la tua chiave, passa l'ID risorsa della chiave al flag --gce-pd-kms-key quando 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=REGION
      

      Snippet di 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 dei job utilizzando la chiave, passa l'ID risorsa della chiave al flag --kms-key quando crei il cluster. Consulta Cluster.EncryptionConfig.kmsKey per un elenco di argomenti e tipi di job 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 chiave con il comando dataproc clusters describe gcloud CLI. L'ID risorsa della chiave è impostato su gcePdKmsKeyName e kmsKey per utilizzare la chiave con la crittografia dei dati del disco permanente del cluster e dell'argomento del job.

      gcloud dataproc clusters describe CLUSTER_NAME \
          --region=REGION
        

      Snippet di 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-KEY_RING_NAME-name/cryptoKeys/KEY_NAME
      ...
      

    • Per criptare i metadati del cluster, il driver del job e altri dati di output scritti nel 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 al comando "gcloud dataproc jobsubmit" se il tuo job accetta argomenti del bucket, come mostrato nell'esempio "cmek-bucket" seguente:

      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 campo ClusterConfig.EncryptionConfig.gcePdKmsKeyName come parte di una richiesta cluster.create.

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

      gcloud dataproc clusters describe CLUSTER_NAME \
          --region=REGION
      

      Snippet di 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.kmsKey come parte di una richiesta cluster.create. Consulta Cluster.EncryptionConfig.kmsKey per un elenco di argomenti e tipi di job criptati con il campo --kms-key.

      Puoi verificare le impostazioni chiave con il comando dataproc clusters describe gcloud CLI. L'ID risorsa della chiave è impostato su gcePdKmsKeyName e kmsKey per utilizzare la chiave con la crittografia dei dati del disco permanente del cluster e dell'argomento del job.

      gcloud dataproc clusters describe CLUSTER_NAME \
          --region=REGION
      

      Snippet di 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 gestione temporanea Dataproc 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 al comando "gcloud dataproc jobsubmit" se il tuo job accetta argomenti del bucket, come mostrato nell'esempio "cmek-bucket" seguente:

      gcloud dataproc jobs submit pyspark gs://cmek-bucket/wordcount.py \
          --region=region \
          --cluster=cluster-name \
          -- gs://cmek-bucket/shakespeare.txt gs://cmek-bucket/counts
        

Usa CMEK con i dati dei modelli del flusso di lavoro

I dati degli argomenti del modello di flusso di lavoro Dataproc, ad esempio la stringa di query di un job Spark SQL, possono essere criptati tramite CMEK. Segui i passaggi 1, 2 e 3 in questa sezione per utilizzare CMEK con il modello di flusso di lavoro Dataproc. Consulta WorkflowTemplate.EncryptionConfig.kmsKey per un elenco degli argomenti e dei tipi di job dei modelli di flusso di lavoro criptati tramite CMEK quando questa funzionalità è abilitata.

  1. Crea una chiave utilizzando Cloud Key Management Service (Cloud KMS). Il nome della risorsa della chiave, che verrà utilizzato nei passaggi successivi, è strutturato 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 di servizio 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 progetto Google Cloud che esegue Cloud KMS. che può anche essere quello che esegue le risorse Dataproc.

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

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

  3. Puoi usare Google Cloud CLI o l'API Dataproc per impostare la chiave che hai creato nel passaggio 1 in un flusso di lavoro. Una volta impostata la chiave in un flusso di lavoro, tutti gli argomenti e le query dei job del flusso di lavoro vengono criptati utilizzando la chiave per qualsiasi tipo di job e argomento elencato in WorkflowTemplate.EncryptionConfig.kmsKey.

    Interfaccia a riga di comando gcloud

    Passa l'ID risorsa della tua chiave al flag --kms-key quando crei il modello di flusso di lavoro con il comando gcloud dataproc flow-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 dallo 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

    Utilizzare WorkflowTemplate.EncryptionConfig.kmsKey come parte di una richiesta workflowTemplates.create.

    Puoi verificare l'impostazione della chiave inviando una richiesta workflowTemplates.get. 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) ti consente di proteggere i dati Dataproc utilizzando chiavi gestite da un partner esterno supportato per la gestione delle chiavi. I passaggi da seguire per utilizzare EKM in Dataproc sono gli stessi di quelli utilizzati per configurare le chiavi CMEK, con la seguente differenza: i punti chiave a un URI per la chiave gestita esternamente (consulta la 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 a input, a Cloud EKM, al sistema esterno di gestione delle chiavi del partner o alle 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 gli errori del cluster non riuscito dalla scheda Visualizza log.