Vom Kunden verwaltete Verschlüsselungsschlüssel (CMEK)

Wenn Sie Dataproc verwenden, werden Cluster- und Jobdaten auf nichtflüchtigen Speichern (Persistent Disks, PDs) gespeichert, die mit den Compute Engine-VMs in Ihrem Cluster und in einem Cloud Storage-Staging-Bucket verknüpft sind. Die PD- und Bucket-Daten werden mit einem von Google generierten Datenverschlüsselungsschlüssel (Data Encryption Key, DEK) und mit einem Schlüsselverschlüsselungsschlüssel (Key Encryption Key, KEK) verschlüsselt. Mit der CMEK-Funktion können Sie den KEK erstellen, verwenden und widerrufen. Die Verwaltung des DEK obliegt Google. Weitere Informationen zu Datenverschlüsselungsschlüsseln von Google finden Sie unter Verschlüsselung inaktiver Daten.

CMEK verwenden

Mit CMEK können Sie Daten auf den PDs verschlüsseln, die mit den VMs in Ihrem Dataproc-Cluster verknüpft sind, und/oder die Clustermetadaten und die Jobausgabe, die in den Staging-Bucket von Dataproc geschrieben wurde. Führen Sie zuerst die Schritte 1 und 2 aus, dann den Schritt 3, 4 oder 5, um den CMEK mit den PDs Ihres Clusters, mit dem Cloud Storage-Bucket oder mit beidem zu verwenden.

  1. Erstellen Sie einen Schlüssel mithilfe des Cloud Key Management Service (Cloud KMS). Kopieren Sie den Ressourcennamen, den Sie in den nächsten Schritten verwenden können. Der Ressourcenname wird so erstellt:
    projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name
    
  2. So ermöglichen Sie den Compute Engine- und Cloud Storage-Dienstkonten die Verwendung Ihres Schlüssels:

    1. Führen Sie Punkt 5 unter Compute Engine→Protecting Resources with Cloud KMS Keys→Bevor Sie beginnen aus, um die Rolle „Cloud KMS“ CryptoKey Encrypter/Decrypter dem Compute Engine-Dienst-Agent zuzuweisen.
    2. Cloud KMS-Rolle CryptoKey Encrypter/Decrypter dem Cloud Storage-Dienst-Agent zuweisen
  3. Sie können die Google Cloud-Befehlszeile oder die Dataproc API verwenden, um den in Schritt 1 erstellten Schlüssel für die PDs festzulegen, die mit den VMs im Dataproc-Cluster verknüpft sind.

    gcloud-Befehl

    Übergeben Sie die in Schritt 1 erhaltene ID der Cloud KMS-Ressource an das Flag --gce-pd-kms-key, wenn Sie den Cluster mit dem Befehl gcloud dataproc clusters create erstellen.

    Example:

    gcloud dataproc clusters create my-cluster-name \
        --region=region \
        --gce-pd-kms-key='projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name' \
        other args ...
    

    Sie können die Schlüsseleinstellung mit dem gcloud-Befehlszeilentool prüfen.

    gcloud dataproc clusters describe cluster-name \
        --region=region
    
    ...
    configBucket: dataproc- ...
    encryptionConfig:
    gcePdKmsKeyName: projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name
    ...
    

    REST API

    Verwenden Sie ClusterConfig.EncryptionConfig.gcePdKmsKeyName als Teil einer cluster.create-Anfrage.

    Sie können die Schlüsseleinstellung mit einer clusters.get-Anfrage prüfen. Die zurückgegebene JSON-Datei enthält eine Liste von gcePdKmsKeyName:

    ...
    {
    "projectId": "project-id",
    "clusterName": "cluster-name",
    "config": {
       "encryptionConfig": {
      "gcePdKmsKeyName": "projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name"
    }
    },
    

  4. Erstellen Sie einen Bucket mit CMEK, um CMEK für den Cloud Storage-Bucket zu verwenden, der von Dataproc zum Lesen und Schreiben von Cluster- und Jobdaten verwendet wird. Hinweis: Verwenden Sie den in Schritt 1 erstellten Schlüssel, wenn Sie den Schlüssel für den Bucket hinzufügen. Übergeben Sie den Bucket-Namen dann an den Befehl gcloud dataproc clusters create, wenn Sie den Cluster erstellen.

    Beispiel:

    gcloud dataproc clusters create my-cluster \
        --region=region \
        --bucket=name-of-CMEK-bucket \
        other args ...
    

    Sie können auch einen CMEK-fähigen Bucket an den Befehl gcloud dataproc jobs submit übergeben, wenn Ihr Job Bucket-Argumente übernimmt (siehe ...cmek-bucket...-Bucket-Argumente im folgenden PySpark-Jobbeispiel).

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

  5. Wenn Sie CMEK für die PDs in Ihrem Cluster und den von Dataproc verwendeten Cloud Storage-Bucket verwenden möchten, übergeben Sie sowohl das Flag --gce-pd-kms-key als auch das Flag --bucket an den Befehl gcloud dataproc clusters create, wie in den Schritten 3 und 4 erläutert. Sie können einen separaten Schlüssel für PD-Daten und Bucket-Daten erstellen und verwenden.

Cloud External Key Manager

Mit dem Cloud External Key Manager (EKM) können Sie Dataproc-Daten mit Schlüsseln schützen, die von einem unterstützten externen Schlüsselverwaltungspartner verwaltet werden. Die Schritte, die Sie bei der Verwendung von EKM in Dataproc ausführen, sind die gleichen wie bei der Einrichtung von CMEK-Schlüsseln. Der Unterschied besteht darin: Der Schlüssel verweist auf einen URI für den extern verwalteten Schlüssel (siehe Cloud EKM-Übersicht).

Cloud EKM-Fehler

Wenn Sie Cloud EKM verwenden, kann ein Versuch, einen Cluster zu erstellen, aufgrund von Fehlern im Zusammenhang mit Eingaben, Cloud EKM, dem Partnersystem für die externe Schlüsselverwaltung oder der Kommunikation zwischen EKM und dem externen System fehlschlagen. Wenn Sie die REST API oder die Google Cloud Console verwenden, werden Fehler in Logging protokolliert. Sie können die Fehler des fehlgeschlagenen Clusters auf dem Tab "Logs ansehen" prüfen.