Go 클라이언트 라이브러리를 사용하여 Spanner Omni에 연결

이 문서에서는 Go 클라이언트 라이브러리를 구성하여 Spanner Omni에 보안 연결을 설정하는 방법을 보여줍니다. 데이터베이스 관리 클라이언트 또는 데이터베이스 클라이언트를 만들 때 클라이언트 옵션을 설정하여 이러한 연결을 설정합니다.

Go 클라이언트 라이브러리는 일반 텍스트, TLS, mTLS 연결을 지원합니다. 모든 연결 유형의 경우 Google Cloud 사용자 인증 정보를 Spanner Omni 엔드포인트로 전송하지 않도록 option.WithoutAuthentication()를 포함합니다.

자세한 내용은 Spanner 문서의 Go에서 Spanner 시작하기를 참고하세요.

일반 텍스트 통신

일반 텍스트 통신을 설정하려면 다음 코드를 실행합니다.

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)),
    )
}