
Il est souvent nécessaire ou recommandé de se connecter à la base de données rapidement et surtout en toute sécurité, sans que les informations de connexion ne soient visibles. Un exemple, comme l'indique Oracle sur son site, est celui où l'on se connecte à la base de données à partir de scripts Shell présents dans le système de fichiers. Si ces scripts contiennent les informations de connexion, cela peut constituer un problème de sécurité assez important. Pour cet exemple ou d’autres similaires, nous pouvons utiliser l’authentification propre au système d’exploitation, mais à partir Oracle Release 2, Oracle nous offre la possibilité d’utiliser un magasin de mots de passe externe sécurisé, en enregistrant les identifiants de connexion à Oracle un « wallet » stocké côté client. Concrètement, cela consiste à créer un fichier contenant les identifiants de connexion à la base de données, stocké côté client ; la chaîne de connexion indiquera alors l’emplacement de ce « fichier » pour établir la connexion. Cela permettra à l’utilisateur de se connecter en utilisant la syntaxe suivante : « /@alias », où « alias » est le nom choisi pour la connexion à la base de données.
Configurer le magasin de mots de passe externe sécurisé
Tout d'abord, nous devons choisir l'emplacement où nous souhaitons enregistrer le Oracle ; il s'agit en effet de l'emplacement où sera stocké le fichier de portefeuille contenant les informations de connexion Oracle pour se connecter à la base de données, selon la syntaxe suivante : « /@alias ».
Note : L'emplacement peut être un répertoire commun auquel plusieurs utilisateurs ont accès pour se connecter à la base de données.
Dans notre cas, comme il s'agit d'un test, nous allons placer Oracle dans le répertoire racine « oracle notre machine cliente.
mkdir -poracle
Nous chargeons les variables d'environnement TNS_ADMIN, si vous ne l'avez pas encore fait, en pointant vers le fichier tnsnames.ora où nous spécifierons la chaîne de connexion à la base de données de notre machine cliente.
exportoracle.0.oracle
Nous ajoutons l'entrée suivante dans le fichier sqlnet.ora, situé dans le répertoire TNS_ADMIN, dans notre cas «oracle.0.oracle.ora »
Dans ce fichier, nous devons spécifier le répertoire dans lequel se trouve le fichier Wallet que nous avons créé précédemment.
Il est important d'ajouter l'entrée SQLNET.WALLET_OVERRIDE qui permet de remplacer tous les paramètres d'authentification existants du système d'exploitation.
WALLET_LOCATION =
(SOURCE =
(METHOD = FILE)
(METHOD_DATA =
(DIRECTORY =oracle)
)
)
SQLNET.WALLET_OVERRIDE = TRUE
SSL_CLIENT_AUTHENTICATION = FALSE
SSL_VERSION = 0
À ce stade, nous pouvons déjà créer le wallet à l'aide de l'outil oracle avec l'option -create. Le portefeuille est protégé par un mot de passe, mais la propriété « Connexion automatique » ou « autologin » est activée ; ainsi, les utilisateurs qui se connectent à la base de données le feront sans avoir à saisir de mot de passe, ce qui est en principe l'objectif que nous visons avec la création d'un « mot de passe externe sécurisé ».
[oracle@localhost bin]$ mkstore -wrl «/home/oracle/wallet» -create
Oracle Secret Store Tool Release 21.0.0.0.0 – Production
21.3.0.0.0: Versión {1}
Copyright (c) 2004, 2021, Oracle y/o sus subsidiarias. Todos los Derechos Reservados.
Introducir Contraseña:
Volver a Introducir Contraseña:
[oracle@localhost bin]$
Le mot de passe saisi précédemment est celui du fichier wallet ; il est conseillé de le mémoriser et/ou de le conserver en lieu sûr, car Oracle demandera pour pouvoir manipuler les informations qu'il stocke. Oracle crée deux fichiers (cwallet.sso et ewallet.p12).
Le portefeuille est créé avec des autorisations de lecture/écriture uniquement pour l'utilisateur actuel, de sorte qu'aucun autre utilisateur ne peut le lire.
oracle
[oracle wallet]$ ls -rlt
total 8
-rw——-. 1 oracle oracle 27 sept. 19:16 ewallet.p12.lck
-rw——-. 1 oracle oracle 27 sept. 19:16 ewallet.p12
-rw——-. 1 oracle oracle 27 sept. 19:16 cwallet.sso.lck
-rw——-. 1 oracle oracle 27 sept. 19:16 cwallet.sso
Une fois le portefeuille créé, il peut être modifié à l'aide de la commande "mkstore" décrite ci-dessous.
Ajoutez récemment les identifiants (nom d'utilisateur/mot de passe) au portefeuille à l'aide de l'option -createCredential. Pour faire simple, il s'agit ici d'indiquer les identifiants dont nous avons besoin pour nous connecter à la base de données ; ceux-ci seront stockés dans un fichier de mots de passe.
Dans notre cas, nous allons établir une connexion, en suivant cette entrée tnsnames.ora avec l'utilisateur test.
TEST_EXTUSER =
(DESCRIPTION =
(ADDRESS =
(PROTOCOL = TCP)
(HOST = localhost)
(PORT = 1521)
)
(CONNECT_DATA = (server=dedicated) (service_name = srv_testing))
)
Le code est le suivant. Emplacement du portefeuille, informations de connexion à la base de données, identifiant et mot de passe de l'utilisateur avec lequel on souhaite se connecter.
mkstore -wrloracle-createCredential TEST_EXTUSER test testpassword
La sortie de la commande est la suivante, elle vous demandera le mot de passe du portefeuille pour créer les informations d'identification :
[oracle@localhost bin]$ mkstore -wrl «/home/oracle/wallet» -createCredential TEST_EXTUSER test testpassword
Oracle Secret Store Tool Release 21.0.0.0.0 – Production
21.3.0.0.0: Versión {1}
Copyright (c) 2004, 2021, Oracle y/o sus subsidiarias. Todos los Derechos Reservados.
Introducir Contraseña de Cartera:
Une fois le portefeuille généré, nous pouvons nous connecter à la base de données avec le portefeuille généré précédemment. Pour se connecter, nous utiliserons la syntaxe suivante "/@db_alias". où db_alias est la référence à l'entrée du portefeuille que nous avons ajoutée et configurée dans notre fichier tnsnames, dans notre cas : /@@TEST_EXTUSER
[oracle admin]$ sqlplus /@TEST_EXTUSER
SQL*Plus: version 21.0.0.0.0 – Production le dimanche 2 octobre 2022 à 17 h 48 min 52 s
Version 21.3.0.0.0
Copyright (c) 1982, 2021, Oracle. Tous droits réservés.
Heure de la dernière connexion réussie : Dimanche 2 octobre 2022 17:47:12 -04:00
Connecté à :
Oracle 21c Standard Edition 2 Release 21.0.0.0.0 – Production
Version 21.3.0.0.0
SQL>
Une fois que le portefeuille est généré, nous pouvons effectuer plusieurs actions sur le portefeuille généré :
Liste des entrées actuelles dans notre portefeuille
Afficher la liste des entrées que nous avons créées dans le portefeuille. Pour cela, nous ajouterons la syntaxe – listCredential en indiquant le chemin d'accès au portefeuille dont nous souhaitons consulter les informations d'identification ; Oracle demandera alors le mot de passe du portefeuille.
oracle@localhost admin]$ mkstore -wrl «/home/oracle/wallet» -listCredential
Oracle Secret Store Tool Release 21.0.0.0.0 – Production
21.3.0.0.0: Versión {1}
Copyright (c) 2004, 2021, Oracle y/o sus subsidiarias. Todos los Derechos Reservados.
Introducir Contraseña de Cartera:
List credential (index: connect_string username)
1: TEST_EXTUSER test
[oracle@localhost admin]$
Ajout d'une nouvelle connexion d'utilisateur à un Wallet précédemment créé
Si vous souhaitez ajouter une nouvelle connexion à votre Wallet pour vous connecter à la base de données en externe à l'aide d'un « mot de passe externe », il vous suffit d'ajouter le nouvel utilisateur ou une nouvelle chaîne de connexion correspondant à une nouvelle entrée dans votre fichier tnsnames.ora. C'est celle-ci que vous utiliserez pour établir la connexion.
[oracle@localhost admin]$ mkstore -wrl «/home/oracle/wallet» -createCredential RAUL_EXTUSER raul testpassword
Oracle Secret Store Tool Release 21.0.0.0.0 – Production
21.3.0.0.0: Versión {1}
Copyright (c) 2004, 2021, Oracle y/o sus subsidiarias. Todos los Derechos Reservados.
Introducir Contraseña de Cartera:
Si nous listons maintenant les entrées du portefeuille, nous pouvons voir la nouvelle entrée que nous avons ajoutée, à savoir RAUL_EXTUSER, notre entrée de tnsnames.ora.
[oracle@localhost admin]$ mkstore -wrl «/home/oracle/wallet» -listCredential
Oracle Secret Store Tool Release 21.0.0.0.0 – Production
21.3.0.0.0: Versión {1}
Copyright (c) 2004, 2021, Oracle y/o sus subsidiarias. Todos los Derechos Reservados.
Introducir Contraseña de Cartera:
List credential (index: connect_string username)
2: RAUL_EXTUSER raul
1: TEST_EXTUSER test
Nous pouvons tester la connexion.
[oracle admin]$ sqlplus /@RAUL_EXTUSER
SQL*Plus: version 21.0.0.0.0 – Production le dimanche 2 octobre 2022 à 18 h 34 min 07 s
Version 21.3.0.0.0
Copyright (c) 1982, 2021, Oracle. Tous droits réservés.
Heure de la dernière connexion réussie : dimanche 2 octobre 2022 à 18 h 26 min 16 s -04:00
Connecté à :
Oracle 21c Standard Edition 2 Release 21.0.0.0.0 – Production
Version 21.3.0.0.0
Modifier les informations d'identification d'un portefeuille
Les informations d'identification des portefeuilles peuvent être modifiées ; il est possible de changer le mot de passe du portefeuille actuel simplement à l'aide de la syntaxe « modifyCredential ».
[oracle@localhost admin]$ mkstore -wrl "/home/oracle/wallet" -modifyCredential RAUL_EXTUSER raul raulnewpassword
Oracle Secret Store Tool Release 21.0.0.0.0 - Production
21.3.0.0.0: Versión {1}
Copyright (c) 2004, 2021, Oracle y/o sus subsidiarias. Todos los Derechos Reservados.
Introducir Contraseña de Cartera: Retirer des informations d'identification d'un portefeuille
Les informations d'identification d'un portefeuille peuvent être supprimées à l'aide de la commande suivante.
mkstore -wrl <wallet_location> -deleteCredential <db_alias>
[oracle@localhost admin]$ mkstore -wrl "/home/oracle/wallet" -deleteCredential RAUL_EXTUSER
Oracle Secret Store Tool Release 21.0.0.0.0 - Production
21.3.0.0.0: Versión {1}
Copyright (c) 2004, 2021, Oracle y/o sus subsidiarias. Todos los Derechos Reservados.
Introducir Contraseña de Cartera:
[oracle@localhost admin]$ 




