SSL-Zertifikate mit Vorlagen verwenden

Auf dieser Seite wird erläutert, wie Sie Dateien auf Dataflow-Worker-VMs bereitstellen, um SSL-Zertifikate mit den von Google bereitgestellten JDBC-Vorlagen (Java Database Connectivity) zu verwenden. Sie können die Schritte auf dieser Seite auch verwenden, um Dateien vor der Verarbeitung dynamisch auf der Worker-VM bereitzustellen.

Staging von Dateien auf Worker-VMs

Mit einigen Vorlagen können Sie Dateien auf Dataflow-Worker-VMs mithilfe des Vorlagenparameters extraFilesToStage bereitstellen. Mit diesem Parameter können Sie Dateien vor Beginn der Datenverarbeitung dynamisch auf der Worker-VM bereitstellen. Sie können diesen Parameter in den folgenden Fällen verwenden:

  • Zertifikat- und Schlüsseldateien für SSL-Verbindungen in jedem Worker speichern
  • Da Dataflow keine integrierte Unterstützung für Secret Manager hat, verwenden Sie diesen Parameter, um Vorlagen zum Speichern von und Zugreifen auf Secret Manager-Secrets zu konfigurieren.

Dieser Parameter ist in einigen, aber nicht allen Vorlagen verfügbar. In der Tabelle der Vorlagenparameter für Ihre Vorlage in Von Google bereitgestellte Dataflow-Streaming-Vorlagen oder Von Google bereitgestellte Dataflow-Batch-Vorlagen finden Sie Informationen dazu, ob der Parameter mit der verwendeten Vorlage verfügbar ist.

Wenn Sie diesen Parameter verwenden, werden durch Kommas getrennte Cloud Storage-Pfade oder Secret Manager-Secrets an den Worker übergeben und im Verzeichnis /extra_files auf jedem Worker gespeichert. Wenn die Dateien im Verzeichnis /extra_files gespeichert werden, können andere Parameter darauf verweisen. Wenn Sie auf die Dateien verweisen möchten, geben Sie in den Konfigurationsattributen Dateipfade relativ zum Verzeichnis /extra_files an.

Alle Cloud Storage-Dateien, die mit diesem Parameter übergeben werden, werden im Verzeichnis /extra_files mit demselben Dateinamen gespeichert. Secret Manager-Secrets werden im Verzeichnis /extra_files gespeichert, wobei der Secret-Name als Dateiname verwendet wird.

Wenn Sie beispielsweise extraFilesToStage auf den folgenden Pfad festlegen, werden die Dateien im Verzeichnis /extra_files jedes Workers mit den Dateinamen file.txt und SECRET_ID gespeichert.

gs://BUCKET_NAME/file.txt,projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID

SSL-Zertifikate konfigurieren

Mit Vorlagen, die JDBC zum Lesen oder Schreiben verwenden, können Sie den extraFilesToStage-Vorlagenparameter verwenden, um Zertifikate als lokale Dateien auf Worker-VMs bereitzustellen und dann auf den lokalen Dateinamen in der JDBC-Verbindungs-URL oder in den Verbindungsattributen zu verweisen.

JDBC-SSL-Verbindungen unterscheiden sich je nach Datenbank. In diesem Abschnitt finden Sie Beispiele für PostgreSQL- und MySQL-Datenbanken.

Wenn Sie Java-Systemattribute festlegen müssen, verwenden Sie JvmInitializer. Mit JvmInitializer können Sie eine einmalige Initialisierung aller Dataflow-Java-Worker ausführen.

PostgreSQL

Für SSL-Verbindungen in PostgreSQL-Datenbanken sind die folgenden Parameter verfügbar: ssl, sslmode, sslcert, sslkey und sslrootcert.

  • Verwenden Sie die Parameter ssl und sslmode, um anzugeben, dass die Verbindung SSL verwenden soll und welcher Modus zu verwenden ist.
  • Verwenden Sie für die Clientvalidierung die Parameter sslcert und sslkey.
  • Verwenden Sie für die Servervalidierung den Parameter sslrootcert.

Legen Sie beim Herstellen einer Verbindung zu PostgreSQL die folgenden Parameter fest:

extraFilesToStage=gs://BUCKET_NAME/root_cert.crt,gs://BUCKET_NAME/cert.crt,gs://BUCKET_NAME/key.key

connectionUrl=jdbc:postgresql://HOST/DATABASE?ssl=true&sslrootcert=/extra_files/root_cert.crt&sslcert=/extra_files/cert.crt&sslkey=/extra_files/key.key&OTHER_PARAMETERS...

Weitere PostgreSQL-JDBC-Konfigurationsparameter und weitere Informationen zu den Parametern finden Sie unter Verbindungsparameter in der JDBC-PostgreSQL-Dokumentation.

MySQL

Für SSL-Verbindungen in MySQL-Datenbanken sind die folgenden Parameter verfügbar: sslmode, trustCertificateKeyStoreUrl und clientCertificateKeyStoreUrl.

  • Verwenden Sie den Parameter sslmode, um anzugeben, dass die Verbindung SSL verwenden soll und welcher Modus zu verwenden ist.
  • Verwenden Sie für die Clientvalidierung den Parameter clientCertificateKeyStoreUrl.
  • Verwenden Sie für die Servervalidierung den Parameter trustCertificateKeyStoreUrl.

Legen Sie beim Herstellen einer Verbindung zu MySQL die folgenden Parameter fest:

extraFilesToStage=gs://BUCKET_NAME/truststore.jks,gs://BUCKET_NAME/cert.crt,gs://BUCKET_NAME/keystore.jks

connectionUrl=jdbc:mysql://HOST/DATABASE?sslmode=REQUIRED&trustCertificateKeyStoreUrl=file:/extra_files/truststore.jks&sslcert=file:/extra_files/keystore.jks&OTHER_PARAMETERS...

Weitere MySQL-JDBC-Konfigurationsparameter und weitere Informationen zu den Parametern finden Sie auf der Seite Sicherheitsconnectors in der MySQL-Dokumentation.

Beispiel für eine SSL-Verbindung

Das folgende Beispiel zeigt, wie die Vorlage Pub/Sub zu JDBC mit SSL-Verbindungen in einer MySQL-Datenbank ausgeführt wird.

#!/bin/bash

gcloud config set project PROJECT_ID

echo "Running template ..."
gcloud dataflow flex-template run my-job \
        --template-file-gcs-location="gs://dataflow-templates-REGION_NAME/latest/flex/Pubsub_to_Jdbc" \
--region="REGION" \
--parameters= \
driverClassName="com.mysql.jdbc.Driver",\
connectionUrl="jdbc:mysql://HOST/DATABASE?sslmode=REQUIRED&trustCertificateKeyStoreUrl=file:/extra_files/truststore.jks&sslcert=file:/extra_files/keystore.jks",\
driverJars="gs://BUCKET_NAME/mysql.jar",\
statement="INSERT INTO tableName (column1, column2) VALUES (?,?)",\
inputSubscription="projects/PROJECT_ID/subscriptions/subscription",\
outputDeadletterTopic="projects/PROJECT_ID/topics/topic",\
extraFilesToStage="gs://BUCKET_NAME/truststore.jks,gs://BUCKET_NAME/cert.crt,gs://BUCKET_NAME/keystore.jks"