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
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 :
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"
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