Utiliser la bibliothèque cliente Java pour se connecter à Spanner Omni

La bibliothèque cliente Java pour Spanner fonctionne avec Spanner Omni de la même manière qu'avec Spanner. Ce document explique comment établir des connexions sécurisées à Spanner Omni en configurant la bibliothèque cliente Java. Vous établissez ces connexions en définissant des options client lorsque vous créez un client d'administration de base de données ou un client de base de données.

La bibliothèque cliente Java est compatible avec les connexions en texte brut, TLS et mTLS.

Pour en savoir plus, consultez Premiers pas avec Spanner en Java dans la documentation Spanner.

Avant de commencer

Pour commencer à utiliser Spanner Omni en Java, utilisez la bibliothèque cliente Java version 6.115.0 ou ultérieure.

Si vous utilisez Maven sans la nomenclature (BOM), ajoutez les éléments suivants aux dépendances du fichier pom.xml :

<dependency>
  <groupId>com.google.cloud</groupId>
  <artifactId>google-cloud-spanner</artifactId>
  <version>6.115.0</version>
</dependency>

Configurer l'objet SpannerOptions

Lorsque vous configurez l'objet SpannerOptions pour créer un DatabaseClient ou un DatabaseAdminClient, spécifiez le point de terminaison Spanner Omni à l'aide de setExperimentalHost().

Utiliser la communication en texte brut

Pour établir une connexion en texte brut, spécifiez le point de terminaison Spanner Omni et utilisez la méthode usePlainText() :

SpannerOptions options =
    SpannerOptions.newBuilder()
        .setExperimentalHost("http://ENDPOINT") // Replace with your Spanner Omni endpoint
        .usePlainText()
        .build();
Spanner spanner = options.getService();

Utiliser une configuration TLS

Lorsque vous configurez l'objet SpannerOptions pour une connexion TLS, vous n'avez pas besoin de définir d'autres propriétés d'identifiants. Vous devez ajouter le certificat de l'autorité de certification au truststore Java.

Pour ajouter le certificat de l'autorité de certification au truststore Java, utilisez la commande suivante :

sudo keytool -import -trustcacerts -file /.spanner/certs/ca.crt -alias spanner-ca -keystore $JAVA_HOME/lib/security/cacerts

Vous pouvez également transmettre un magasin de certificats d'autorité de certification personnalisé directement lorsque vous exécutez l'application :

java -Djavax.net.ssl.trustStore=PATH_TO_CUSTOM_CACERTS -Djavax.net.ssl.trustStorePassword=changeit app

Pour maintenir la compatibilité, créez votre truststore personnalisé en copiant le truststore Java :

cp $JAVA_HOME/lib/security/cacerts /PATH_TO_CUSTOM_CACERTS

Utiliser une configuration mTLS

Pour utiliser une connexion mTLS, convertissez la clé générée par Spanner Omni dans un format compatible avec Java à l'aide de la commande suivante :

openssl pkcs8 -topk8 -in ~/.spanner/certs/client.key -out ~/.spanner/certs/java-client.key -nocrypt

L'exemple suivant montre comment configurer l'objet SpannerOptions pour utiliser un certificat client :

   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();

Créer la base de données

Créez ensuite la base de données. Spécifiez le projet en tant que default si nécessaire dans le code de la bibliothèque. Par exemple, spécifiez default lorsque vous créez un DatabaseId :

DatabaseId dbId = DatabaseId.of("default", "default", DATABASE_ID);
DatabaseClient client = spanner.getDatabaseClient(dbId);