Wenn Sie Dataproc verwenden, werden Cluster- und Jobdaten auf nichtflüchtigen Speichern gespeichert, die mit den Compute Engine-VMs in Ihrem Cluster und in einem Cloud Storage-Staging-Bucket verknüpft sind. Standardmäßig werden diese Daten auf dem persistenten Datenträger und im Bucket mit einem von Google generierten Datenverschlüsselungsschlüssel (Data Encryption Key, DEK) und einem Schlüsselverschlüsselungsschlüssel (Key Encryption Key, KEK) verschlüsselt.
Wenn Sie den Schlüsselverschlüsselungsschlüssel (Key Encryption Key, KEK) selbst steuern und verwalten möchten, können Sie kundenverwaltete Verschlüsselungsschlüssel (Customer-Managed Encryption Keys, CMEK) verwenden. Google verwaltet weiterhin den Datenverschlüsselungsschlüssel (Data Encryption Key, DEK). Weitere Informationen zu Datenverschlüsselungsschlüsseln von Google finden Sie unter Verschlüsselung inaktiver Daten.
CMEK-Clusterdatenverschlüsselung
Sie können kundenverwaltete Verschlüsselungsschlüssel (Customer-Managed Encryption Keys, CMEKs) verwenden, um die folgenden Clusterdaten zu verschlüsseln:
- Daten auf nichtflüchtigen Speichern, die an Dataproc-Cluster-VMs angehängt sind
- Jobargumentdaten, die an Ihren Cluster gesendet werden, z. B. ein Abfragestring, der mit einem Spark SQL-Job gesendet wird
- Clustermetadaten, Job-Treiberausgabe und andere Daten, die in den Staging-Bucket Ihres Dataproc-Clusters geschrieben werden
Hinweis
- Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie mit Google Cloudnoch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Dataproc, Cloud Key Management Service, Compute Engine, and Cloud Storage APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Installieren Sie die Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Dataproc, Cloud Key Management Service, Compute Engine, and Cloud Storage APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Installieren Sie die Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init
Schlüssel erstellen
Um Ihre Dataproc-Ressourcen mit CMEK zu schützen, können Sie die Erstellung von Schlüsseln automatisieren oder Schlüssel manuell erstellen.
Automatisierte Schlüsselerstellung
Autokey verwenden, um die CMEK-Bereitstellung und ‑Zuweisung zu automatisieren Mit Autokey werden Schlüsselbunde und Schlüssel bei der Ressourcenerstellung auf Anfrage generiert. Dienst-Agents verwenden die Schlüssel bei Ver- und Entschlüsselungsvorgängen. Bei Bedarf erstellt Autokey die Agents und weist ihnen die erforderlichen IAM-Rollen (Identity and Access Management) zu. Weitere Informationen finden Sie unter Übersicht: Autokey.
Manuelle Schlüsselerstellung
So erstellen Sie manuell Schlüssel für die CMEK-Verschlüsselung von Clusterdaten:
Erstellen Sie einen oder mehrere Schlüssel mit Cloud KMS. Der Ressourcenname, auch Ressourcen-ID eines Schlüssels genannt, den Sie in den nächsten Schritten verwenden, wird so erstellt:
Der Schlüssel (CMEK) muss sich am selben Speicherort wie die verschlüsselte Ressource befinden. Der CMEK, der zum Verschlüsseln einer Ressource in der Regionprojects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
us-central1verwendet wird, muss sich beispielsweise auch in der Regionus-central1befinden.Damit jedes der folgenden Dienstkonten, Compute Engine-Dienst-Agent-Dienstkonto, Cloud Storage-Dienst-Agent-Dienstkonto und Dataproc-Dienst-Agent-Dienstkonto, die erforderlichen Berechtigungen zum Schutz von Ressourcen mithilfe von Cloud KMS-Schlüsseln hat, bitten Sie Ihren Administrator, jedem der folgenden Dienstkonten die Cloud KMS CryptoKey-Verschlüsseler/Entschlüsseler (
roles/cloudkms.cryptoKeyEncrypterDecrypter) IAM-Rolle für Ihr Projekt zu gewähren: Compute Engine-Dienst-Agent-Dienstkonto, Cloud Storage-Dienst-Agent-Dienstkonto und Dataproc-Dienst-Agent-Dienstkonto.Beispiel für die Zuweisung der Rolle „Cloud KMS CryptoKey-Verschlüsseler/Entschlüsseler“ zum Dienstkonto des Dataproc-Dienst-Agents mit der Google Cloud CLI:
gcloud projects add-iam-policy-binding KMS_PROJECT_ID \ --member serviceAccount:service-PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
Ersetzen Sie Folgendes:
KMS_PROJECT_ID: die ID Ihres Google Cloud -Projekts, das den Cloud KMS-Schlüssel enthält.PROJECT_NUMBER: Die Projektnummer (nicht die Projekt-ID) Ihres Google Cloud Projekts, in dem Dataproc-Ressourcen ausgeführt werden.Wenn die Dataproc Service Agent-Rolle nicht an das Dataproc Service Agent-Dienstkonto angehängt ist, fügen Sie die Berechtigung
serviceusage.services.useeiner benutzerdefinierten Rolle hinzu, die an das Dataproc Service Agent-Dienstkonto angehängt ist.
Cluster mit CMEK erstellen
Übergeben Sie die Ressourcen-ID Ihres Schlüssels, wenn Sie den Dataproc-Cluster erstellen.
gcloud-CLI
- Wenn Sie Daten auf nichtflüchtigen Speichern von Clustern mit Ihrem Schlüssel verschlüsseln möchten, übergeben Sie beim Erstellen des Clusters die Ressourcen-ID Ihres Schlüssels an das Flag
--gce-pd-kms-key.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 ...Sie können die Schlüsseleinstellung im Befehlszeilentool
gcloudansehen.gcloud dataproc clusters describe CLUSTER_NAME \ --region=REGIONSnippet der Befehlsausgabe:
... configBucket: dataproc- ... encryptionConfig: gcePdKmsKeyName: projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name ... - Wenn Sie Daten auf nichtflüchtigen Speichern von Clustern und Jobargumentdaten mit Ihrem Schlüssel verschlüsseln möchten, übergeben Sie beim Erstellen des Clusters die Ressourcen-ID des Schlüssels an das Flag
--kms-key. Eine Liste der Jobtypen und Argumente, die mit dem Flag `--kms-key` verschlüsselt werden, finden Sie unter [Cluster.EncryptionConfig.kmsKey](/dataproc/docs/reference/rest/v1/ClusterConfig#EncryptionConfig.FIELDS.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 ...Sie können die Schlüsseleinstellungen mit dem gcloud CLI-Befehl
dataproc clusters describeüberprüfen. Die Schlüsselressourcen-ID wird fürgcePdKmsKeyNameundkmsKeyfestgelegt, damit Ihr Schlüssel für die Verschlüsselung von nichtflüchtigen Speichern für Cluster und Jobargumentdaten verwendet wird.gcloud dataproc clusters describe CLUSTER_NAME \ --region=REGIONSnippet der Befehlsausgabe:
... 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 ... - So verschlüsseln Sie Clustermetadaten, Jobtreiber und andere Ausgabedaten, die in Ihren Dataproc-Staging-Bucket in Cloud Storage geschrieben werden:
- Eigenen Bucket mit CMEK erstellen Verwenden Sie beim Hinzufügen des Schlüssels zum Bucket einen Schlüssel, den Sie in Schritt 1 erstellt haben.
- Übergeben Sie den Bucket-Namen an das Flag
--bucket, wenn Sie den Cluster erstellen.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --bucket=CMEK_BUCKET_NAME \ other arguments ...Sie können CMEK-fähige Buckets auch an den Befehl `gcloud dataproc jobs submit` übergeben, wenn Ihr Job Bucket-Argumente annimmt. Das folgende Beispiel `cmek-bucket` zeigt, wie das geht:
gcloud dataproc jobs submit pyspark gs://cmek-bucket/wordcount.py \ --region=region \ --cluster=cluster-name \ -- gs://cmek-bucket/shakespeare.txt gs://cmek-bucket/counts
REST API
- Wenn Sie die Daten des nichtflüchtigen Speichers von Cluster-VMs mit Ihrem Schlüssel verschlüsseln möchten, fügen Sie das Feld ClusterConfig.EncryptionConfig.gcePdKmsKeyName als Teil einer cluster.create-Anfrage hinzu.
Sie können die Schlüsseleinstellung mit dem gcloud CLI-Befehl
dataproc clusters describeprüfen.gcloud dataproc clusters describe CLUSTER_NAME \ --region=REGIONSnippet der Befehlsausgabe:
... configBucket: dataproc- ... encryptionConfig: gcePdKmsKeyName: projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME ... - Wenn Sie die Daten auf dem nichtflüchtigen Speicher der Cluster-VM und die Jobargumentdaten mit Ihrem Schlüssel verschlüsseln möchten, fügen Sie das Feld
Cluster.EncryptionConfig.kmsKeyals Teil einer cluster.create-Anfrage ein. Eine Liste der Jobtypen und Argumente, die mit dem Feld--kms-keyverschlüsselt werden, finden Sie unter Cluster.EncryptionConfig.kmsKey.Sie können die Schlüsseleinstellungen mit dem gcloud CLI-Befehl
dataproc clusters describeüberprüfen. Die Schlüsselressourcen-ID wird fürgcePdKmsKeyNameundkmsKeyfestgelegt, damit Ihr Schlüssel für die Verschlüsselung von nichtflüchtigen Speichern für Cluster und Jobargumentdaten verwendet wird.gcloud dataproc clusters describe CLUSTER_NAME \ --region=REGIONSnippet der Befehlsausgabe:
... 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 ... - So verschlüsseln Sie Clustermetadaten, Jobtreiber und andere Ausgabedaten, die in Ihren Dataproc-Staging-Bucket in Cloud Storage geschrieben werden:
- Eigenen Bucket mit CMEK erstellen Verwenden Sie beim Hinzufügen des Schlüssels zum Bucket einen Schlüssel, den Sie in Schritt 1 erstellt haben.
- Übergeben Sie den Bucket-Namen als Teil einer cluster.create-Anfrage an das Feld ClusterConfig.configBucket.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --bucket=CMEK_BUCKET_NAME \ other arguments ...Sie können CMEK-fähige Buckets auch an den Befehl `gcloud dataproc jobs submit` übergeben, wenn Ihr Job Bucket-Argumente annimmt. Das folgende Beispiel `cmek-bucket` zeigt, wie das geht:
gcloud dataproc jobs submit pyspark gs://cmek-bucket/wordcount.py \ --region=region \ --cluster=cluster-name \ -- gs://cmek-bucket/shakespeare.txt gs://cmek-bucket/counts
CMEK mit Workflow-Vorlagendaten verwenden
Dataproc-Workflowvorlagen-Jobargumentdaten, z. B. der Abfragestring eines Spark SQL-Jobs, können mit CMEK verschlüsselt werden. Führen Sie die Schritte 1, 2 und 3 in diesem Abschnitt aus, um CMEK mit Ihrer Dataproc-Workflowvorlage zu verwenden. Eine Liste der Workflowvorlagen-Jobtypen und ‑Argumente, die mit CMEK verschlüsselt werden, wenn dieses Feature aktiviert ist, finden Sie unter WorkflowTemplate.EncryptionConfig.kmsKey.
- Erstellen Sie einen Schlüssel mit Cloud KMS.
Der Ressourcenname des Schlüssels, den Sie in den nächsten Schritten verwenden, wird so erstellt:
projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name
So ermöglichen Sie den Dataproc-Dienstkonten die Verwendung Ihres Schlüssels:
Weisen Sie dem Dataproc-Dienst-Agent-Dienstkonto die Cloud KMS-Rolle
CryptoKey Encrypter/Decrypterzu. Sie können die gcloud CLI verwenden, um die Rolle zuzuweisen:gcloud projects add-iam-policy-binding KMS_PROJECT_ID \ --member serviceAccount:service-PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
Ersetzen Sie Folgendes:
KMS_PROJECT_ID: die ID Ihres Google Cloud -Projekts, in dem Cloud KMS ausgeführt wird. Dieses Projekt kann auch das Projekt sein, in dem Dataproc-Ressourcen ausgeführt werden.
PROJECT_NUMBER: Die Projektnummer (nicht die Projekt-ID) Ihres Google Cloud Projekts, in dem Dataproc-Ressourcen ausgeführt werden.
Aktivieren Sie die Cloud KMS API für das Projekt, in dem Dataproc-Ressourcen ausgeführt werden.
Wenn die Dataproc Service Agent-Rolle nicht an das Dataproc Service Agent-Dienstkonto angehängt ist, fügen Sie der benutzerdefinierten Rolle, die an das Dataproc Service Agent-Dienstkonto angehängt ist, die Berechtigung
serviceusage.services.usehinzu. Wenn die Dataproc Service Agent-Rolle dem Dataproc Service Agent-Dienstkonto zugewiesen ist, können Sie diesen Schritt überspringen.
Sie können mit der gcloud CLI oder der Dataproc API den in Schritt 1 erstellten Schlüssel für einen Workflow festlegen. Sobald der Schlüssel für einen Workflow festgelegt ist, werden alle Workflow-Jobargumente und ‑Abfragen mit dem Schlüssel für alle in WorkflowTemplate.EncryptionConfig.kmsKey aufgeführten Jobtypen und Argumente verschlüsselt.
gcloud-CLI
Übergeben Sie die Ressourcen-ID Ihres Schlüssels an das Flag
--kms-key, wenn Sie die Workflowvorlage mit dem Befehl gcloud dataproc workflow-templates create erstellen.Beispiel:
Sie können die Schlüsseleinstellung im Befehlszeilentoolgcloud 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 ...
gcloudansehen.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 ...
REST API
Verwenden Sie WorkflowTemplate.EncryptionConfig.kmsKey als Teil einer workflowTemplates.create-Anfrage.
Sie können die Schlüsseleinstellung mit der Anfrage workflowTemplates.get prüfen. Der zurückgegebene JSON-Antwortcode enthält
kmsKey:... "id": "my-template-name", "encryptionConfig": { "kmsKey": "projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name" },
Cloud External Key Manager
Mit dem Cloud External Key Manager (Cloud 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 zur Verwendung von Cloud EKM in Dataproc ausführen, sind dieselben wie die zum Einrichten von CMEK-Schlüsseln, mit dem folgenden Unterschied: Ihr 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 Cloud EKM und dem externen System fehlschlagen. Wenn Sie die REST API oder die Google Cloud -Konsole verwenden, werden Fehler in Cloud Logging protokolliert. Sie können die Fehler des fehlgeschlagenen Clusters auf dem Tab Log ansehen prüfen.