Les Wallet Oracle permettent de sécuriser les connexions à la base. Il s'agit de 2 fichiers cryptés en Triple-DES manipulables qu’avec des binaires Oracle ( l'outil mkstore). Ces fichiers contiennent l’association d'un nom de service Oracle à un compte oracle et son mot de passe.
Ainsi, pour se connecter au service il suffit d'indiquer uniquement le nom du service. Oracle détermine alors via les wallets le compte oracle à utiliser et le mot de passe de celui-ci :
Dans cet article, je vais vous présenter comment mettre en place ce mécanisme et comme l'utiliser dans SAS.
Ce qui donne la création de deux fichiers :
Maintenant que nos fichiers de wallets sont créés, nous allons pouvoir y ajouter une association SERVICE, LOGIN et MOT DE PASSE, via la commande ci-dessous :
Avant de continuer, vérifions la bonne prise en compte des credentials dans le wallet :
Ce fichier sqlnet.ora est copié au dans le répertoire définit dans la variable d'environnement TNS_ADMIN (dans mon cas /opt/sas/install/AccessClients/9.4/OracleInstantClient/instantclient_12_2)
Les connexions se font maintenant en utilisant la wallet.
Notez qu'il est toujours possible de se connecter via un couple login/password :
La connexion via un couple user/password est toujours possible :
Depuis le serveur Oracle, l'audit des sessions montre que la connexion via le wallet utilise bien le compte sasuser :
-> Vérifier la présence et les droits des fichiers wallets
ERROR: ORACLE connection error: ORA-01017: invalid username/password; logon denied.
-> Ce message d'erreur montre que l'utilisation des wallets n'est pas prise en compte. Vérifier la configuration et/ou la présence de votre fichier sqlnet.ora
ERROR: ORACLE connection error: ORA-01005: null password given; logon denied.
Dans cet exemple, j'ai ajouté l'option user. Cela a pour impact de ne pas utiliser les wallets. Un mot de passe est donc demandé.
1
sqlplus /@XE
1
SQL> show user;
Dans cet article, je vais vous présenter comment mettre en place ce mécanisme et comme l'utiliser dans SAS.
Création du wallet
Vous vous en doutez la première étape consiste à créer le wallet qui servira au stockage des informations de connexion. La commande pour créer une wallet est la suivante : mkstore –wrl [EMPLACEMENT_FICHIERS] – create1
mkstore -wrl . -create
1
mkstore -wrl . -createCredential XE sasuser motdepasse
1
mkstore -wrl . -listCredential
Configuration du client Oracle
Les opérations ci-dessous sont effectuée sur le serveur SAS. La première étape consiste à copier les fichiers de wallets dans un répertoire accessible par SAS. Dans mon cas je copie les wallets dans la home directory de mon utilisateur. La deuxième étape consiste à créer un fichier sqlnet.ora indiquant qu'il est possible d'utiliser les wallets pour la connexion :1
2
3
2
3
WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = /home/sas/ )))
SQLNET.WALLET_OVERRIDE = TRUE
SSL_CLIENT_AUTHENTICATION = FALSE
SQLNET.WALLET_OVERRIDE = TRUE
SSL_CLIENT_AUTHENTICATION = FALSE
1
sqlplus scott/tiger@XE
Connexion à la base depuis une sessionInstance de connexion active entre un client et le serveur CAS (Cloud Analytic Services), isolant les ressources, les bibliothèques et les traitements d'un utilisateur au sein de SAS Viya. SAS
Maintenant que la connexion via les wallets fonctionnent en dehors de SAS, se connecter à Oracle via SAS/ACCESS interface to Oracle et en utilisant ce mécanisme est simple. Il suffit d'utiliser la syntaxe ci-dessous :1
libname myora oracle path="XE"
La connexion via un couple user/password est toujours possible :
1
libname orascott oracle path="XE" user="scott" password="tiger";
1
select a.spid || ' | ' || b.sid || ' | ' || b.machine || ' | ' || b.username || ' | ' || b.server || ' | ' || osuser from v$session b, v$process a where b.paddr = a.addr and type='USER' order by spid;
Quelques erreurs
ERROR: ORACLE connection error: ORA-12578: TNS:wallet open failed.
-> Vérifier la présence et les droits des fichiers wallets
ERROR: ORACLE connection error: ORA-01017: invalid username/password; logon denied.
-> Ce message d'erreur montre que l'utilisation des wallets n'est pas prise en compte. Vérifier la configuration et/ou la présence de votre fichier sqlnet.ora
ERROR: ORACLE connection error: ORA-01005: null password given; logon denied.
Dans cet exemple, j'ai ajouté l'option user. Cela a pour impact de ne pas utiliser les wallets. Un mot de passe est donc demandé.






