Menggunakan sertifikat SSL dengan template

Halaman ini menjelaskan cara melakukan staging file di VM pekerja Dataflow untuk menggunakan sertifikat SSL dengan template Java Database Connectivity (JDBC) yang disediakan Google. Anda juga dapat menggunakan langkah-langkah di halaman ini untuk melakukan staging file secara dinamis di VM pekerja sebelum pemrosesan dimulai.

Menyiapkan file di VM pekerja

Dengan beberapa template, Anda dapat melakukan staging file di VM pekerja Dataflow menggunakan parameter template extraFilesToStage. Gunakan parameter ini untuk menyusun file secara dinamis di VM pekerja sebelum pemrosesan data dimulai. Anda dapat menggunakan parameter ini dalam kasus berikut:

  • Menyimpan file sertifikat dan kunci di setiap pekerja untuk koneksi SSL.
  • Karena Dataflow tidak menyertakan dukungan bawaan untuk Secret Manager, gunakan parameter ini untuk mengonfigurasi template guna menyimpan dan mengakses secret Secret Manager.

Parameter ini tersedia di beberapa, tetapi tidak semua template. Untuk melihat apakah parameter tersedia dengan template yang Anda gunakan, lihat tabel parameter template untuk template Anda di template streaming Dataflow yang disediakan Google atau template batch Dataflow yang disediakan Google.

Saat Anda menggunakan parameter ini, jalur Cloud Storage yang dipisahkan koma atau secret Secret Manager akan diteruskan ke pekerja dan disimpan di direktori /extra_files di setiap pekerja. Saat file disimpan di direktori /extra_files, parameter lain dapat mereferensikannya. Untuk mereferensikan file, dalam properti konfigurasi, tentukan jalur file yang relatif terhadap direktori /extra_files.

Semua file Cloud Storage yang diteruskan menggunakan parameter ini disimpan di direktori /extra_files dengan nama file yang sama. Secret Secret Manager disimpan di direktori /extra_files dengan nama secret yang digunakan sebagai nama file.

Misalnya, saat Anda menetapkan extraFilesToStage ke jalur berikut, file akan disimpan di direktori /extra_files setiap pekerja dengan nama file file.txt dan SECRET_ID.

gs://BUCKET_NAME/file.txt,projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID

Mengonfigurasi sertifikat SSL

Dengan template yang menggunakan JDBC untuk membaca atau menulis, Anda dapat menggunakan parameter template extraFilesToStage untuk melakukan staging sertifikat sebagai file lokal di VM pekerja, lalu mereferensikan nama file lokal di URL koneksi JDBC atau di properti koneksi.

Koneksi SSL JDBC berbeda-beda berdasarkan database. Bagian ini memberikan contoh untuk database PostgreSQL dan MySQL.

Jika Anda perlu menetapkan properti sistem Java, gunakan JvmInitializer. Anda dapat menggunakan JvmInitializer untuk melakukan inisialisasi satu kali di semua pekerja Java Dataflow.

PostgreSQL

Untuk koneksi SSL di database PostgreSQL, parameter berikut tersedia: ssl, sslmode, sslcert, sslkey, dan sslrootcert.

  • Untuk menentukan bahwa koneksi harus menggunakan SSL dan mode yang akan digunakan, gunakan parameter ssl dan sslmode.
  • Untuk validasi klien, gunakan parameter sslcert dan sslkey.
  • Untuk validasi server, gunakan parameter sslrootcert.

Saat Anda terhubung ke PostgreSQL, tetapkan parameter berikut:

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

Untuk parameter konfigurasi JDBC PostgreSQL tambahan dan detail selengkapnya tentang parameter tersebut, lihat Parameter Koneksi dalam dokumentasi JDBC PostgreSQL.

MySQL

Untuk koneksi SSL di database MySQL, parameter berikut tersedia: sslmode, trustCertificateKeyStoreUrl, dan clientCertificateKeyStoreUrl.

  • Untuk menentukan bahwa koneksi harus menggunakan SSL dan mode yang akan digunakan, gunakan parameter sslmode.
  • Untuk validasi klien, gunakan parameter clientCertificateKeyStoreUrl.
  • Untuk validasi server, gunakan parameter trustCertificateKeyStoreUrl.

Saat Anda terhubung ke MySQL, tetapkan parameter berikut:

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

Untuk parameter konfigurasi JDBC MySQL tambahan dan detail selengkapnya tentang parameter tersebut, lihat halaman konektor keamanan di dokumentasi MySQL.

Contoh koneksi SSL

Contoh berikut menunjukkan cara menjalankan template Pub/Sub ke JDBC dengan koneksi SSL di 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"