Utilizza i certificati SSL con modelli

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