Le blog d'Oracle en espagnol

Stockage sécurisé des mots de passe externes

Il est souvent nécessaire ou conseillé de se connecter à la base de données rapidement et surtout en toute sécurité, sans que les détails de connexion à la base de données soient visibles. Un exemple, comme indiqué sur la page Oracle, est lorsque nous nous connectons à la base de données à partir des scripts Shell contenus dans le système de fichiers. Si ces scripts contiennent les détails 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 d'Oracle 10g Release2, nous avons la possibilité d'utiliser un stockage de mots de passe externe sécurisé, en enregistrant les identifiants de connexion Oracle dans un portefeuille stocké côté client. Pour comprendre, ce qui est créé est un fichier contenant les identifiants de connexion à la base de données stockés côté client, qui indiquera dans la chaîne de connexion où se trouve ce « fichier » pour se connecter. Cela permettra à l'utilisateur de se connecter en suivant la syntaxe suivante « /@alias », 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 où nous voulons enregistrer le portefeuille Oracle, c'est-à-dire l'emplacement où sera stocké le fichier portefeuille contenant les données de connexion qu'Oracle lira pour nous connecter à la base de données avec la syntaxe suivante « /@alias ».

Remarque : 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 Oracle Wallet dans le répertoire d'accueil 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

Nous ajoutons 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é « Connexion automatique » ou « autologin » 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 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]$

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

Répertorier les 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 sur lequel nous voulons voir les identifiants. 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
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]$  
Etiquetas:
Artículo siguiente
Oracle ACE