Library klien Java untuk Spanner berfungsi dengan Spanner Omni dengan cara yang sama seperti saat berfungsi dengan Spanner. Dokumen ini menunjukkan cara membuat koneksi yang aman ke Spanner Omni dengan mengonfigurasi library klien Java. Anda membuat koneksi ini dengan menetapkan opsi klien saat membuat klien administratif database atau klien database.
Library klien Java mendukung koneksi teks biasa, TLS, TLS dengan kredensial, dan mTLS.
Untuk mengetahui informasi selengkapnya, lihat Memulai Spanner di Java dalam dokumentasi Spanner.
Sebelum memulai
Untuk mulai menggunakan Spanner Omni di Java, gunakan library klien Java versi 6.119.0 atau yang lebih baru.
Jika Anda menggunakan Maven tanpa Bill of Materials (BOM), tambahkan kode berikut ke dependensi file pom.xml:
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-spanner</artifactId>
<version>6.119.0</version>
</dependency>
Konfigurasi keamanan
Library klien Java Spanner mendukung empat konfigurasi keamanan, yang menentukan cara komunikasi dienkripsi dan diautentikasi antara klien dan Spanner Omni. Tabel berikut menjelaskan setiap konfigurasi:
| Konfigurasi keamanan | Deskripsi |
|---|---|
| Teks biasa | Komunikasi tidak dienkripsi. |
| TLS | Komunikasi dienkripsi menggunakan Transport Layer Security (TLS). Konfigurasi ini mengharuskan Anda menambahkan sertifikat CA Spanner Omni ke truststore Java, seperti yang dijelaskan dalam Mengonfigurasi truststore Java. |
| TLS dengan kredensial | Komunikasi dienkripsi menggunakan TLS, dan autentikasi dilakukan menggunakan nama pengguna dan sandi. |
| mTLS | Komunikasi dienkripsi menggunakan mutual TLS (mTLS). Konfigurasi ini mengharuskan Anda memberikan sertifikat klien dan kunci pribadi klien. |
Mengonfigurasi truststore Java
Untuk semua jenis koneksi terenkripsi (TLS, TLS dengan kredensial, dan mTLS), Anda harus menambahkan sertifikat CA Spanner Omni ke truststore Java agar klien dapat memverifikasi sertifikat server.
Untuk menambahkan sertifikat CA ke truststore Java default, jalankan perintah berikut:
sudo keytool -import -trustcacerts -file ~/.spanner/certs/ca.crt -alias spanner-ca -keystore $JAVA_HOME/lib/security/cacerts
Atau, Anda dapat menentukan truststore kustom saat menjalankan aplikasi:
Untuk mempertahankan kompatibilitas dengan layanan lain yang menggunakan otoritas sertifikat (CA) standar, salin truststore Java default:
cp $JAVA_HOME/lib/security/cacerts /PATH_TO_CUSTOM_CACERTSImpor sertifikat CA ke truststore kustom Anda:
keytool -import -trustcacerts -file ~/.spanner/certs/ca.crt -alias spanner-ca -keystore /PATH_TO_CUSTOM_CACERTSTentukan truststore kustom menggunakan properti sistem JVM saat Anda menjalankan aplikasi:
java -Djavax.net.ssl.trustStore=/PATH_TO_CUSTOM_CACERTS -Djavax.net.ssl.trustStorePassword=changeit app
Mengonfigurasi objek SpannerOptions
Saat mengonfigurasi objek
SpannerOptions
untuk membuat
DatabaseClient atau
DatabaseAdminClient,
tentukan endpoint Spanner Omni menggunakan setHost() diikuti dengan setType(SpannerOptions.InstanceType.OMNI).
Contoh berikut menunjukkan cara mengonfigurasi objek SpannerOptions untuk setiap konfigurasi keamanan yang didukung:
Teks biasa
Untuk membuat koneksi teks biasa, tentukan endpoint Spanner Omni dengan http:// dan gunakan metode usePlainText():
SpannerOptions options =
SpannerOptions.newBuilder()
.setHost("http://ENDPOINT") // Replace with your Spanner Omni endpoint
.setType(SpannerOptions.InstanceType.OMNI)
.usePlainText()
.build();
Spanner spanner = options.getService();
TLS
Saat mengonfigurasi objek SpannerOptions untuk koneksi TLS, Anda tidak perlu menentukan kredensial nama pengguna dan sandi. Tentukan endpoint Spanner Omni menggunakan https://:
SpannerOptions options =
SpannerOptions.newBuilder()
.setHost("https://ENDPOINT") // Replace with your Spanner Omni endpoint
.setType(SpannerOptions.InstanceType.OMNI)
.build();
Spanner spanner = options.getService();
TLS dengan kredensial
Untuk membuat koneksi TLS dengan autentikasi nama pengguna dan sandi, tentukan endpoint Spanner Omni menggunakan https:// dan nama pengguna serta sandi menggunakan metode login():
SpannerOptions options =
SpannerOptions.newBuilder()
.setHost("https://ENDPOINT") // Replace with your Spanner Omni endpoint
.setType(SpannerOptions.InstanceType.OMNI)
.login("USERNAME", "PASSWORD".toCharArray())
.build();
Spanner spanner = options.getService();
mTLS
Untuk menggunakan koneksi mTLS, konversi kunci yang dibuat oleh Spanner Omni ke format yang sesuai dengan Java menggunakan perintah berikut:
openssl pkcs8 -topk8 -in ~/.spanner/certs/client.key -out ~/.spanner/certs/java-client.key -nocrypt
Contoh berikut menunjukkan cara mengonfigurasi objek SpannerOptions untuk menggunakan sertifikat klien:
SpannerOptions options =
SpannerOptions.newBuilder()
.setHost("https://ENDPOINT") // Replace with your Spanner Omni endpoint
.setType(SpannerOptions.InstanceType.OMNI)
.useClientCert(
"PATH_TO_CLIENT_CERT",
"PATH_TO_CLIENT_CERT_KEY")
.build();
Spanner spanner = options.getService();
Mendapatkan klien database
Setelah mengonfigurasi objek SpannerOptions, Anda bisa mendapatkan klien database.
Karena Spanner Omni tidak menggunakan project Google Cloud atau ID instance, tentukan default untuk ID project dan ID instance saat Anda membuat DatabaseId:
DatabaseId dbId = DatabaseId.of("default", "default", "DATABASE_ID");
DatabaseClient client = spanner.getDatabaseClient(dbId);