Esta página explica como preparar ficheiros em VMs de trabalho do Dataflow para usar certificados SSL com os modelos de Java Database Connectivity (JDBC) fornecidos pela Google. Também pode usar os passos nesta página para preparar ficheiros dinamicamente na VM de trabalho antes do início do processamento.
Prepare ficheiros em VMs trabalhadoras
Com alguns modelos, pode preparar ficheiros em VMs de trabalho do Dataflow através do parâmetro de modelo extraFilesToStage
. Use este parâmetro para
preparar ficheiros dinamicamente na VM de trabalho antes do início do processamento de dados.
Pode usar este parâmetro nos seguintes casos:
- Armazene ficheiros de certificado e chave em cada trabalhador para ligações SSL.
- Uma vez que o Dataflow não inclui suporte integrado para o Secret Manager, use este parâmetro para configurar modelos para armazenar e aceder a segredos do Secret Manager.
Este parâmetro está disponível em alguns modelos, mas não em todos. Para ver se o parâmetro está disponível com o modelo que está a usar, consulte a tabela de parâmetros do modelo para o seu modelo nos modelos de streaming do Dataflow fornecidos pela Google ou nos modelos de processamento em lote do Dataflow fornecidos pela Google.
Quando usa este parâmetro, os caminhos do Cloud Storage separados por vírgulas ou os segredos do Secret Manager são transmitidos ao trabalhador e guardados no diretório /extra_files
em cada trabalhador.
Quando os ficheiros são guardados no diretório /extra_files
, outros parâmetros podem fazer referência aos mesmos. Para referenciar os ficheiros, nas propriedades de configuração, especifique os caminhos dos ficheiros relativos ao diretório /extra_files
.
Todos os ficheiros do Cloud Storage transmitidos através deste parâmetro são armazenados no diretório /extra_files
com o mesmo nome de ficheiro.
Os segredos do Secret Manager são armazenados no diretório /extra_files
com o nome do segredo usado como nome do ficheiro.
Por exemplo, quando define extraFilesToStage
para o seguinte caminho, os ficheiros são armazenados no diretório /extra_files
de cada trabalhador com os nomes de ficheiros file.txt
e SECRET_ID.
gs://BUCKET_NAME/file.txt,projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID
Configure certificados SSL
Com modelos que usam JDBC para ler ou escrever, pode usar o parâmetro de modelo extraFilesToStage
para preparar certificados como ficheiros locais em VMs de trabalho e, em seguida, referenciar o nome do ficheiro local no URL de ligação JDBC ou nas propriedades de ligação.
As ligações SSL JDBC variam consoante a base de dados. Esta secção fornece exemplos para bases de dados PostgreSQL e MySQL.
Se precisar de definir propriedades do sistema Java, use JvmInitializer
.
Pode usar JvmInitializer
para executar uma inicialização única em todos os trabalhadores Java do Dataflow.
PostgreSQL
Para ligações SSL em bases de dados PostgreSQL, estão disponíveis os seguintes parâmetros: ssl
, sslmode
, sslcert
, sslkey
e sslrootcert
.
- Para especificar que a ligação deve usar SSL e que modo usar, use os parâmetros
ssl
esslmode
. - Para a validação do cliente, use os parâmetros
sslcert
esslkey
. - Para a validação do servidor, use o parâmetro
sslrootcert
.
Quando se liga ao PostgreSQL, defina os seguintes parâmetros:
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...
Para ver parâmetros de configuração JDBC do PostgreSQL adicionais e mais detalhes acerca dos parâmetros, consulte Parâmetros de associação na documentação JDBC PostgreSQL.
MySQL
Para ligações SSL em bases de dados MySQL, os seguintes parâmetros estão
disponíveis: sslmode
, trustCertificateKeyStoreUrl
e
clientCertificateKeyStoreUrl
.
- Para especificar que a ligação deve usar SSL e que modo usar, use o parâmetro
sslmode
. - Para a validação do cliente, use o parâmetro
clientCertificateKeyStoreUrl
. - Para a validação do servidor, use o parâmetro
trustCertificateKeyStoreUrl
.
Quando se liga ao MySQL, defina os seguintes parâmetros:
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...
Para parâmetros de configuração JDBC do MySQL adicionais e mais detalhes sobre os parâmetros, consulte a página conetores de segurança na documentação do MySQL.
Exemplo de ligação SSL
O exemplo seguinte demonstra como executar o modelo Pub/Sub para JDBC com ligações SSL numa base de dados 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"