Spanner Omni y Spanner usan la biblioteca cliente de Go de manera similar. En este documento, se muestra cómo establecer conexiones seguras con Spanner Omni configurando la biblioteca cliente de Go. Para establecer estas conexiones, debes configurar spanner.ClientConfig cuando creas un cliente administrativo de la base de datos o un cliente de la base de datos.
La biblioteca cliente de Go admite conexiones de texto sin formato, TLS, TLS con credenciales y mTLS.
Para obtener más información, consulta Comienza a usar Spanner en Go en la documentación de Spanner.
Antes de comenzar
Para usar la biblioteca cliente de Go con Spanner Omni, usa la versión v1.94.0 o posterior de la biblioteca cliente de Go y la versión de lanzamiento 1.25 de Go o posterior.
Para agregar el módulo de Spanner Go a tu archivo go.mod, ejecuta el siguiente comando:
go get cloud.google.com/go/spanner@v1.94.0
Configura el objeto ClientConfig
Para usar la biblioteca cliente de Go para crear un objeto Client o DatabaseAdminClient, configura el objeto ClientConfig especificando Type: spanner.OMNI y proporciona el extremo con option.WithEndpoint().
En los siguientes ejemplos, se muestra cómo configurar el objeto ClientConfig para cada configuración de seguridad compatible:
Texto sin formato
Para establecer una conexión de texto sin formato, configura UsePlainText como true en 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 establecer una conexión TLS, especifica la ruta de acceso a tu certificado de la AC con 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 credenciales
Para establecer una conexión TLS con autenticación de nombre de usuario y contraseña, especifica CaCertificateFile, Username y 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 establecer una conexión de TLS mutua (mTLS), especifica CaCertificateFile, ClientCertificateFile y 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()
Reemplaza lo siguiente:
PATH_TO_CA_CERT: Es la ruta de acceso al archivo del certificado de la AC.PATH_TO_CLIENT_CERT: Es la ruta de acceso al archivo del certificado del cliente.PATH_TO_CLIENT_KEY: Es la ruta de acceso al archivo de claves del cliente.