Utiliser la bibliothèque cliente Go pour se connecter à Spanner Omni

Ce document vous explique comment établir des connexions sécurisées à Spanner Omni en configurant la bibliothèque cliente Go. Vous établissez ces connexions en définissant 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 des identifiants Google Cloud à un point de terminaison Spanner Omni.

Pour en savoir plus, consultez Premiers pas avec Spanner en Go dans la documentation Spanner.

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)),
    )
}