Utilizza la libreria client Go per connetterti a Spanner Omni

Spanner Omni e Spanner utilizzano la libreria client Go in modo simile. Questo documento mostra come stabilire connessioni sicure a Spanner Omni configurando la libreria client Go. Queste connessioni vengono stabilite configurando spanner.ClientConfig quando crei un client amministrativo del database o un client di database.

La libreria client Go supporta connessioni in testo non crittografato, TLS, TLS con credenziali e mTLS.

Per saperne di più, consulta Guida introduttiva a Spanner in Go nella documentazione di Spanner.

Prima di iniziare

Per utilizzare la libreria client Go con Spanner Omni, utilizza la libreria client Go versione v1.94.0 o versioni successive e Go versione di release 1.25 o versioni successive.

Per aggiungere il modulo Spanner Go al file go.mod, esegui il comando seguente:

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

Configura l'oggetto ClientConfig

Per utilizzare la libreria client Go per creare un Client o un DatabaseAdminClient, configura l'oggetto ClientConfig specificando Type: spanner.OMNI e fornisci l'endpoint utilizzando option.WithEndpoint().

Gli esempi seguenti mostrano come configurare l'oggetto ClientConfig per ogni configurazione di sicurezza supportata:

Testo normale

Per stabilire una connessione di testo normale, imposta UsePlainText su true in 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

Per stabilire una connessione TLS, specifica il percorso del certificato CA utilizzando 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 con credenziali

Per stabilire una connessione TLS con l'autenticazione di nome utente e password, specifica CaCertificateFile, Username e 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

Per stabilire una connessione mutual TLS (mTLS), specifica CaCertificateFile, ClientCertificateFile e 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()

Sostituisci quanto segue:

  • PATH_TO_CA_CERT: il percorso del file del certificato CA.

  • PATH_TO_CLIENT_CERT: il percorso del file del certificato client.

  • PATH_TO_CLIENT_KEY: il percorso del file della chiave client.