Spanner용 Java 클라이언트 라이브러리는 Spanner와 마찬가지로 Spanner Omni와 함께 작동합니다. 이 문서에서는 Java 클라이언트 라이브러리를 구성하여 Spanner Omni에 보안 연결을 설정하는 방법을 보여줍니다. 데이터베이스 관리 클라이언트 또는 데이터베이스 클라이언트를 만들 때 클라이언트 옵션을 설정하여 이러한 연결을 설정합니다.
Java 클라이언트 라이브러리는 일반 텍스트, TLS, mTLS 연결을 지원합니다.
자세한 내용은 Spanner 문서의 Java에서 Spanner 시작하기를 참고하세요.
시작하기 전에
Java에서 Spanner Omni를 시작하려면 Java 클라이언트 라이브러리 버전 6.115.0 이상을 사용하세요.
BOM (Bill of Materials) 없이 Maven을 사용하는 경우 pom.xml 파일 종속 항목에 다음을 추가합니다.
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-spanner</artifactId>
<version>6.115.0</version>
</dependency>
SpannerOptions 객체 구성
DatabaseClient 또는 DatabaseAdminClient를 만들기 위해 SpannerOptions 객체를 구성하는 동안 setExperimentalHost()를 사용하여 Spanner Omni 엔드포인트를 지정합니다.
일반 텍스트 통신 사용
일반 텍스트 연결을 설정하려면 Spanner Omni 엔드포인트를 지정하고 usePlainText() 메서드를 사용합니다.
SpannerOptions options =
SpannerOptions.newBuilder()
.setExperimentalHost("http://ENDPOINT") // Replace with your Spanner Omni endpoint
.usePlainText()
.build();
Spanner spanner = options.getService();
TLS 설정 사용
TLS 연결을 위해 SpannerOptions 객체를 구성할 때는 추가 사용자 인증 정보 속성을 설정할 필요가 없습니다. CA 인증서를 Java 트러스트 저장소에 추가해야 합니다.
CA 인증서를 Java 트러스트 저장소에 추가하려면 다음 명령어를 사용합니다.
sudo keytool -import -trustcacerts -file /.spanner/certs/ca.crt -alias spanner-ca -keystore $JAVA_HOME/lib/security/cacerts
또는 애플리케이션을 실행할 때 맞춤 CA 인증서 저장소를 직접 전달할 수 있습니다.
java -Djavax.net.ssl.trustStore=PATH_TO_CUSTOM_CACERTS -Djavax.net.ssl.trustStorePassword=changeit app
호환성을 유지하려면 복사하여 Java 트러스트 저장소 위에 맞춤 트러스트 저장소를 빌드하세요.
cp $JAVA_HOME/lib/security/cacerts /PATH_TO_CUSTOM_CACERTS
mTLS 설정 사용
mTLS 연결을 사용하려면 다음 명령어를 사용하여 Spanner Omni에서 생성된 키를 Java와 호환되는 형식으로 변환하세요.
openssl pkcs8 -topk8 -in ~/.spanner/certs/client.key -out ~/.spanner/certs/java-client.key -nocrypt
다음 예에서는 클라이언트 인증서를 사용하도록 SpannerOptions 객체를 구성하는 방법을 보여줍니다.
SpannerOptions options =
SpannerOptions.newBuilder()
.setExperimentalHost("https://ENDPOINT") // Replace with your Spanner Omni endpoint
.useClientCert("PATH_TO_CLIENT_CERT","PATH_TO_CLIENT_CERT_KEY")
.build();
Spanner spanner = options.getService();
데이터베이스 만들기
그런 다음 데이터베이스를 만듭니다. 필요한 경우 라이브러리 코드에서 프로젝트를 default로 지정합니다. 예를 들어 DatabaseId을 만들 때 default를 지정합니다.
DatabaseId dbId = DatabaseId.of("default", "default", DATABASE_ID);
DatabaseClient client = spanner.getDatabaseClient(dbId);