3.6.5. La notion de
délégation
La délégation permet de donner à un
utilisateur particulier un privilège, sans donner ce privilège
à toutes les personnes ayant le même rôle que lui. La
délégation, bien que très utilisée, est très
peu modélisée dans les politiques de sécurité car
ce concept est très complexe.
En effet, grâce à une délégation,
une permission peut être donnée par le détenteur d'un droit
à un tiers pour agir à sa place ou à la place d'un autre.
On voit déjà ici apparaître qu'une délégation
peut faire intervenir plusieurs parties :
§ le sujet qui possède le privilège,
§ le sujet a qui on délègue le
privilège,
§ le sujet qui délègue le privilège
(pour agir à sa place ou à la place d'un autre).
Il existe trois types de situation dans lesquelles la notion
de délégation apparaît :
§ la maintenance d'un rôle,
§ la décentralisation de l'autorité,
§ le travail de collaboration.
La maintenance d'un rôle correspond au cas où un
utilisateur doit déléguer une partie de ses permissions afin
qu'on puisse remplir toutes ses obligations pendant son absence. La
décentralisation de l'autorité est surtout utile dans le cas
où on modifie une partie de l'organisation. En pratique, ce cas peut
correspondre à l'ouverture d'un nouvel hôpital dans lequel on va
transférer une partie des médecins exerçant dans les
autres hôpitaux de la région. Le cas du travail en collaboration
est évident, si on souhaite que notre partenaire puisse lire les
documents que l'on possède sur un projet donné, il faut lui en
donner l'autorisation.
Cependant, la délégation pose de nombreux
problèmes. Entre autre, un utilisateur X ayant obtenu tous les droits
d'un autre utilisateur Y peut ôter les droits à Y si X
possède certains droits administratifs. Il peut aussi arriver que l'on
oublie de révoquer une délégation faite à Z et qui
n'a plus d'utilité d'être, ce qui peut laisser la
possibilité à Z de se faire passer pour quelqu'un d'autre. C'est
l'une des raisons pour lesquelles il est important de définir deux types
de permission, celles qui sont délégables et celle qui ne peuvent
l'être.
De plus, la délégation est liée à une
multitude de notions :
§ délégation
temporaire/permanente : il faut tout d'abord distinguer les
délégations temporaires ou permanentes. En effet, on peut
souhaiter qu'un utilisateur ait de façon permanente un droit, afin de ne
pas à avoir à renouveler sans cesse ce droit ;
§ délégation
monotone/non-monotone : c'est le droit de conserver son
privilège quand on le délègue. Dans le cas où la
délégation est monotone, la personne qui délègue le
droit conserve ce droit. Tandis que si la délégation est
non-monotone, la personne qui délègue un droit perd ce
droit ;
§ délégation
"grant-dependant"/"grant-independant" : dans le cas, où la
délégation est temporaire et monotone, alors il faut alors
choisir quelles sont les personnes susceptibles de révoquer les droits
sous-délégués. Si on autorise uniquement la personne ayant
déléguée originellement le droit à révoquer
un droit délégué, alors on dit que c'est une
délégation de type "grant-dependant". Si on autorise toute
personne X ayant délégué un droit, avant que Y ait
reçu ce droit par délégation, à révoquer ce
droit à Y, alors on dit que la délégation est de type
"grant-independant". Ce dernier type de délégation permet
d'ôter rapidement un droit à une personne qui peut être
malveillante, sans avoir à retrouver qui était à l'origine
de la délégation (ce qui peut être très fastidieux
si l'organisation est importante) ;
§ délégation
totale/partielle : On peut choisir de déléguer
partiellement ou totalement un ensemble de droits. Lorsque l'on souhaite
déléguer la totalité de ses droits à quelqu'un, par
exemple son remplaçant, alors on applique une délégation
totale. Par contre, si on ne veut donner qu'une partie de ces droits, pour
déléguer juste une tâche à quelqu'un, alors on a une
délégation partielle ;
§ délégation par
agent/auto-active : il y a deux façons d'administrer la
délégation, si une personne X veut déléguer un
droit à Y. La première solution est que c'est X qui administre la
délégation. C'est la délégation auto-active. La
deuxième solution est que X demande à un agent d'affecter ce
droit à Y. C'est la délégation par agent. L'agent pouvant
être n'importe quelle tierce personne dans l'organisation.
Généralement, l'agent ne peut pas s'affecter les droits qu'il
gère. Il est possible de définir le nombre de
sous-délégation possible ;
§ délégation à
un-pas/à pas-multiple : dans la délégation
à n-pas, un même droit pourra être
délégué à une chaine de n personnes. Par exemple, X
délègue à Y un droit D à 2-pas et Y
délègue D à 1-pas à Z.
§ délégation
simple/multiple : de plus, il faut choisir si lorsqu'on autorise
une personne à déléguer, elle peut elle-même
déléguer son droit à une unique personne, ou à
plusieurs personnes (c'est la délégation multiple).
§ délégation par accord
unilatéral/bilatéral : pour déléguer
un droit, il faut qu'au moins une personne donne son accord. On peut envisager
deux types d'accord pour la délégation. L'accord
unilatéral ne prend en compte que la décision de la personne
désirant déléguer son droit. L'accord bilatéral
vérifie que les deux parties, celle qui délègue et celle
qui reçoit, sont d'accord.
§ révocation de la
délégation simple/en cascade : si la
délégation est temporaire, il faut pouvoir la révoquer. On
a pu voir précédemment deux types de délégation
jouant sur la révocation. Lorsque la délégation est
"grant-dependant" alors seule la personne à l'origine de la
délégation peut ôter ce droit. Quand la
délégation est de type "grant-indépendant" seules les
personnes ayant engendré la délégation d'un droit à
une personne peuvent lui révoquer ce droit. Cependant, la personne, dont
les droits ont été révoqués, a peut être pu
déléguer ce droit auparavant. Cette situation peut poser des
problèmes dans certains cas. Selon le type de délégation,
la personne ayant était déchue d'un droit peut
récupérer ce droit grâce à une personne à qui
elle aurait délégué le droit. Pour anticiper ce
problème, on peut créer deux types de révocation. Un
premier type permet de ne révoquer le droit qu'à une personne
désignée. Le deuxième type permet de révoquer le
droit sur une personne, ainsi que sur toutes les personnes ayant reçu ce
droit par délégation, c'est une révocation en cascade.
La délégation a de multiples avantages et offre
de nombreuses possibilités. Cependant, il apparaît que si on
l'autorise à mauvais escient, alors elle peut aller à l'encontre
de la politique. En effet, la révocation d'une délégation
permet à une personne d'ôter un droit D à une personne X.
Mais que se passe-t-il lorsque la personne X possède ce droit avant la
délégation? Des personnes mal intentionnées pourraient
ainsi utiliser la délégation afin d'effectuer des
révocations qu'ils n'avaient pas le droit de faire. D'où
l'importance de bien administrer sa politique de contrôle d'accès,
si la délégation est mise en place.
|