Questo documento mostra come stabilire connessioni sicure a Spanner Omni configurando la libreria client Go. Queste connessioni vengono stabilite impostando le opzioni client quando crei un client di amministrazione del database o un client di database.
La libreria client Go supporta connessioni in testo non crittografato, TLS e mTLS. Per tutti i
tipi di connessione, includi option.WithoutAuthentication() per impedire la
trasmissione delle Google Cloud credenziali a un
endpoint Spanner Omni.
Prima di iniziare
Per connettere la libreria client Go a Spanner Omni, devi utilizzare la configurazione IsExperimentalHost: true. Questa opzione specifica che la libreria si connette a un deployment locale o on-premise di Spanner Omni anziché alla versione gestita di Spanner.
Per utilizzare questa opzione di configurazione, il tuo ambiente deve soddisfare i seguenti requisiti:
La libreria client Go deve essere la versione v1.91.0 o successive.
La release di Go deve essere la versione 1.25 o successive.
Comunicazione in testo non crittografato
Per stabilire una comunicazione in testo non crittografato, esegui il seguente codice:
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())),
)
Connessione TLS
Per stabilire una connessione TLS, esegui il seguente codice:
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)),
)
}
Connessione mTLS
Per stabilire una connessione mTLS, esegui il seguente codice:
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)),
)
}