Ce document explique comment établir des connexions sécurisées à Spanner Omni en configurant la bibliothèque cliente Go. Pour établir ces connexions, vous devez définir des options client lorsque vous créez un client d'administration de base de données ou un client de base de données.
La bibliothèque cliente Go est compatible avec les connexions en texte brut, TLS et mTLS. Pour tous les
types de connexion, incluez option.WithoutAuthentication() afin d'empêcher la
transmission Google Cloud d'identifiants à un
point de terminaison Spanner Omni.
Pour en savoir plus, consultez Premiers pas avec Spanner en Go dans la documentation Spanner.
Avant de commencer
Pour connecter la bibliothèque cliente Go à Spanner Omni, vous devez utiliser la configuration IsExperimentalHost: true. Cette option spécifie que la bibliothèque se connecte à un déploiement local ou sur site de Spanner Omni plutôt qu'à la version gérée de Spanner.
Pour utiliser cette option de configuration, votre environnement doit répondre aux exigences suivantes :
La bibliothèque cliente Go doit être la version v1.91.0 ou ultérieure.
La version Go doit être la version 1.25 ou ultérieure.
Communication en texte brut
Pour établir une communication en texte brut, exécutez le code suivant :
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())),
)
Connexion TLS
Pour établir une connexion TLS, exécutez le code suivant :
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)),
)
}
Connexion mTLS
Pour établir une connexion mTLS, exécutez le code suivant :
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)),
)
}