Questa pagina spiega come eseguire il commit dei file sulle VM di lavoro Dataflow per utilizzare i certificati SSL con i modelli Java Database Connectivity (JDBC) forniti da Google. Puoi anche utilizzare i passaggi descritti in questa pagina per eseguire il commit dei file dinamicamente sulla VM di lavoro prima dell'inizio dell'elaborazione.
Esegui la fase di staging dei file sulle VM worker
Con alcuni modelli, puoi eseguire il commit dei file sulle VM worker Dataflow utilizzando il parametro del modello extraFilesToStage
. Utilizza questo parametro per eseguire il commit dei file in modo dinamico sulla VM worker prima dell'inizio dell'elaborazione dei dati.
Potresti utilizzare questo parametro nei seguenti casi:
- Memorizza i file di certificati e chiavi su ogni worker per le connessioni SSL.
- Poiché Dataflow non include il supporto integrato per Secret Manager, utilizza questo parametro per configurare i modelli per archiviare e accedere ai secret di Secret Manager.
Questo parametro è disponibile in alcuni modelli, ma non in tutti. Per verificare se il parametro è disponibile con il modello in uso, consulta la tabella dei parametri del modello per il tuo modello in Modelli di streaming Dataflow forniti da Google o Modelli batch Dataflow forniti da Google.
Quando utilizzi questo parametro, i percorsi Cloud Storage separati da virgole o i secret di Secret Manager vengono passati al worker e salvati nella directory /extra_files
su ogni worker.
Quando i file vengono salvati nella directory /extra_files
, altri parametri possono farvi 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 memorizzati 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 del file.
Ad esempio, quando imposti extraFilesToStage
sul seguente percorso, i file vengono memorizzati nella directory /extra_files
di ciascun 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 utilizzare il parametro del modello extraFilesToStage
per eseguire il commit dei certificati come file locali sulle VM di lavoro e poi fare riferimento al nome file locale nell'URL della connessione JDBC o nelle proprietà di connessione.
Le connessioni JDBC SSL 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 un'inizializzazione una tantum su tutti i worker Java 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 quale modalità, utilizza 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 altri parametri di configurazione JDBC PostgreSQL e ulteriori dettagli sui parametri, consulta Parametri di connessione nella documentazione di JDBC PostgreSQL.
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 quale modalità, 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 altri parametri di configurazione JDBC di MySQL e ulteriori dettagli sui parametri, consulta la pagina relativa ai connettori di sicurezza nella documentazione di MySQL.
Esempio di connessione SSL
L'esempio seguente mostra come eseguire il modello Pub/Sub to 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"