Die Java-Clientbibliothek für Spanner funktioniert mit Spanner Omni genauso wie mit Spanner. In diesem Dokument wird beschrieben, wie Sie sichere Verbindungen zu Spanner Omni herstellen, indem Sie die Java-Clientbibliothek konfigurieren. Sie stellen diese Verbindungen her, indem Sie Clientoptionen festlegen, wenn Sie einen Datenbankverwaltungsclient oder einen Datenbankclient erstellen.
Die Java-Clientbibliothek unterstützt Verbindungen mit Nur-Text, TLS, TLS mit Anmeldedaten und mTLS.
Weitere Informationen finden Sie unter Erste Schritte mit Spanner in Java in der Spanner-Dokumentation.
Hinweis
Wenn Sie Spanner Omni in Java verwenden möchten, verwenden Sie die Java-Clientbibliothek Version 6.119.0 oder höher.
Wenn Sie Maven ohne Bill of Materials (BOM) verwenden, fügen Sie den Abhängigkeiten der Datei pom.xml Folgendes hinzu:
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-spanner</artifactId>
<version>6.119.0</version>
</dependency>
Sicherheitskonfigurationen
Die Spanner-Java-Clientbibliothek unterstützt vier Sicherheitskonfigurationen, die definieren, wie die Kommunikation zwischen dem Client und Spanner Omni verschlüsselt und authentifiziert wird. In der folgenden Tabelle wird jede Konfiguration beschrieben:
| Sicherheitskonfiguration | Beschreibung |
|---|---|
| Nur-Text | Die Kommunikation ist nicht verschlüsselt. |
| TLS | Die Kommunikation wird mit Transport Layer Security (TLS) verschlüsselt. Für diese Konfiguration müssen Sie das Spanner Omni-CA Zertifikat dem Java-Truststore hinzufügen, wie unter Java-Truststore konfigurieren beschrieben. |
| TLS mit Anmeldedaten | Die Kommunikation wird mit TLS verschlüsselt und die Authentifizierung erfolgt mit einem Nutzernamen und einem Passwort. |
| mTLS | Die Kommunikation wird mit gegenseitiger TLS (mTLS) verschlüsselt. Für diese Konfiguration müssen Sie sowohl ein Clientzertifikat als auch einen privaten Clientschlüssel angeben. |
Java-Truststore konfigurieren
Für alle verschlüsselten Verbindungstypen (TLS, TLS mit Anmeldedaten und mTLS) müssen Sie das Spanner Omni-CA-Zertifikat dem Java-Truststore hinzufügen, damit der Client das Zertifikat des Servers überprüfen kann.
Führen Sie den folgenden Befehl aus, um das CA-Zertifikat dem Standard-Java-Truststore hinzuzufügen:
sudo keytool -import -trustcacerts -file ~/.spanner/certs/ca.crt -alias spanner-ca -keystore $JAVA_HOME/lib/security/cacerts
Alternativ können Sie beim Ausführen der Anwendung einen benutzerdefinierten Truststore angeben:
Um die Kompatibilität mit anderen Diensten aufrechtzuerhalten, die Standardzertifizierungsstellen (CAs) verwenden, kopieren Sie den Standard-Java-Truststore:
cp $JAVA_HOME/lib/security/cacerts /PATH_TO_CUSTOM_CACERTSImportieren Sie das CA-Zertifikat in Ihren benutzerdefinierten Truststore:
keytool -import -trustcacerts -file ~/.spanner/certs/ca.crt -alias spanner-ca -keystore /PATH_TO_CUSTOM_CACERTSGeben Sie den benutzerdefinierten Truststore beim Ausführen der Anwendung mit JVM-Systemattributen an:
java -Djavax.net.ssl.trustStore=/PATH_TO_CUSTOM_CACERTS -Djavax.net.ssl.trustStorePassword=changeit app
Das Objekt SpannerOptions konfigurieren
Wenn Sie das
SpannerOptions
Objekt konfigurieren, um ein
DatabaseClient oder
DatabaseAdminClient,
zu erstellen, geben Sie den Spanner Omni-Endpunkt mit setHost() gefolgt von setType(SpannerOptions.InstanceType.OMNI) an.
In den folgenden Beispielen wird gezeigt, wie das Objekt SpannerOptions für jede unterstützte Sicherheitskonfiguration konfiguriert wird:
Nur-Text
Wenn Sie eine Nur-Text-Verbindung herstellen möchten, geben Sie den Spanner Omni-Endpunkt mit http:// an und verwenden Sie die Methode usePlainText():
SpannerOptions options =
SpannerOptions.newBuilder()
.setHost("http://ENDPOINT") // Replace with your Spanner Omni endpoint
.setType(SpannerOptions.InstanceType.OMNI)
.usePlainText()
.build();
Spanner spanner = options.getService();
TLS
Wenn Sie das Objekt SpannerOptions für eine TLS-Verbindung konfigurieren, müssen Sie keine Anmeldedaten für den Nutzernamen und das Passwort angeben. Geben Sie den Spanner Omni-Endpunkt mit https:// an:
SpannerOptions options =
SpannerOptions.newBuilder()
.setHost("https://ENDPOINT") // Replace with your Spanner Omni endpoint
.setType(SpannerOptions.InstanceType.OMNI)
.build();
Spanner spanner = options.getService();
TLS mit Anmeldedaten
Wenn Sie eine TLS-Verbindung mit Authentifizierung per Nutzername und Passwort herstellen möchten, geben Sie den Spanner Omni-Endpunkt mit https:// und den Nutzernamen und das Passwort mit der Methode login() an:
SpannerOptions options =
SpannerOptions.newBuilder()
.setHost("https://ENDPOINT") // Replace with your Spanner Omni endpoint
.setType(SpannerOptions.InstanceType.OMNI)
.login("USERNAME", "PASSWORD".toCharArray())
.build();
Spanner spanner = options.getService();
mTLS
Wenn Sie eine mTLS-Verbindung verwenden möchten, konvertieren Sie den von Spanner Omni generierten Schlüssel mit dem folgenden Befehl in ein mit Java kompatibles Format:
openssl pkcs8 -topk8 -in ~/.spanner/certs/client.key -out ~/.spanner/certs/java-client.key -nocrypt
Im folgenden Beispiel wird gezeigt, wie das Objekt SpannerOptions so konfiguriert wird, dass ein Clientzertifikat verwendet wird:
SpannerOptions options =
SpannerOptions.newBuilder()
.setHost("https://ENDPOINT") // Replace with your Spanner Omni endpoint
.setType(SpannerOptions.InstanceType.OMNI)
.useClientCert(
"PATH_TO_CLIENT_CERT",
"PATH_TO_CLIENT_CERT_KEY")
.build();
Spanner spanner = options.getService();
Datenbankclient abrufen
Nachdem Sie das Objekt SpannerOptions konfiguriert haben, können Sie einen Datenbankclient abrufen.
Da Spanner Omni keine Google Cloud-Projekt- oder Instanz-IDs verwendet, geben Sie beim Erstellen einer DatabaseId default für die Projekt-ID und die Instanz-ID an:
DatabaseId dbId = DatabaseId.of("default", "default", "DATABASE_ID");
DatabaseClient client = spanner.getDatabaseClient(dbId);