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
esslmode
. - Per la convalida del client, utilizza i parametri
sslcert
esslkey
. - 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"