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

Spanner Omni et Spanner utilisent la bibliothèque cliente Go de manière similaire. Ce document explique comment établir des connexions sécurisées à Spanner Omni en configurant la bibliothèque cliente Go. Vous établissez ces connexions en configurant spanner.ClientConfig lorsque vous créez un client administratif ou un client de base de données.

La bibliothèque cliente Go est compatible avec les connexions en texte brut, TLS, TLS avec identifiants et mTLS.

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

Avant de commencer

Pour utiliser la bibliothèque cliente Go avec Spanner Omni, utilisez la bibliothèque cliente Go version v1.94.0 ou ultérieure et Go version 1.25 ou ultérieure.

Pour ajouter le module Spanner Go à votre fichier go.mod, exécutez la commande suivante :

go get cloud.google.com/go/spanner@v1.94.0

Configurer l'objet ClientConfig

Pour utiliser la bibliothèque cliente Go afin de créer un Client ou un DatabaseAdminClient, configurez l'objet ClientConfig en spécifiant Type: spanner.OMNI et fournissez le point de terminaison à l'aide de option.WithEndpoint().

Les exemples suivants montrent comment configurer l'objet ClientConfig pour chaque configuration de sécurité compatible :

Texte brut

Pour établir une connexion en texte brut, définissez UsePlainText sur true dans spanner.ClientConfig :

clientConfig := spanner.ClientConfig{
  Type:         spanner.OMNI,
  UsePlainText: true,
}

adminClient, err := database.NewDatabaseAdminClientWithConfig(ctx, clientConfig,
  option.WithEndpoint("ENDPOINT"),
)
if err != nil {
  // Handle error.
}
defer adminClient.Close()

databaseClient, err := spanner.NewClientWithConfig(ctx, "DATABASE_NAME", clientConfig,
  option.WithEndpoint("ENDPOINT"),
)
if err != nil {
  // Handle error.
}
defer databaseClient.Close()

TLS

Pour établir une connexion TLS, spécifiez le chemin d'accès à votre certificat CA à l'aide de CaCertificateFile :

clientConfig := spanner.ClientConfig{
  Type:              spanner.OMNI,
  CaCertificateFile: "PATH_TO_CA_CERT",
}

adminClient, err := database.NewDatabaseAdminClientWithConfig(ctx, clientConfig,
  option.WithEndpoint("ENDPOINT"),
)
if err != nil {
  // Handle error.
}
defer adminClient.Close()

databaseClient, err := spanner.NewClientWithConfig(ctx, "DATABASE_NAME", clientConfig,
  option.WithEndpoint("ENDPOINT"),
)
if err != nil {
  // Handle error.
}
defer databaseClient.Close()

TLS avec identifiants

Pour établir une connexion TLS avec authentification par nom d'utilisateur et mot de passe, spécifiez CaCertificateFile, Username et Password :

clientConfig := spanner.ClientConfig{
  Type:              spanner.OMNI,
  CaCertificateFile: "PATH_TO_CA_CERT",
  Username:          "USERNAME",
  Password:          []byte("PASSWORD"),
}

adminClient, err := database.NewDatabaseAdminClientWithConfig(ctx, clientConfig,
  option.WithEndpoint("ENDPOINT"),
)
if err != nil {
  // Handle error.
}
defer adminClient.Close()

databaseClient, err := spanner.NewClientWithConfig(ctx, "DATABASE_NAME", clientConfig,
  option.WithEndpoint("ENDPOINT"),
)
if err != nil {
  // Handle error.
}
defer databaseClient.Close()

mTLS

Pour établir une connexion TLS mutuelle (mTLS), spécifiez CaCertificateFile, ClientCertificateFile et ClientKeyFile :

clientConfig := spanner.ClientConfig{
  Type:                  spanner.OMNI,
  CaCertificateFile:     "PATH_TO_CA_CERT",
  ClientCertificateFile: "PATH_TO_CLIENT_CERT",
  ClientKeyFile:         "PATH_TO_CLIENT_KEY",
}

adminClient, err := database.NewDatabaseAdminClientWithConfig(ctx, clientConfig,
  option.WithEndpoint("ENDPOINT"),
)
if err != nil {
  // Handle error.
}
defer adminClient.Close()

databaseClient, err := spanner.NewClientWithConfig(ctx, "DATABASE_NAME", clientConfig,
  option.WithEndpoint("ENDPOINT"),
)
if err != nil {
  // Handle error.
}
defer databaseClient.Close()

Remplacez les éléments suivants :

  • PATH_TO_CA_CERT : chemin d'accès à votre fichier de certificat CA.

  • PATH_TO_CLIENT_CERT : chemin d'accès à votre fichier de certificat client.

  • PATH_TO_CLIENT_KEY : chemin d'accès au fichier de clé client.