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 dem CMEK-Feature 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

Sie können mit einem CMEK Daten auf den PDs, die den VMs in Ihrem Cloud Dataproc-Cluster zugeordnet sind, bzw. die Clustermetadaten und Job-Treiberausgabe, die in den Staging-Bucket von Dataproc geschrieben wird, verschlüsseln. 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 in Compute Engine → Ressourcen mit Cloud KMS-Schlüsseln schützen → Vorbereitung aus, um dem Compute Engine-Dienstkonto die Cloud KMS-Rolle CryptoKey Encrypter/Decrypter zuzuweisen.
    2. Cloud KMS-Rolle CryptoKey Encrypter/Decrypter dem Cloud Storage-Dienstkonto zuweisen
  3. Verwenden Sie das Befehlszeilentool gcloud oder die Dataproc API, um den in Schritt 1 erstellten Schlüssel für die PDs festzulegen, die den VMs im Dataproc-Cluster zugeordnet 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.

    Beispiel:

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

    Sie können die Schlüsseleinstellung im Befehlszeilentool gcloud ansehen.

        gcloud dataproc clusters describe cluster-name
        
        ...
        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 der Anfrage clusters.get prüfen. Der zurückgegebene JSON-Code enthält den 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 Cloud 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 \
            --bucket name-of-CMEK-bucket \
            other args ...
        

    Sie können CMEK-fähige Buckets auch an den Befehl gcloud dataproc jobs submit übergeben, wenn Ihr Job Bucket-Argumente annimmt. Informationen dazu finden Sie in den Bucket-Argumenten ...cmek-bucket... im folgenden PySpark-Beispiel zur Jobübertragung.

    Beispiel:
        gcloud dataproc jobs submit pyspark gs://cmek-bucket/wordcount.py \
            --cluster clustername \
            -- gs://cmek-bucket/shakespeare.txt gs://cmek-bucket/counts
        
  5. Wenn Sie CMEK für die PDs in Ihrem Cluster und den von Cloud Dataproc verwendeten Cloud Storage-Bucket verwenden möchten, übergeben Sie das Flag --gce-pd-kms-key und --bucket an den Befehl gcloud dataproc clusters create, wie in Schritt 3 und 4 erläutert. Sie können einen separaten Schlüssel für PD-Daten und Bucket-Daten erstellen und verwenden.