Connexions avec le pilote léger JDBC à l'aide d'un portefeuille (mTLS)

La base de données autonome d'IA nécessite une connexion sécurisée qui utilise la sécurité de la couche de transport (TLSv1.2). Selon les options de configuration réseau, Autonomous AI Database prend en charge l'authentification mTLS et TLS.

Note

Si vous utilisez TLS, au lieu de mTLS, pour vos connexions à l'aide du pilote léger JDBC avec JDK8u162 ou une valeur supérieure, aucun portefeuille n'est requis. Les connexions TLS sont activées pour les configurations de réseau suivantes :


  • Accès au point d'extrémité privé uniquement : Configuration du réseau avec un point d'extrémité privé

  • Accès sécurisé à partir des adresses IP et des réseaux en nuage virtuels autorisés seulement : Configuration avec une liste de contrôle d'accès (LCA)

    Si votre base de données IA autonome se trouve sur un point d'extrémité public sans liste de contrôle d'accès, vous pouvez ajouter 0.0.0.0/0 en tant que liste de contrôle d'accès CIDR et activer l'authentification TLS. L'ajout de 0.0.0.0/0 en tant que liste de contrôle d'accès CIDR est identique à la présence de votre base de données IA autonome sur un point d'extrémité public sans liste de contrôle d'accès.

Pour plus d'informations, voir Connexions sécurisées à une base de données d'IA autonome avec mTLS ou TLS.

Connexion au pilote léger JDBC Préalables Connexions avec des portefeuilles (mTLS)

Les applications qui utilisent le pilote léger JDBC prennent en charge TLS et l'authentification TLS mutuelle (mTLS). L'utilisation de l'authentification mTLS nécessite que vous fournissiez les données d'identification de base de données Oracle, y compris les portefeuilles Oracle ou les fichiers KeyStore Java (JKS) lors de la connexion à la base de données.

