Neste documento, mostramos como estabelecer conexões seguras com o Spanner Omni configurando a biblioteca de cliente Go. Você estabelece essas conexões definindo opções de cliente 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 e mTLS. Para todos os tipos de conexão, inclua option.WithoutAuthentication() para evitar a transmissão de credenciais Google Cloud a um endpoint do Spanner Omni.
Para mais informações, consulte Como começar a usar o Spanner em Go na documentação do Spanner.
Comunicação em texto simples
Para estabelecer uma comunicação de texto simples, execute o seguinte código:
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())),
)
Conexão TLS
Para estabelecer uma conexão TLS, execute o seguinte código:
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)),
)
}
Conexão mTLS
Para estabelecer uma conexão mTLS, execute o seguinte código:
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)),
)
}