
En muchas ocasiones es necesario o aconsejable conectarte a la base de datos de manera rápida y sobre todo segura, sin que los detalles de conexión de la base de datos sean visibles. Un ejemplo, tal y como indica en su página Oracle, es cuando nos conectamos a la base de datos desde los scripts de Shell contenidos en el sistema de archivos. Si estos scripts contienen los detalles de conexión pueden ser un problema de seguridad bastante importante. Para este ejemplo u otros similares, podemos usar la autentificación propia del sistema operativo, pero a partir de Oracle 10g Release2, nos da la opción de usar un almacén de contraseñas externo seguro, guardando las credenciales de inicio de la sesión de Oracle en un wallet guardado en el lado del cliente. Para entenderlo, lo que se crea es un fichero con las credenciales para conectarnos a la base de datos guardados en el lado del cliente, que en la cadena de conexión indicará donde se encuentra este “fichero” para conectarnos. Esto permitirá al usuario conectarse siguiendo la sintaxis siguiente “/@alias”, siendo alias el nombre elegido para la conexión a la base de datos.
Configuration d'un magasin de mots de passe externe sécurisé
En primer lugar debemos elegir donde queremos guardar el Oracle wallet, es decir es el lugar donde se almacenará el fichero de wallet con los datos de conexión que Oracle leerá para conectarnos a la base de datos con la sintáxis siguiente “/@alias”.
Note : L'emplacement peut être un répertoire commun auquel plusieurs utilisateurs ont accès pour se connecter à la base de données.
En nuestro caso, al tratarse de una prueba vamos a dejar el Oracle Wallet en el home de oracle de nuestra máquina 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
Añadimos la entrada siguiente en el fichero sqlnet.ora, ubicado dentro de la ruta TNS_ADMIN, en nuestro caso “/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
En este punto ya podemos crear el wallet con la herramienta oracle mkstore con la opción -create. El wallet está protegido con contraseña, pero es definido con propiedad “Inicio de sesión automático” o «autologin» habilitada , de esta forma los usuarios que se conecten a la base de datos lo harán sin que se requiera una contraseña, que es en principio la meta que buscamos con la creación de “secure external password”.
[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]$
La password introducida con anterioridad es la del fichero wallet, es conveniente recordarla y/o guardarla a buen recaudo porque Oracle la pedirá para poder manipular la información que almacena. Oracle mkstore crea dos ficheros (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
Copyright (c) 1982, 2021, Oracle. All rights reserved.
Last Successful login time: Sun Oct 02 2022 17:47:12 -04:00
Connected to:
Oracle Database 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
Listar las entradas que hemos creado en el wallet. Para ello añadiremos la sintásis – listCredential apuntando a la ruta del wallet sobre el que queremos ver las credenciales, Oracle nos pedirá la password del Wallet.
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
Copyright (c) 1982, 2021, Oracle. All rights reserved.
Last Successful login time: Sun Oct 02 2022 18:26:16 -04:00
Connected to:
Oracle Database 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 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]$ 