Effectuez les étapes suivantes avant de vous connecter à la base de données :

  1. Provisionner une base de données d'intelligence artificielle autonome : Créez une base de données et obtenez vos données d'identification (nom d'utilisateur et mot de passe).

    Pour plus d'informations, voir Provisionner une instance Autonomous AI Database.

  2. For mutual TLS connections, Download Client Credentials: Unzip the wallet_databasename.zip to a secure location. Assurez-vous que seuls les utilisateurs autorisés ont accès à ces fichiers.

    Pour plus d'informations sur le téléchargement des données d'identification de client pour une base de données d'intelligence artificielle autonome, voir Download Client Credentials (Wallets).

  3. Vérifier la version JDK à des fins de sécurité : Si vous utilisez JDK11, JDK10 ou JDK9, vous n'avez rien à faire pour cette étape. Si votre version de JDK est inférieure à JDK8u162, vous devez télécharger les fichiers de politique de juridiction JCE Unlimited Strength. Reportez-vous au fichier README pour obtenir des notes d'installation. Téléchargez les fichiers JCE à partir du téléchargement 8 des fichiers de politique de juridiction Unlimited Strength (JCE) de Java Cryptography Extension.
  4. Vérifier la version du pilote JDBC : Téléchargez un pilote JDBC léger pris en charge (ojdbc8.jar et ucp.jar). Vous avez également besoin des fichiers JAR supplémentaires : oraclepki.jar, osdt_core.jar et osdt_cert.jar pour une utilisation avec les portefeuilles Oracle.

    Versions prises en charge :

    • JDBC Thin : 11.2.0.4 (ou version ultérieure avec correctif ponctuel pour le bogue 28492769), 12.2 (ou version ultérieure avec correctif ponctuel pour le bogue 28492769), 18 (version de base ou version ultérieure avec correctif ponctuel pour le bogue 28492769), 19 (version de base ou version ultérieure) ou 21 (version de base ou version ultérieure)

    Pour les applications qui utilisent la fonctionnalité UCP (Universal Connection Pool) de JDBC, il est fortement recommandé d'utiliser des versions 19.13 ou supérieures ou 21.3 ou supérieures du pilote JDBC. Ces versions incluent un comportement de drainage approprié pour réduire l'incidence sur les applications lorsque la maintenance planifiée est effectuée dans Autonomous Database. UCP réapprovisionnera les connexions dans le groupe de manière proactive afin que les connexions actives ne soient pas touchées par la maintenance.

    Pour les anciennes versions du pilote, un correctif pour le bogue 31112088 peut également être demandé en soumettant une demande de service.

    Télécharger les versions prises en charge : Téléchargements de pilotes JDBC Oracle Database et de fichiers Jars complémentaires .

Utiliser une chaîne de connexion d'URL JDBC avec le pilote léger et les portefeuilles JDBC

La chaîne de connexion se trouve dans le fichier tnsnames.ora, qui fait partie du téléchargement des données d'identification du client. Le fichier tnsnames.ora contient les noms de service prédéfinis. Chaque service a son propre alias TNS et sa propre chaîne de connexion.

Voici un exemple d'entrée, avec dbname_high comme alias TNS et une chaîne de connexion dans tnsnames.ora :
dbname_high= (description=
      (address=(protocol=tcps)(port=1522)(host=adb.example.oraclecloud.com))
      (connect_data=(service_name=dbname_high.oraclecloud.com))(security=(ssl_server_dn_match=yes)))

Définissez l'emplacement de tnsnames.ora avec la propriété TNS_ADMIN de l'une des façons suivantes :

  • Dans le cadre de la chaîne de connexion (uniquement avec le pilote JDBC 18.3 ou plus récent)
  • En tant que propriété de système, -Doracle.net.tns_admin
  • En tant que propriété de connexion (OracleConnection.CONNECTION_PROPERTY_TNS_ADMIN)

À l'aide du pilote JDBC 18.3, la chaîne de connexion inclut l'alias TNS et la propriété de connexion TNS_ADMIN.

Exemple de chaîne de connexion utilisant le pilote JDBC 18.3 (Linux) :

DB_URL="jdbc:oracle:thin:@dbname_high?TNS_ADMIN=/Users/test/wallet_dbname"

Exemple de chaîne de connexion utilisant le pilote JDBC 18.3 (Windows) :

DB_URL="jdbc:oracle:thin:@dbname_high?TNS_ADMIN=C:\\Users\\test\\wallet_dbname"

La propriété de connexion TNS_ADMIN spécifie les éléments suivants :

  • Emplacement de tnsnames.ora.
  • Emplacement des fichiers Oracle Wallet (ewallet.sso, ewallet.p12) ou Java KeyStore (JKS) (truststore.jks, keystore.jks).
  • Emplacement de ojdbc.properties. Ce fichier contient les propriétés de connexion requises pour utiliser les portefeuilles Oracle ou Java KeyStore (JKS).
Note

Si vous utilisez des pilotes JDBC 12.2.0.1 ou plus anciens, la chaîne de connexion ne contient que l'alias TNS. Pour vous connecter à l'aide d'anciens pilotes JDBC :

  • Définissez l'emplacement de tnsnames.ora, soit en tant que propriété de système avec -Doracle.net.tns_admin, soit en tant que propriété de connexion (OracleConnection.CONNECTION_PROPERTY_TNS_ADMIN).
  • Définissez les propriétés de connexion liées au portefeuille ou JKS en plus de TNS_ADMIN.

Par exemple, dans ce cas, vous définissez l'alias TNS dans DB_URL sans la partie TNS_ADMIN comme suit :

DB_URL=”jdbc:oracle:thin:@dbname_high”

Pour plus de détails, voir Noms de service de base de données pour Autonomous AI Database.

Utiliser une connexion JDBC avec le pilote JDBC 18.3

Les applications qui utilisent le pilote JDBC Thin peuvent se connecter à des bases de données d'IA autonomes à l'aide de portefeuilles Oracle ou de Java KeyStore (JKS).

Utiliser Oracle Wallet

Pour utiliser Java et le pilote léger JDBC 18.3 pour se connecter à Autonomous AI Database avec Oracle Wallet, procédez de la façon suivante :

  1. Assurez-vous que les préalables sont satisfaits : Pour plus d'informations, voir Préalables à la connexion au pilote léger JDBC pour les connexions avec des portefeuilles (mTLS).

  2. Vérifier la connexion : Vous pouvez utiliser un programme Java, un servlet ou des environnements de développement intégrés pour vérifier la connexion à la base de données. Un test simple consiste à télécharger DataSourceSample.java ou UCPSample.java à partir d'échantillons de code JDBC et à mettre à jour l'URL de connexion pour avoir l'alias TNS requis et transmettre TNS_ADMIN, en fournissant le chemin d'accès pour tnsnames.ora et les fichiers de portefeuille. En outre, dans l'exemple de code source, mettez à jour le nom utilisateur et le mot de passe de la base de données. Exemple :

    DB_URL="jdbc:oracle:thin:@dbname_high?TNS_ADMIN=/Users/test/wallet_dbname"
    Note

    Si vous utilisez Microsoft Active Directory avec une base de données, dans l'exemple de code source, mettez à jour le nom d'utilisateur avec le nom d'utilisateur Active Directory et mettez à jour le mot de passe avec le mot de passe d'utilisateur Active Directory. Pour plus d'informations, voir Utiliser Microsoft Active Directory avec Autonomous AI Database.
  3. Définir l'emplacement du portefeuille : Le fichier de propriétés ojdbc.properties est préchargé avec la propriété de connexion associée au portefeuille.

    oracle.net.wallet_location=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=${TNS_ADMIN})))
    Note

    Vous ne modifiez pas le fichier ojdbc.properties. La valeur de TNS_ADMIN détermine l'emplacement du portefeuille.
  4. Compiler et exécuter : Compilez et exécutez l'exemple pour obtenir une connexion réussie. Assurez-vous d'avoir oraclepki.jar, osdt_core.jar et osdt_cert.jar, dans classpath. Exemple :

    java –classpath
          ./lib/ojdbc8.jar:./lib/ucp.jar:./lib/oraclepki.jar:./lib/osdt_core.jar:./lib/osdt_cert.jar:. UCPSample
