• Aucun résultat trouvé

Contrôle d’accès dans les systèmes d’information

2.8 Patrons de contrôle d’accès

Dans le cadre du travail de cette thèse, le langage ASTD est utilisé non pas pour formaliser le comportement d’un système d’information mais pour modéliser des po-litiques de contrôle d’accès. Dans ce cas, une spécification précise le comportement autorisé pour les utilisateurs du système suivant les privilèges de ceux-ci. Pour y arri-ver toutes les transitions de la spécification sont pourvues, en plus de leurs paramètres métiers, de paramètres de contrôle d’accès. Ces paramètres peuvent inclure l’utilisa-teur qui initie l’action, son rôle dans le système ou d’autres attributs de celui-ci. Les paramètres de contrôle d’accès sont utilisés pour exprimer des contraintes limitant l’accès des utilisateurs, par exemple dans les prédicats associés aux transitions. Les patrons sont un moyen de catégoriser les règles de contrôle d’accès les plus fréquem-ment utilisées. Il faut noter que le langage ASTD permet, de façon libre, l’expression de contraintes plus générales. Dans les exemples qui suivent, on considère un système d’information simplifié d’une banque qui comporte les actions : deposit (dépôt d’un chèque), validate (validation d’un dépôt de chèque), cancel (annulation d’un dépôt de chèque), register (enregistrement d’un client avec un caissier). Les paramètres de contrôle d’accès considérés sont l’identifiant de l’utilisateur ainsi que le rôle de celui-ci. Les événements sécurisés sont donc notés t(�u, r�, �→x)[„], où t est l’événement à exécuter, u et r respectivement l’utilisateur qui initie l’événement et son rôle actif, �→x les paramètres métiers de l’événement t et „ une garde optionnelle de cet événement.

Une permission permet d’autoriser l’exécution d’une action. La forme d’une spé-cification ASTD pour une permission est présentée dans la figure 2.3a. L’exécution d’une transition ti (1 ≤ i ≤ n) est permise si le prédicat „i s’évalue à la valeur vrai. La figure 2.3b illustre une instance de ce patron. Dans ce cas, l’action deposit est autorisée pour les caissiers (cashier) et l’action cancel pour les chefs d’agence (head office). Dans cette règle, la valeur spéciale « _ » est utilisée pour signifier que n’importe quelle valeur est acceptée pour le paramètre correspondant.

Une interdiction empêche l’exécution d’une action. Le patron ASTD pour cette catégorie de règles utilise une structure ASTD garde. Cette garde comporte un

prédi-2.8. Patrons de contrôle d’accès permission, � aut

q0q1

t1(�u1, r1�; �→x1)[„1]

tn(�un, rn�;�→xn)[„n]

(a) Patron pour la permission

permission, � aut

q0 q1

deposit(�_, cashier�; _,_,_)

cancel(�_, head office�; _)

(b) Instance du patron permission

Figure 2.3 – Patron ASTD pour la permission

cat qui permet de spécifier la prohibition sous une certaine condition portant sur les paramètres de contrôle d’accès ou métiers. La figure 2.4a illustre le patron de l’inter-diction. L’action ti (1 ≤ i ≤ n) n’est exécutée que si le prédicat p s’évalue à la valeur

vrai. La variable v peut être n’importe laquelle des variables apparaissant dans les

transitions ou dans le prédicat p. Une instance du patron interdiction est représenté à la figure 2.4b. Elle spécifie la règle de contrôle d’accès : les actions deposit, cancel et validate sont interdites pour les utilisateurs ayant le rôle client (customer).

Les obligations constituent une autre catégorie de règle de contrôle d’accès. Une obligation représente la contrainte de l’exécution d’une action — possiblement non immédiatement — après l’exécution d’une première action. Les deux actions sont

interdiction, � � v ∶ T ⇒, p aut

q0q1

t1(�u1, r1�; �→x1)

tn(�un, rn�; �→xn)

(a) Patron pour l’interdiction

interdiction, �

� r ∶ Roles ⇒, r ≠ customer aut

q0 q1

