Menggunakan library klien Java untuk terhubung ke Spanner Omni

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:

  1. 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_CACERTS
    
  2. Impor sertifikat CA ke truststore kustom Anda:

    keytool -import -trustcacerts -file ~/.spanner/certs/ca.crt -alias spanner-ca -keystore /PATH_TO_CUSTOM_CACERTS
    
  3. Tentukan 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);