Note

La partie portefeuille à connexion automatique du fichier zip des données d'identification du client téléchargé de la base de données IA autonome supprime la nécessité pour votre application d'utiliser l'authentification par nom d'utilisateur/mot de passe.

Utilisation de Java KeyStore

Pour utiliser Java et le pilote léger JDBC 18.3 pour se connecter à Autonomous AI Database avec Java KeyStore (JKS), procédez de la façon suivante :

  1. Assurez-vous que les préalables sont satisfaits : Pour plus d'informations, voir Préalables à la connexion au pilote léger JDBC pour les connexions avec des portefeuilles (mTLS).

  2. Prêt pour les détails de la base de données : Vous pouvez utiliser un programme Java, un servlet ou des environnements de développement intégrés pour vérifier la connexion à la base de données. Un test simple consiste à télécharger DataSourceSample.java ou UCPSample.java à partir d'échantillons de code JDBC. Dans cet exemple, utilisez l'URL de connexion comme indiqué. Notez que la connexion DB_URL contient l'alias TNS, par exemple dbname_high présent dans tnsnames.ora. Vous pouvez fournir le chemin d'accès au fichier tnsnames.ora au moyen de la propriété TNS_ADMIN, comme indiqué dans l'URL. Assurez-vous d'utiliser le nom utilisateur et le mot de passe de la base de données associés à votre base de données.

    DB_URL="jdbc:oracle:thin:@dbname_high?TNS_ADMIN=/Users/test/wallet_dbname"
    Note

    Si vous utilisez Microsoft Active Directory avec Autonomous AI Database, veillez à modifier l'exemple de code source pour utiliser le nom d'utilisateur Active Directory et le mot de passe de l'utilisateur Active Directory. Pour plus d'informations, voir Utiliser Microsoft Active Directory avec Autonomous AI Database.
  3. Définir les propriétés de connexion liées à JKS : Ajoutez les propriétés de connexion liées à JKS au fichier ojdbc.properties. Le mot de passe keyStore et le mot de passe du magasin de certificats SSL sont indiqués lors du téléchargement du fichier .zip des données d'identification du client.

    Pour utiliser la connectivité SSL au lieu d'Oracle Wallet, spécifiez les fichiers de magasin de clés et de magasin de certificats SSL et leur mot de passe respectif dans le fichier ojdbc.properties comme suit :

    
    # Properties for using Java KeyStore (JKS)
    oracle.net.ssl_server_dn_match=true
    javax.net.ssl.trustStore==${TNS_ADMIN}/truststore.jks
    javax.net.ssl.trustStorePassword=password
    javax.net.ssl.keyStore==${TNS_ADMIN}/keystore.jks
    javax.net.ssl.keyStorePassword=password
    Note

    Veillez à commenter la propriété associée au portefeuille dans ojdbc.properties. Exemple :
    
    # Property for using Oracle Wallets
    # oracle.net.wallet_location=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=${TNS_ADMIN})))
  4. Compiler et exécuter : Compilez et exécutez l'exemple pour obtenir une connexion réussie. Exemple :

    java –classpath ./lib/ojdbc8.jar:./lib/ucp.jar UCPSample