deposit(�_, r�; _,_, _)

cancel(�_, r�;_)

validate(�_, r�; _)

(b) Instance du patron interdiction

obligation, 9 �→x1∶ T1, �x2∶ T2

� u ∶ U aut

q0 q1 q2

t1(�u, r�;�→x1)

t2(�u, _�;�→x2)

(a) Patron pour l’obligation

obligation, 9clId ∶ CLID

� u ∶ U aut

q0 q1

register(�u,cashier�; clId)

deposit(�u,cashier�; clId, _, _)

deposit(�_,head office�;clId,_,_)

(b) Instance du patron obligation

Figure 2.5 – Patron ASTD pour l’obligation

souvent liées par les valeurs de leurs paramètres. La figure 2.5a montre le patron ASTD pour les obligations. L’action t2 doit être exécutée après l’action t1 pour le même utilisateur u. Les paramètres métiers respectifs �x1 et �x2 des événements t1 et

t2 sont généralement liés par une relation implicite ou explicite. Dans l’exemple de la banque, pour des raisons de discrétion un client doit être enregistré avec un caissier et seul ce caissier ou un chef d’agence peut effectuer des dépôts de chèque pour ce client. Cette règle est spécifiée par la structure ASTD de la figure 2.5b. Dans cette figure, l’obligation apparaît par l’utilisation des paramètres u pour l’utilisateur et clId pour l’identifiant du client. La relation entre les paramètres métiers des événements register et deposit est explicite : c’est l’égalité sur l’identifiant du client de la banque concerné par les événements.

La dernière catégorie de règles est la séparation des devoirs (SoD). Elle est couram-ment utilisée pour attribuer à des utilisateurs distincts la responsabilité de l’exécution des parties d’un processus vulnérable pour le système d’information. La figure 2.6a illustre le patron ASTD pour les SoD d’un processus composé des actions t1 et t2. Le prédicat u ≠ u associé à l’action t2 impose l’exécution de celle-ci par un utilisateur u

différent de l’utilisateur u qui exécute l’action t1. Le patron ici porte sur les utilisa-teurs, mais le même principe peut être appliqué sur un autre paramètre de contrôle d’accès. Par exemple, l’exécution des différentes parties du processus vulnérable peut être confiée à des rôles distincts. Comme dans le cas des obligations, les paramètres

2.9. Conclusion sod, 9 �→x1∶ T1, �x2∶ T2 � u ∶ U � u∶ U aut q0 q1 q2 t1(�u, r�; �→x1) t2(�u, r�;�→x2)[u ≠ u′] (a) Patron pour SoD

sod, 9clId ∶ CLID 9ckId ∶ CKID

� u ∶ U � u∶ U aut

q0 q1 q2

deposit(�u, _�; clId, ckId,_)

validate(�u,_�; ckId)[u ≠ u′] (b) Instance du patron SoD

Figure 2.6 – Patron ASTD pour la séparation des devoirs

métiers �x1et �x2 sont généralement liés de manière implicite ou explicite. La figure 2.6b présente un exemple de ce patron. Cette spécification formalise une règle de contrôle d’accès de la banque qui interdit le dépôt d’un chèque et sa validation par le même utilisateur.

Pour obtenir la politique complète de contrôle d’accès d’un système d’information, il faut combiner les différentes règles. Cela se fait avec l’utilisation de certaines struc-tures ASTD telles que la synchronisation paramétrée et la synchronisation quantifiée.

2.9 Conclusion

Cette présentation des modèles de contrôle d’accès aux ressources d’un système les plus fréquemment rencontrés dans la littérature scientifique a permis, d’une part, de positionner le modèle EB3SEC et, d’autre part, de retenir qu’une combinaison de deux modèles, soit un modèle à la RBAC pour des politiques de contrôle d’accès statique et un modèle à la EB3SEC, (mais reformulé dans la notation ASTD) pour les politiques de contrôle d’accès dynamique, constitue un modèle suffisamment puissant pour atteindre les objectifs des projets EB3SEC et SELKIS.

Chapitre 3