Apache Beam adalah model open source terpadu untuk menentukan pipeline pemrosesan paralel data batch dan streaming. Dokumen ini menjelaskan cara menggunakan konektor SpannerIO dalam pipeline Apache Beam untuk membaca dari atau menulis ke database Spanner Omni.
Sebelum memulai
Untuk menghubungkan SpannerIO ke Spanner Omni, pastikan Anda memenuhi persyaratan berikut:
Lakukan inisialisasi database dalam lingkungan Spanner Omni Anda.
Jika Anda menggunakan enkripsi, pastikan Anda menggunakan Apache Beam versi yang kompatibel:
- Untuk enkripsi TLS, versi 2.69.0 atau yang lebih baru.
- Untuk enkripsi mutual TLS (mTLS), versi 2.75.0 atau yang lebih baru.
Siapkan kredensial autentikasi untuk lingkungan Anda.
Mengonfigurasi SpannerIO untuk terhubung ke Spanner Omni
Untuk menghubungkan SpannerIO ke Spanner Omni, konfigurasi SpannerConfig
dengan detail database dan parameter koneksi Anda.
Untuk mengonfigurasi koneksi, pilih salah satu mode koneksi berikut:
- Terhubung menggunakan komunikasi teks biasa
- Menghubungkan menggunakan enkripsi TLS
- Menghubungkan menggunakan enkripsi mTLS
Menghubungkan menggunakan komunikasi teks biasa
Untuk membuat koneksi teks biasa, tentukan endpoint Spanner Omni, aktifkan dukungan host eksperimental dengan metode withExperimentalHost(), dan konfigurasi pipeline dengan metode withUsingPlainTextChannel().
Contoh berikut menunjukkan cara mengonfigurasi koneksi teks biasa:
SpannerConfig spannerConfig =
SpannerConfig.create()
.withDatabaseId("DATABASE_ID")
// Define the Spanner Omni endpoint
.withExperimentalHost("http://ENDPOINT")
// Use a plain-text connection
.withUsingPlainTextChannel(true);
Ganti kode berikut:
DATABASE_ID: ID database Spanner Omni Anda, misalnya,test-db.ENDPOINT: endpoint instance Spanner Omni Anda, misalnya,localhost:15000.
Menghubungkan menggunakan enkripsi
Untuk melindungi traffic database dan memastikan komunikasi yang aman antara Apache Beam dan Spanner Omni, Anda dapat terhubung menggunakan enkripsi TLS atau mTLS. Menggunakan enkripsi membantu menjaga kerahasiaan kredensial dan data Anda.
Menggunakan enkripsi TLS
Untuk melindungi traffic database antara Apache Beam dan Spanner Omni menggunakan enkripsi TLS, Anda tidak perlu menentukan properti kredensial di SpannerConfig. Sebagai gantinya, konfigurasi truststore Java dengan sertifikat CA Omni Spanner, lalu konfigurasi SpannerConfig untuk menggunakan endpoint TLS yang aman.
Langkah 1: Konfigurasi truststore Java
Untuk mengamankan komunikasi, Anda harus mengimpor sertifikat CA yang dibuat oleh Spanner Omni ke truststore Java. Gunakan salah satu opsi berikut:
Truststore Java default
Tambahkan sertifikat CA yang dihasilkan oleh Spanner Omni ke truststore Java standar dengan menjalankan perintah berikut:
sudo keytool -import -trustcacerts \
-file ~/.spanner/certs/ca.crt \
-alias spanner-ca \
-keystore $JAVA_HOME/lib/security/cacerts
Truststore kustom
Untuk memastikan bahwa pipeline Anda tetap dapat terhubung ke database atau layanan lain yang menggunakan otoritas sertifikat (CA) standar, buat truststore kustom:
Buat truststore kustom dengan menyalin truststore Java yang ada:
cp $JAVA_HOME/lib/security/cacerts PATH_TO_CUSTOM_CA_CERTIFICATEImpor sertifikat CA ke truststore kustom Anda:
keytool -import -trustcacerts \ -file ~/.spanner/certs/ca.crt \ -alias spanner-ca \ -keystore PATH_TO_CUSTOM_CA_CERTIFICATETeruskan penyimpanan sertifikat CA kustom saat Anda menjalankan pipeline:
java -Djavax.net.ssl.trustStore=PATH_TO_CUSTOM_CA_CERTIFICATE \ -Djavax.net.ssl.trustStorePassword=changeit \ -jar PIPELINE_NAME.jar
Ganti kode berikut:
PATH_TO_CUSTOM_CA_CERTIFICATE: jalur ke penyimpanan sertifikat CA kustom Anda.PIPELINE_NAME: nama pipeline Apache Beam Anda.
Langkah 2: Konfigurasikan SpannerConfig
Untuk mengonfigurasi SpannerConfig agar menggunakan koneksi TLS yang aman, tambahkan kode berikut ke pipeline Anda:
SpannerConfig spannerConfig =
SpannerConfig.create()
.withDatabaseId("DATABASE_ID")
// Define the secure Spanner Omni endpoint
.withExperimentalHost("https://ENDPOINT");
Ganti kode berikut:
DATABASE_ID: ID database Spanner Omni Anda, misalnya,test-db.ENDPOINT: endpoint instance Spanner Omni Anda, misalnya,localhost:15000.
Menggunakan enkripsi mTLS
Untuk membuat koneksi TLS dua arah (mTLS) menggunakan Apache Beam, Anda harus mengonfigurasi truststore Java dengan sertifikat CA, membuat atau mengonversi kunci pribadi klien ke format PKCS#8, lalu mengonfigurasi SpannerConfig dengan jalur sertifikat dan kunci klien.
Langkah 1: Konfigurasi truststore Java
Konfigurasi truststore Java dengan sertifikat CA Omni Spanner seperti yang dijelaskan di Langkah 1: Mengonfigurasi truststore Java sebelumnya dalam dokumen ini.
Langkah 2: Konversi atau buat kunci pribadi klien
Untuk terhubung menggunakan mTLS, pastikan kunci pribadi klien Anda dalam format PKCS#8. Gunakan salah satu opsi berikut:
openssl
Untuk mengonversi kunci klien yang dihasilkan oleh Spanner Omni ke format yang kompatibel dengan Java, jalankan perintah berikut:
openssl pkcs8 -topk8 \
-in ~/.spanner/certs/client.key \
-out ~/.spanner/certs/java-client.key \
-nocrypt
CLI Spanner Omni
Buat kunci langsung dalam format PKCS#8 saat membuat sertifikat klien dengan menggunakan Spanner Omni CLI dengan flag --generate-pkcs8-key.
Untuk membuat sertifikat klien dan kunci pribadi klien dalam format PKCS#8, jalankan perintah berikut:
spanner certificates create-client CLIENT_NAME \
--ca-certificate-directory=PATH_TO_CA_CERTIFICATES \
--ca-private-key-directory=PATH_TO_PRIVATE_KEYS \
--output-directory=PATH_TO_CERTIFICATES \
--generate-pkcs8-key
Ganti kode berikut:
CLIENT_NAME: nama klien untuk membuat sertifikat dan kunci pribadi.PATH_TO_CA_CERTIFICATES: jalur ke direktori yang berisi sertifikat CA.PATH_TO_PRIVATE_KEYS: jalur ke direktori yang berisi kunci pribadi CA.PATH_TO_CERTIFICATES: jalur ke direktori tempat sertifikat klien dan kunci pribadi disimpan.
Langkah 3: Konfigurasikan SpannerConfig
Konfigurasi SpannerConfig dalam kode pipeline Anda dengan sertifikat klien
dan kunci pribadi klien:
SpannerConfig spannerConfig =
SpannerConfig.create()
.withDatabaseId("DATABASE_ID")
// Define the secure Spanner Omni endpoint
.withExperimentalHost("https://ENDPOINT")
// Specify the paths to the client certificate and private key
.withClientCert(
"PATH_TO_CLIENT_CERT",
"PATH_TO_CLIENT_CERT_KEY");
Ganti kode berikut:
DATABASE_ID: ID database Spanner Omni Anda, misalnya,test-db.ENDPOINT: endpoint instance Spanner Omni Anda, misalnya,localhost:15000.PATH_TO_CLIENT_CERT: jalur ke file sertifikat klien Anda.PATH_TO_CLIENT_CERT_KEY: jalur ke file kunci pribadi klien Anda.
Mengonfigurasi token autentikasi
Token autentikasi tidak direkomendasikan untuk digunakan klien karena token yang dibuat oleh Spanner Omni akan habis masa berlakunya dan memerlukan perpanjangan manual dengan Spanner Omni CLI. Untuk menggunakan token autentikasi dengan penyiapan TLS atau mTLS untuk endpoint Spanner Omni, tetapkan variabel lingkungan SPANNER_EXPERIMENTAL_HOST_AUTH_TOKEN ke nilai token autentikasi yang dihasilkan oleh Spanner Omni CLI. Biarkan variabel ini tidak disetel untuk koneksi yang tidak memerlukan kredensial.