Introduction

La configuration réseau sous Oracle, Oracle*Net, utilise classiquement 3 fichiers :

  • listener.ora
  • tnsnames.ora
  • sqlnet.ora

Le premier contient la configuration du listener, le second les configurations de résolution tnsnames type sqlplus scott/tiger@yoda...

Tout ceci est assez bien connu. Ce qui l'est moins c'est le rôle du fichier sqlnet.ora. Ce billet présente l'option SQLNET.AUTHENTIFICATION_SERVICES qui permet de gérer au mieux l'authentification AS SYSDBA.

Contenu du fichier sqlnet.ora

L'option la plus classique est la méthode de résolution des noms de connexion

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

La méthode tnsnames est appliquée avant la résolution easy-connect.

L'option SQLNET.AUTHENTIFICATION_SERVICES peut prendre différentes valeurs, les plus intéressantes sont NTS et NONE.

SQLNET.AUTHENTIFICATION_SERVICES=NTS est obligatoire sous Windows afin de pouvoir se connecter en sysdba sans mot de passe -> authentification par OS. Sous Linux la valeur importe peu. Pour cela un seul impératif, le user doit sous Windows faire parti du groupe ORA_DBA, sous Linux du groupe dba.

Si on souhaite interdire la connexion AS SYSDBA en cas d'absence de fichier de mot de passe ( utilitaire orapwd ), il suffit de mettre la valeur NONE

SQLNET.AUTHENTIFICATION_SERVICES=NONE

Sous Linux il faut en plus retirer le user oracle des groupes dba et oper.

Ainsi le fichier de mot de passe est obligatoire et il est impossible de se connecter en AS SYSDBA sinon.

Conclusion

Le fichier sqlnet.ora contient de nombreuses options notamment sur l'optimisation, la sécurisation ou la trace des connexions réseau. Lire la doc oracle sur le sujet. Je conseille aussi L'article suivant