In diesem Dokument wird beschrieben, wie Sie sichere Verbindungen zu Spanner Omni herstellen, indem Sie die Go-Clientbibliothek konfigurieren. Sie stellen diese Verbindungen her, indem Sie Clientoptionen festlegen, wenn Sie einen Datenbankverwaltungsclient oder einen Datenbankclient erstellen.
Die Go-Clientbibliothek unterstützt Verbindungen mit unverschlüsseltem Text, TLS und mTLS. Fügen Sie für alle
Verbindungstypen option.WithoutAuthentication() ein, um zu verhindern,
dass Google Cloud Anmeldedaten an einen
Spanner Omni-Endpunkt übertragen werden.
Weitere Informationen finden Sie unter Erste Schritte mit Spanner in Go in der Spanner-Dokumentation.
Kommunikation mit unverschlüsseltem Text
Führen Sie den folgenden Code aus, um die Kommunikation mit unverschlüsseltem Text herzustellen:
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())),
)
TLS-Verbindung
Führen Sie den folgenden Code aus, um eine TLS-Verbindung herzustellen:
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)),
)
}
mTLS-Verbindung
Führen Sie den folgenden Code aus, um eine mTLS-Verbindung herzustellen:
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)),
)
}