Connexion à l'aide du pilote léger JDBC 12.2 ou d'une version plus ancienne

Si vous utilisez le pilote JDBC 12.2.0.2 ou une version antérieure, définissez les propriétés Java avant de démarrer l'application. En général, vous définissez les propriétés dans le script de démarrage de l'application.

Si vous ne pouvez pas utiliser les pilotes JDBC les plus récents, vous pouvez vous connecter à Autonomous AI Database à l'aide de 12.2.0.2 ou d'autres pilotes JDBC plus anciens. Les pilotes JDBC 12.2 ou plus anciens ne prennent pas en charge le fichier ojdbc.properties. Avec les anciennes versions de pilote JDBC, vous devez transmettre des portefeuilles ou des propriétés liées à JKS en tant que propriétés système ou en tant que propriétés de connexion pour établir une connexion.

Utiliser Oracle Wallet

Pour utiliser Java et les pilotes JDBC 12.2 ou plus anciens pour la connexion à Autonomous AI Database avec Oracle Wallet, procédez de la façon suivante :

  1. Assurez-vous que les préalables sont satisfaits : Pour plus d'informations, voir Préalables à la connexion au pilote léger JDBC pour les connexions avec des portefeuilles (mTLS).

  2. Vérifier la connexion : Vous pouvez utiliser un programme Java, un servlet ou des environnements de développement intégrés pour vérifier la connexion à la base de données. Un test simple consiste à télécharger DataSourceSample.java ou UCPSample.java à partir d'échantillons de code JDBC et à mettre à jour l'URL de connexion pour avoir l'alias TNS requis. Mettez également à jour l'exemple de code source pour utiliser le nom utilisateur et le mot de passe de la base de données. Exemple :

    DB_URL="jdbc:oracle:thin:@dbname_high”
    Note

    Si vous utilisez Microsoft Active Directory avec Autonomous AI Database, mettez à jour l'exemple de code source pour utiliser le nom d'utilisateur Active Directory et le mot de passe d'utilisateur Active Directory. Pour plus d'informations, voir Utiliser Microsoft Active Directory avec Autonomous AI Database.
  3. Définir l'emplacement du portefeuille : Ajoutez OraclePKIProvider à la fin de la liste des fournisseurs dans le fichier java.security (ce fichier fait partie de l'installation JRE située à l'adresse $JRE_HOME/jre/lib/security/java.security), qui se présente généralement comme suit :

    security.provider.14=oracle.security.pki.OraclePKIProvider
  4. Compiler et exécuter : Compilez et exécutez l'exemple pour obtenir une connexion réussie. Assurez-vous d'avoir oraclepki.jar, osdt_core.jar et osdt_cert.jar, dans classpath. Vous devez également transmettre les propriétés de connexion. Mettez à jour les propriétés avec l'emplacement où se trouvent tnsnames.ora et les fichiers de portefeuille.

    java –classpath 
    ./lib/ojdbc8.jar:./lib/ucp.jar:./lib/oraclepki.jar:./lib/osdt_core.jar:./lib/osdt_cert.jar:.
    -Doracle.net.tns_admin=/users/test/wallet_dbname  
    -Doracle.net.ssl_server_dn_match=true  
    -Doracle.net.ssl_version=1.2  (Not required for 12.2)
    -Doracle.net.wallet_location= “(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=/users/test/wallet_dbname)))” 
    UCPSample
Note

Ce sont des exemples de système Windows. Ajoutez un caractère de continuation \ si vous définissez les propriétés –D sur plusieurs lignes sous UNIX (Linux ou Mac).

Utilisation de Java KeyStore

