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. Pour établir ces connexions, vous devez définir 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, TLS avec identifiants et mTLS.
Pour en savoir plus, consultez la section 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.119.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.119.0</version>
</dependency>
Configurations de sécurité
La bibliothèque cliente Java Spanner est compatible avec quatre configurations de sécurité, qui définissent le mode de chiffrement et d'authentification des communications entre le client et Spanner Omni. Le tableau suivant décrit chaque configuration :
| Configuration de la sécurité | Description |
|---|---|
| Texte brut | La communication n'est pas chiffrée. |
| TLS | La communication est chiffrée à l'aide du protocole TLS (Transport Layer Security). Cette configuration nécessite que vous ajoutiez le certificat CA Spanner Omni au keystore Java, comme décrit dans Configurer le keystore Java. |
| TLS avec identifiants | La communication est chiffrée à l'aide du protocole TLS, et l'authentification est effectuée à l'aide d'un nom d'utilisateur et d'un mot de passe. |
| mTLS | La communication est chiffrée à l'aide du protocole mTLS (mutual TLS). Cette configuration nécessite que vous fournissiez à la fois un certificat client et une clé privée client. |
Configurer le keystore Java
Pour tous les types de connexion chiffrée (TLS, TLS avec identifiants et mTLS), vous devez ajouter le certificat CA Spanner Omni au keystore Java afin que le client puisse vérifier le certificat du serveur.
Pour ajouter le certificat CA au keystore Java par défaut, exécutez la commande suivante :
sudo keytool -import -trustcacerts -file ~/.spanner/certs/ca.crt -alias spanner-ca -keystore $JAVA_HOME/lib/security/cacerts
Vous pouvez également spécifier un keystore personnalisé lorsque vous exécutez l'application :
Pour assurer la compatibilité avec d'autres services qui utilisent des autorités de certification (CA) standards, copiez le keystore Java par défaut :
cp $JAVA_HOME/lib/security/cacerts /PATH_TO_CUSTOM_CACERTSImportez le certificat CA dans votre keystore personnalisé :
keytool -import -trustcacerts -file ~/.spanner/certs/ca.crt -alias spanner-ca -keystore /PATH_TO_CUSTOM_CACERTSSpécifiez le keystore personnalisé à l'aide des propriétés système de la JVM lorsque vous exécutez l'application :
java -Djavax.net.ssl.trustStore=/PATH_TO_CUSTOM_CACERTS -Djavax.net.ssl.trustStorePassword=changeit app
Configurer l'objet SpannerOptions
Lorsque vous configurez l'
SpannerOptions
pour créer un
DatabaseClient ou un
DatabaseAdminClient,
spécifiez le point de terminaison Spanner Omni à l'aide de setHost() suivi de setType(SpannerOptions.InstanceType.OMNI).
Les exemples suivants montrent comment configurer l'objet SpannerOptions pour chaque configuration de sécurité compatible :
Texte brut
Pour établir une connexion en texte brut, spécifiez le point de terminaison Spanner Omni avec http:// et utilisez la méthode 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
Lorsque vous configurez l'objet SpannerOptions pour une connexion TLS, vous n'avez pas besoin de spécifier d'identifiants (nom d'utilisateur et mot de passe). Spécifiez le point de terminaison Spanner Omni à l'aide de https:// :
SpannerOptions options =
SpannerOptions.newBuilder()
.setHost("https://ENDPOINT") // Replace with your Spanner Omni endpoint
.setType(SpannerOptions.InstanceType.OMNI)
.build();
Spanner spanner = options.getService();
TLS avec identifiants
Pour établir une connexion TLS avec authentification par nom d'utilisateur et mot de passe, spécifiez le point de terminaison Spanner Omni à l'aide de https:// et le nom d'utilisateur et le mot de passe à l'aide de la méthode login() :
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
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()
.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();
Obtenir un client de base de données
Une fois que vous avez configuré l'objet SpannerOptions, vous pouvez obtenir un client de base de données.
Étant donné que Spanner Omni n'utilise pas d'ID de projet ni d'ID d'instance Google Cloud, spécifiez default pour l'ID de projet et l'ID d'instance lorsque vous créez un DatabaseId :
DatabaseId dbId = DatabaseId.of("default", "default", "DATABASE_ID");
DatabaseClient client = spanner.getDatabaseClient(dbId);