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.
Hinweis
Wenn Sie die Go-Clientbibliothek mit Spanner Omni verbinden möchten, müssen Sie die Konfiguration IsExperimentalHost: true verwenden. Mit dieser Option wird festgelegt, dass die Bibliothek eine Verbindung zu einer lokalen oder lokalen Bereitstellung von Spanner Omni und nicht zur verwalteten Version von Spanner herstellt.
Damit Sie diese Konfigurationsoption verwenden können, muss Ihre Umgebung die folgenden Anforderungen erfüllen:
Die Go-Clientbibliothek muss Version 1.91.0 oder höher sein.
Die Go-Version muss Version 1.25 oder höher sein.
Unverschlüsselte Kommunikation
Führen Sie den folgenden Code aus, um eine unverschlüsselte Kommunikation 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)),
)
}