Pour utiliser Java et les pilotes légers JDBC 12.2 ou plus anciens pour la connexion à Autonomous AI Database avec Java KeyStore (JKS), procédez de la façon suivante :

  1. Assurez-vous que les préalables sont satisfaits : Pour plus d'informations, voir Préalables à la connexion au pilote léger JDBC pour les connexions avec des portefeuilles (mTLS).

  2. Vérifier la connexion : Vous pouvez utiliser un programme Java, un servlet ou des environnements de développement intégrés pour vérifier la connexion à la base de données. Un test simple consiste à télécharger DataSourceSample.java ou UCPSample.java à partir d'échantillons de code JDBC et à mettre à jour l'URL de connexion pour avoir l'alias TNS requis et transmettre TNS_ADMIN, en fournissant le chemin pour tnsnames.ora et en mettant à jour l'URL de connexion pour avoir l'alias TNS requis. En outre, dans l'exemple de code source, mettez à jour le nom utilisateur et le mot de passe de la base de données. Exemple :

    DB_URL="jdbc:oracle:thin:@dbname_high”
    Note

    Si vous utilisez Microsoft Active Directory avec Autonomous AI Database, mettez à jour l'exemple de code source pour utiliser le nom d'utilisateur Active Directory et le mot de passe d'utilisateur Active Directory. Pour plus d'informations, voir Utiliser Microsoft Active Directory avec Autonomous AI Database.
  3. Compiler et exécuter : Compilez et exécutez l'exemple pour obtenir une connexion réussie. Vous devez transmettre les propriétés de connexion comme indiqué. Mettez à jour les propriétés avec l'emplacement où les fichiers tnsnames.ora et JKS sont placés. Si vous voulez transmettre ces propriétés de connexion par programmation, consultez DataSourceForJKS.java. Exemple :

    java 
    -Doracle.net.tns_admin=/users/test/wallet_dbname
    -Djavax.net.ssl.trustStore=truststore.jks
    -Djavax.net.ssl.trustStorePassword=**********
    -Djavax.net.ssl.keyStore=keystore.jks    
    -Djavax.net.ssl.keyStorePassword=************   
    -Doracle.net.ssl_server_dn_match=true    
    -Doracle.net.ssl_version=1.2 // Not required for 12.2

Connexions légères JDBC avec un mandataire HTTP

Si le client est derrière un pare-feu et que votre configuration réseau nécessite un mandataire HTTP pour se connecter à Internet, vous devez utiliser le client léger JDBC 18.1 ou une version supérieure qui permet les connexions au moyen de mandataires HTTP.

Pour vous connecter à Autonomous AI Database au moyen d'un mandataire HTTPS, ouvrez et mettez à jour votre fichier tnsnames.ora. Ajoutez le nom d'hôte du mandataire HTTP (https_proxy) et le port (https_proxy_port) à la chaîne de connexion. Remplacez les valeurs par vos informations de mandataire HTTPS. Exemple :

  1. Ajoutez le nom d'hôte et le port du mandataire HTTP aux définitions de connexion dans tnsnames.ora. Vous devez ajouter les paramètres https_proxy et https_proxy_port dans la section d'adresse des définitions de connexion. Par exemple, ce qui suit règle le mandataire HTTP à proxyhostname et le port mandataire HTTP à 80; remplacez ces valeurs par vos informations de mandataire HTTP :

db2022adb_high =
       (description=
             (address=
                   (https_proxy=proxyhostname)(https_proxy_port=80)(protocol=tcps)(port=1522)(host=adb.example.oraclecloud.com)
             )
             (connect_data=(service_name=db2022adb_high.adb.oraclecloud.com)
             )
             (security=security=(ssl_server_dn_match=yes)
             )
       )
Note

  • Les versions de client JDBC Thin antérieures à 18.1 ne prennent pas en charge les connexions par mandataire HTTP.

  • La connexion réussie dépend de configurations de proxy spécifiques et les performances des transferts de données dépendraient de la capacité du proxy. Oracle ne recommande pas d'utiliser cette fonction dans les environnements de production où les performances sont critiques.

  • La configuration de tnsnames.ora pour le mandataire HTTP peut ne pas être suffisante en fonction de la configuration du réseau et des politiques de sécurité de votre organisation. Par exemple, certains réseaux nécessitent un nom d'utilisateur et un mot de passe pour le mandataire HTTP.

  • Dans tous les cas, communiquez avec l'administrateur de réseau pour ouvrir des connexions sortantes aux hôtes du domaine oraclecloud.com à l'aide du port approprié sans passer par un mandataire HTTP.