6 mars 2025

Wallet Oracle et SQLPlus

Créer un wallet Oracle permet d'y stocker les mots de passe de coinnexion, et ainsi d'éviter de retrouver des sqlplus HR/PASSWORD dans les scripts d'exploitation

Exemple (sur une machine disposant du client Oracle)

La base est HR9DEV hébergée par le serveur HOST_HR9DEV, les comptes HR et JETSPEED. Nous allons créer des alias HR9DEV_HR et HR9DEV_JETSPEED.

Les commandes permettent d'indiquer le mot de passe en ligne. Pour éviter qu'il ne soit accessible dans l'historique de commande, préférer répondre à la question  qui sera posée.

mkdir $HOME/.wallet

chmod 700 $HOME/.wallet

cd $HOME/.wallet

mkstore -wrl . -create

Oracle Secret Store Tool Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
Copyright (c) 2004, 2019, Oracle and/or its affiliates. All rights reserved.
Enter password: *******
Enter password again: *******

mkstore -wrl . -createCredential HR9DEV_JETSPEED JETSPEED

Oracle Secret Store Tool Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
Copyright (c) 2004, 2019, Oracle and/or its affiliates. All rights reserved.
Your secret/Password is missing in the command line
Enter your secret/Password: ***
Re-enter your secret/Password: ***
Enter wallet password: *******

mkstore -wrl . -createCredential HR9DEV_HR HR

Oracle Secret Store Tool Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
Copyright (c) 2004, 2019, Oracle and/or its affiliates. All rights reserved.
Your secret/Password is missing in the command line
Enter your secret/Password: ***
Re-enter your secret/Password: ***
Enter wallet password: *******

ls -l
-rw------- 1 hr9ce1 hr 949 Mar 7 17:15 cwallet.sso
-rw------- 1 hr9ce1 hr 0 Mar 7 17:12 cwallet.sso.lck
-rw------- 1 hr9ce1 hr 904 Mar 7 17:15 ewallet.p12
-rw------- 1 hr9ce1 hr 0 Mar 7 17:12 ewallet.p12.lck

Pour lister le contenu du wallet :

mkstore -wrl . -listCredential
Enter wallet password: *******
List credential (index: connect_string username)
2: HR9DEV_JETSPEED JETSPEED
1: HR9DEV_HR HR

Pour modifier ou supprimer :
mkstore -wrl . -modifyEntry <alias>
mkstore -wrl . -deleteEntry <alias>

Paramétrage SQLNet :

echo "WALLET_LOCATION =
(SOURCE =
(METHOD = FILE)
(METHOD_DATA = (DIRECTORY = $PWD))
)
SQLNET.WALLET_OVERRIDE = TRUE" > sqlnet.ora


echo "HR9DEV_JETSPEED=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=HOST_HR9DEV)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=HR9DEV)))" >> tnsnames.ora

echo "HR9DEV_HR=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=HOST_HR9DEV)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=HR9DEV)))" >> tnsnames.ora


Test de SQLPLUS (si vous n'êtes pas dans le répertoire du wallet, remplacer $PWD par son chemin)

TNS_ADMIN=$PWD sqlplus /@HR9DEV_HR
SQL> show user
USER is "HR"

TNS_ADMIN=$PWD sqlplus /@HR9DEV_JETSPEED
SQL> show user
USER is "JETSPEED"

Test avec le SQLoader :

TNS_ADMIN=$PWD sqlldr userid=/@HR9DEV_HR control=$TMP/ctl.sqlldr data=$TMP/data.sqlldr

SQL*Loader: Release 19.0.0.0.0 - Production on Mon Mar 10 12:09:39 2025
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.

Path used:      Conventional
Commit point reached - logical record count 2

Table EMPLOYEE:
  2 Rows successfully loaded.


Pour ne pas avoir à spécifier TNS_ADMIN à chaque fois, vous pouvez créer un alias, une fonction ou un script Unix. Si vous choisissez d'exporter la variable dans le .profile attention aux effets de bord car les fichiers sqlnet.ora et tnsnames.ora sont habituellement initialisés par l'équipe technique lors de la création et du paramétrage de l'environnement.

Bien évidemment, il faut s'assurer de la sécurité d'accès à ces fichiers wallet

Aucun commentaire:

Enregistrer un commentaire