O Spanner Omni e o Spanner usam a biblioteca de cliente do Go de maneira semelhante. Neste documento, mostramos como
estabelecer conexões seguras com o Spanner Omni configurando a biblioteca de cliente
Go. Você estabelece essas conexões configurando
spanner.ClientConfig
ao criar um cliente administrativo ou um cliente de banco de dados.
A biblioteca de cliente Go é compatível com conexões de texto simples, TLS, TLS com credenciais e mTLS.
Para mais informações, consulte Começar a usar o Spanner em Go na documentação do Spanner.
Antes de começar
Para usar a biblioteca de cliente Go com o Spanner Omni, use a biblioteca de cliente Go versão v1.94.0 ou mais recente e a versão de lançamento 1.25 do Go ou mais recente.
Para adicionar o módulo Spanner Go ao arquivo go.mod, execute o
comando a seguir:
go get cloud.google.com/go/spanner@v1.94.0
Configurar o objeto ClientConfig
Para usar a biblioteca de cliente Go e criar um
Client
ou um
DatabaseAdminClient,
configure o objeto
ClientConfig
especificando
Type: spanner.OMNI e forneça o endpoint usando option.WithEndpoint().
Os exemplos a seguir mostram como configurar o objeto ClientConfig para
cada configuração de segurança compatível:
Texto simples
Para estabelecer uma conexão de texto simples, defina UsePlainText como true em 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
Para estabelecer uma conexão TLS, especifique o caminho para o certificado de CA usando 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 com credenciais
Para estabelecer uma conexão TLS com autenticação de nome de usuário e senha,
especifique 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
Para estabelecer uma conexão TLS mútuo (mTLS), especifique 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()
Substitua:
PATH_TO_CA_CERT: o caminho para o arquivo de certificado de CA.PATH_TO_CLIENT_CERT: o caminho para o arquivo de certificado do cliente.PATH_TO_CLIENT_KEY: o caminho para o arquivo de chave do cliente.