Dans de nombreuses occasions, il est nécessaire ou souhaitable de se connecter à la base de données rapidement et surtout en toute sécurité, sans que les détails de la connexion à la base de données ne soient visibles. Un exemple, comme indiqué sur votre page Oracle, est la connexion à la base de données à partir de scripts shell contenus dans le système de fichiers. Si ces scripts contiennent les détails de la connexion, cela peut constituer un problème de sécurité majeur. Pour cet exemple ou d'autres similaires, nous pouvons utiliser l'authentification propre au système d'exploitation, mais à partir d'Oracle 10g Release2, nous avons la possibilité d'utiliser un magasin de mots de passe externe sécurisé, en stockant les identifiants de connexion Oracle dans un portefeuille stocké côté client. Pour comprendre, ce qui est créé est un fichier avec les informations d'identification pour se connecter à la base de données stockée sur le côté client, qui dans la chaîne de connexion indiquera où ce "fichier" est situé pour se connecter. Cela permettra à l'utilisateur de se connecter en suivant la syntaxe "/@alias", l'alias étant le nom choisi pour la connexion à la base de données.
Configuration d'un magasin de mots de passe externe sécurisé
Tout d'abord, nous devons choisir l'endroit où nous voulons sauvegarder le portefeuille Oracle, c'est-à-dire l'endroit où le fichier portefeuille sera stocké avec les données de connexion qu'Oracle lira pour se connecter à la base de données avec 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 laisser le portefeuille Oracle sur le home oracle de notre machine cliente.
mkdir -p /home/oracle/wallet
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.
export TNS_ADMIN=/u01/app/oracle/21.0.0/oracle/network/admin
Ajoutez l'entrée suivante dans le fichier sqlnet.ora, situé dans le chemin TNS_ADMIN, dans notre cas "/u01/app/oracle/21.0.0/oracle/network/admin/sqlnet.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 = /home/oracle/wallet)
)
)
SQLNET.WALLET_OVERRIDE = TRUE
SSL_CLIENT_AUTHENTICATION = FALSE
SSL_VERSION = 0
À ce stade, nous pouvons créer le portefeuille à l'aide de l'outil oracle mkstore avec l'option -create. Le portefeuille est protégé par un mot de passe, mais il est défini avec la propriété "autologin" activée, de sorte que les utilisateurs qui se connectent à la base de données le font sans avoir besoin d'un mot de passe, ce qui est en principe l'objectif que nous recherchons 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 utile de s'en souvenir et/ou de le conserver en lieu sûr car Oracle le demandera pour manipuler les informations qu'il stocke. Oracle mkstore crée deux fichiers (cwallet.sso, 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.
/home/oracle/wallet
[oracle@localhost wallet]$ ls -rlt
total 8
-rw---. 1 oracle oracle 0 sep 27 19:16 ewallet.p12.lck
-rw---. 1 oracle oracle 149 sep 27 19:16 ewallet.p12
-rw---. 1 oracle oracle 0 sep 27 19:16 cwallet.sso.lck
-rw---. 1 oracle oracle 194 sep 27 19:16 cwallet.sso
Une fois le portefeuille créé, il peut être modifié à l'aide de la commande "mkstore" décrite ci-dessous.
Ajoutez les informations d'identification de l'utilisateur et du mot de passe au portefeuille en utilisant récemment l'option -createCredential. Pour simplifier, à ce stade, nous devons indiquer les informations d'identification dont nous avons besoin pour nous connecter à la base de données et qui seront stockées dans le 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))
)
La phrase est la suivante. Emplacement du portefeuille, entrée de la connexion à la base de données, utilisateur et mot de passe de l'utilisateur avec lequel la connexion doit être établie.
mkstore -wrl "/home/oracle/wallet" -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@localhost admin]$ sqlplus /@TEST_EXTUSER
SQL*Plus : Release 21.0.0.0.0 - Production on Sun Oct 2 17:48:52 2022
Version 21.3.0.0.0.0
Copyright (c) 1982, 2021, Oracle. Tous droits réservés.
Dernière heure de connexion réussie : Sun Oct 02 2022 17:47:12 -04:00
Connecté à :
Oracle Database 21c Standard Edition 2 Release 21.0.0.0.0 - Production
Version 21.3.0.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
Lister les entrées que nous avons créées dans le portefeuille. Pour ce faire, nous ajouterons la syntaxe - listCredential en pointant sur le chemin du portefeuille où nous voulons voir les informations d'identification, Oracle nous demandera 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 nous voulons ajouter une nouvelle connexion à notre Wallet pour nous connecter à la base de données de manière externe en utilisant le "mot de passe externe", il suffit d'ajouter le nouvel utilisateur ou une nouvelle chaîne de connexion qui correspond à une nouvelle entrée dans votre tnsnames.ora. Ce sera celle 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@localhost admin]$ sqlplus /@RAUL_EXTUSER
SQL*Plus : Release 21.0.0.0.0 - Production on Sun Oct 2 18:34:07 2022
Version 21.3.0.0.0.0
Copyright (c) 1982, 2021, Oracle. Tous droits réservés.
Dernière heure de connexion réussie : Sun Oct 02 2022 18:26:16 -04:00
Connecté à :
Oracle Database 21c Standard Edition 2 Release 21.0.0.0.0 - Production
Version 21.3.0.0.0.0.0
Modifier les informations d'identification d'un portefeuille
Les informations d'identification du portefeuille peuvent être modifiées, nous pouvons changer le mot de passe du portefeuille actuel simplement avec la sitaxis "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]$