Usa i certificati SSL con i modelli

Questa pagina spiega come posizionare temporaneamente i file sulle VM worker Dataflow per utilizzare i certificati SSL con i modelli JDBC (Java Database Connectivity) forniti da Google. Puoi anche seguire i passaggi descritti in questa pagina per inserire dinamicamente i file sulla VM worker prima dell'inizio dell'elaborazione.

File di fase sulle VM worker

Con alcuni modelli, puoi gestire temporaneamente i file sulle VM worker Dataflow utilizzando il parametro del modello extraFilesToStage. Utilizza questo parametro per archiviare in modo dinamico i file sulla VM worker prima dell'inizio dell'elaborazione dei dati. Puoi utilizzare questo parametro nei seguenti casi:

  • Archivia i file del certificato e della chiave su ciascun worker per le connessioni SSL.
  • Poiché Dataflow non include il supporto integrato per Secret Manager, utilizza questo parametro per configurare i modelli in cui archiviare i secret di Secret Manager e accedervi.

Questo parametro è disponibile solo in alcuni modelli. Per verificare se il parametro è disponibile con il modello in uso, consulta la tabella dei parametri del modello in Modelli di flusso di Dataflow forniti da Google o Modelli batch di Dataflow forniti da Google.

Quando utilizzi questo parametro, i percorsi Cloud Storage o i secret di Secret Manager separati da virgole vengono passati al worker e salvati nella directory /extra_files per ogni worker. Quando i file vengono salvati nella directory /extra_files, altri parametri possono fare riferimento. Per fare riferimento ai file, nelle proprietà di configurazione, specifica i percorsi dei file relativi alla directory /extra_files.

Tutti i file Cloud Storage passati utilizzando questo parametro vengono archiviati nella directory /extra_files con lo stesso nome file. I secret di Secret Manager vengono archiviati nella directory /extra_files con il nome del secret utilizzato come nome file.

Ad esempio, se imposti extraFilesToStage sul percorso seguente, i file vengono archiviati nella directory /extra_files di ogni worker con i nomi file.txt e SECRET_ID.

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

Configura i certificati SSL

Con i modelli che utilizzano JDBC per la lettura o la scrittura, puoi usare il parametro del modello extraFilesToStage per inserire i certificati come file locali sulle VM worker e quindi fare riferimento al nome file locale nell'URL di connessione JDBC o nelle proprietà di connessione.

Le connessioni SSL JDBC variano in base al database. Questa sezione fornisce esempi per i database PostgreSQL e MySQL.

Se devi impostare le proprietà di sistema Java, utilizza JvmInitializer. Puoi utilizzare JvmInitializer per eseguire l'inizializzazione una tantum su tutti i worker Java di Dataflow.

PostgreSQL

Per le connessioni SSL nei database PostgreSQL, sono disponibili i seguenti parametri: ssl, sslmode, sslcert, sslkey e sslrootcert.

  • Per specificare che la connessione deve utilizzare SSL e la modalità da utilizzare, usa i parametri ssl e sslmode.
  • Per la convalida del client, utilizza i parametri sslcert e sslkey.
  • Per la convalida del server, utilizza il parametro sslrootcert.

Quando ti connetti a PostgreSQL, imposta i seguenti parametri:

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...

Per ulteriori parametri di configurazione JDBC di PostgreSQL e ulteriori dettagli sui parametri, consulta la sezione Parametri di connessione nella documentazione di PostgreSQL per JDBC.

MySQL

Per le connessioni SSL nei database MySQL, sono disponibili i seguenti parametri: sslmode, trustCertificateKeyStoreUrl e clientCertificateKeyStoreUrl.

  • Per specificare che la connessione deve utilizzare SSL e la modalità da utilizzare, utilizza il parametro sslmode.
  • Per la convalida del client, utilizza il parametro clientCertificateKeyStoreUrl.
  • Per la convalida del server, utilizza il parametro trustCertificateKeyStoreUrl.

Quando ti connetti a MySQL, imposta i seguenti parametri:

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...

Per ulteriori parametri di configurazione JDBC di MySQL e per ulteriori dettagli sui parametri, consulta la pagina connettori di sicurezza nella documentazione di MySQL.

Esempio di connessione SSL

L'esempio seguente mostra come eseguire il modello Pub/Sub a JDBC con connessioni SSL in un database MySQL.

#!/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"