Dokumen ini menunjukkan cara membuat koneksi aman ke Spanner Omni dengan mengonfigurasi library klien Go. Anda membuat koneksi ini dengan menetapkan opsi klien saat membuat klien administratif database atau klien database.
Library klien Go mendukung koneksi teks biasa, TLS, dan mTLS. Untuk semua
jenis koneksi, sertakan option.WithoutAuthentication() untuk mencegah
transmisi Google Cloud kredensial ke
endpoint Spanner Omni.
Untuk mengetahui informasi selengkapnya, lihat Memulai Spanner di Go dalam dokumentasi Spanner.
Sebelum memulai
Untuk menghubungkan library klien Go ke Spanner Omni, Anda harus menggunakan konfigurasi IsExperimentalHost: true. Opsi ini menentukan bahwa library terhubung ke deployment Spanner Omni lokal atau on-premise, bukan versi Spanner yang dikelola.
Untuk menggunakan opsi konfigurasi ini, lingkungan Anda harus memenuhi persyaratan berikut:
Library klien Go harus versi v1.91.0 atau yang lebih baru.
Rilis Go harus versi 1.25 atau yang lebih baru.
Komunikasi teks biasa
Untuk membuat komunikasi teks biasa, jalankan kode berikut:
import ("google.golang.org/grpc/credentials/insecure")
adminClient, err := database.NewDatabaseAdminClient(ctx,
option.WithEndpoint(OMNI_ENDPOINT),
option.WithoutAuthentication(),
option.WithGRPCDialOption(grpc.WithTransportCredentials(insecure.NewCredentials())),
)
clientConfig := ClientConfig{
IsExperimentalHost: true,
}
databaseClient, err := spanner.NewClientWithConfig(ctx, db,
clientConfig,
option.WithEndpoint(OMNI_ENDPOINT),
option.WithoutAuthentication(),
option.WithGRPCDialOption(grpc.WithTransportCredentials(insecure.NewCredentials())),
)
Koneksi TLS
Untuk membuat koneksi TLS, jalankan kode berikut:
func createClients(ca_certificate, database, omniEndpoint string){
// TLS CA cert configuration
caCert, err := os.ReadFile(ca_certificate)
capool := x509.NewCertPool()
capool.AppendCertsFromPEM(caCert)
creds := credentials.NewTLS(&tls.Config{RootCAs: capool})
adminClient, err := database.NewDatabaseAdminClient(ctx,
option.WithEndpoint(omniEndpoint),
option.WithGRPCDialOption(grpc.WithTransportCredentials(creds)),
option.WithoutAuthentication(),
)
clientConfig := ClientConfig{
IsExperimentalHost: true,
}
databaseClient, err := spanner.NewClientWithConfig(ctx, db,
clientConfig,
option.WithEndpoint(omniEndpoint),
option.WithoutAuthentication(),
option.WithGRPCDialOption(grpc.WithTransportCredentials(creds)),
)
}
Koneksi mTLS
Untuk membuat koneksi mTLS, jalankan kode berikut:
func createClients(ca_certificate, client_certificate, client_key, database, omniEndpoint string){
// mTLS cred configuration
caCert, err := os.ReadFile(ca_certificate)
capool := x509.NewCertPool()
capool.AppendCertsFromPEM(caCert)
cert := tls.LoadX509KeyPair(client_certificate, client_key)
creds := credentials.NewTLS(&tls.Config{Certificates: []tls.Certificate{cert}, RootCAs: capool})
adminClient, err := database.NewDatabaseAdminClient(ctx,
option.WithEndpoint(omniEndpoint),
option.WithoutAuthentication(),
option.WithGRPCDialOption(grpc.WithTransportCredentials(creds))
)
clientConfig := ClientConfig{
IsExperimentalHost: true,
}
databaseClient, err := spanner.NewClientWithConfig(ctx, db,
clientConfig,
option.WithEndpoint(omniEndpoint),
option.WithoutAuthentication(),
option.WithGRPCDialOption(grpc.WithTransportCredentials(creds)),
)
}