במסמך הזה מוסבר איך ליצור חיבורים מאובטחים ל-Spanner Omni באמצעות הגדרה של ספריית הלקוח Go. אתם יוצרים את החיבורים האלה כשאתם מגדירים אפשרויות לקוח כשאתם יוצרים לקוח אדמיניסטרטיבי של מסד נתונים או לקוח של מסד נתונים.
ספריית הלקוח Go תומכת בחיבורים של טקסט פשוט, TLS ו-mTLS. בכל סוגי החיבורים, צריך לכלול את option.WithoutAuthentication() כדי למנוע העברה של פרטי הכניסה Google Cloud לנקודת קצה של Spanner Omni.
מידע נוסף זמין במאמר תחילת העבודה עם Spanner ב-Go במסמכי Spanner.
לפני שמתחילים
כדי לקשר את ספריית הלקוח של Go אל Spanner Omni, צריך להשתמש בהגדרה IsExperimentalHost: true. האפשרות הזו מציינת שהספרייה מתחברת לפריסה מקומית או לפריסה באתר של Spanner Omni, ולא לגרסה המנוהלת של Spanner.
כדי להשתמש באפשרות ההגדרה הזו, הסביבה שלכם צריכה לעמוד בדרישות הבאות:
ספריית הלקוח של Go צריכה להיות גרסה v1.91.0 ואילך.
גרסת Go צריכה להיות 1.25 ומעלה.
תקשורת בטקסט פשוט
כדי ליצור תקשורת בטקסט רגיל, מריצים את הקוד הבא:
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
כדי ליצור חיבור TLS, מריצים את הקוד הבא:
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
כדי ליצור חיבור mTLS, מריצים את הקוד הבא:
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)),
)
}