|
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.
|