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.