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
. Usa questo parametro per
i file di stage 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 da 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 che stai utilizzando, consulta la tabella dei parametri del modello in Modelli di flussi di dati Dataflow forniti da Google o modelli batch Dataflow forniti da Google.
Quando utilizzi questo parametro, i percorsi Cloud Storage o i percorsi di Cloud Storage separati da virgole
I secret di Secret Manager vengono passati al worker e salvati
/extra_files
su ogni worker.
Quando i file vengono salvati nella directory /extra_files
, gli 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 segreti di Secret Manager vengono archiviati nella directory /extra_files
con il nome del segreto utilizzato come nome del file.
Ad esempio, se imposti extraFilesToStage
sul percorso seguente, i file vengono
archiviato nella directory /extra_files
di ogni worker con i nomi dei file
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 l'inizializzazione una tantum su tutti i worker Java di Dataflow.
PostgreSQL
Per le connessioni SSL nei database PostgreSQL, i seguenti parametri sono:
disponibili: 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 ulteriori parametri di configurazione JDBC PostgreSQL e altri dettagli su Consulta la sezione Parametri di connessione. nella documentazione JDBC di PostgreSQL.
MySQL
Per le connessioni SSL nei database MySQL, i seguenti parametri sono
disponibili: 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"