Domino Références : Site francophone de ressources pour les développeurs Lotus Notes / Domino Domino Références
Site francophone de ressources pour les développeurs Notes/Domino
Annuaire Articles Forums Contact
Recherche
 
Mot exact résultats
Au Sommaire ...
Annuaire commenté des sites traitant de Lotus Notes/Domino
Articles d'actualité
Les forums de discussion
Une remarque, une critique, un encouragement. N'hésitez pas à me contacter.
The Team that meets in Forum.
Newsletter
email:   
s'abonner se désabonner 
Statistiques
 Stats du site

 

Securite : qui execute l'agent?
par Lionel

Les didacticiels abordent rarement la problematique de la securite aussi tot dans l'apprentissage de LotusScript. Je crois que c'est une erreur. Si on parlait plus souvent et plus systematiquement de securite on eviterait de nombreuses breches. Si vous n'etes pas convaincus, faites donc un tour sur le site de Kitetoa. Vous y decouvrirez les consequences desastreuses que peuvent engendrer un serveur Domino mal configure hebergeant des applications developpees a la va-vite par des developpeurs peu experimentes.

Pour l'instant, interessons-nous plutot a notre petit agent. Pour le serveur, qui execute l'agent? Voila une question essentielle que vous devriez vous poser : Quels seront donc les droits accordes a l'agent? La reponse a cette question determine par exemple le nombre de documents sur lesquels l'agent va agir, ce qui pose des questions de securite evidentes.

La reponse a cette question nous est donnee par deux proprietes de la classe NotesSession, EffectiveUserName et UseName illustrees dans l'exemple suivant :

Sub Initialize
'
Dim S As New NotesSession
'
Print S.EffectiveUserName
Print |</p>|
'
Print S.UserName
Print |</p>|

'
End Sub

Cet exemple appelle quelques commentaires :

  • EffectiveUserName : c'est le nom du proprietaire du script, c'est a dire de celui qui l'a ecrit et signe. Mais c'est egalement le nom dont va dependre les droits et possibilites effectives de l'agent.
  • UserName : c'est le nom de l'utlisateur courant. Pour un agent execute par un client web, c'est touhours le nom du serveur.

Bon, maintenant testons notre agent. Pour cela nous allons utiliser le compte test de l'utilisateur "Test Domino". Et voici dont ce que produit l'execution de notre agent a l'aide d'un client web:

Que constatons-nous?

  • EffectiveUserName = nom du createur de l'agent, et dans cas, l'administrateur egalement.
  • UserName = nom du serveur.

Ce qui signifie tres clairement que notre utilisateur lambda, nomme "Test Domino", agit avec les privileges du developpeur, c'est a dire avec un acces certainement tres large aux donnees.

Si vous voulez que l'agent soit execute avec les privileges de l'utliisateur, voici ce qu'il convient de faire :

  • Dans Domino Designer, affichez la liste des agents
  • Selectionnez votre agent, puis ouvrez la boite des proprietes.
  • Cliquez sur le troisieme onglet
  • En bas de la boite de dialogue, cochez la case "Run Agent as Web user", comme l'indique la copie d'ecran suivante :

Et maintenant voyons ce que donne l'execution de notre agent :

La valeur de EffectiveUserName a change et c'est maintenant celle de l'utilisateur courant.

En conclusion, que faut-il penser de tout ceci? Faut-il systematiquement executer les agents en tant qu'utilisateur web ou non? Je vous repondrai en vous disant qu'a mon avis le plus important est de toujours savoir ce que l'on fait et qu'en consequence peut importe ce que vous choisissez, pourvu que vous en ayez mesure les risques et les avantages. Car il peut-etre pertinent et necessaire de faire executer un agent avec des droits eleves. Tout depend du contexte.


Mise à jour: 18/09/2003
Conception: Lionel, 2001-2002