Kundenseitig verwaltete Verschlüsselungsschlüssel (CMEKs)

Wenn Sie Cloud Dataproc verwenden, werden die Cluster- und Jobdaten in nichtflüchtigen Speichern (Persistent Disks, PDs) gespeichert. Diese sind den Compute Engine-VMs im Cluster und einem Cloud Storage-Staging-Bucket zugeordnet. 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

Sie können mit einem CMEK Daten auf den PDs, die den VMs in Ihrem Cloud Dataproc-Cluster zugeordnet sind, und/oder die Cluster-Metadaten sowie Job-Treiberausgaben, die in den Staging-Bucket von Cloud Dataproc geschrieben werden, 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. Weisen Sie dem Cloud Storage-Dienstkonto die Cloud KMS-Rolle CryptoKey Encrypter/Decrypter zu.
  3. Sie können mit dem gcloud-Befehlszeilentool oder mit der Cloud Dataproc API den in Schritt 1 erstellten Schlüssel für die PDs festlegen, die den VMs im Cloud Dataproc-Cluster zugeordnet sind.

    gcloud-Befehl

    Beim Erstellen des Clusters mit dem Befehl gcloud dataproc clusters create übergeben Sie die in Schritt 1 abgerufene ID der Cloud KMS-Ressource an das Flag --gce-pd-kms-key.

    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 gcloud-Befehlszeilentool überprüfen.

    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 im Rahmen der Anfrage "cluster.create".

    Sie können die Schlüsseleinstellung mit der Anfrage clusters.get überprü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. Zur Verwendung des CMEK in dem Cloud Storage-Bucket, der von Cloud Dataproc zum Lesen/Schreiben von Cluster- und Jobdaten genutzt wird, erstellen Sie einen Bucket mit CMEK. 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 unter den ...cmek-bucket... Bucket-Argumenten 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 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.