Académique Documents
Professionnel Documents
Culture Documents
informatiques
Mémoire
Maîtrise en informatique
Maître ès sciences (M.Sc.)
Québec, Canada
La sécurité informatique est plus que jamais une préoccupation majeure de toute entreprise
privée comme publique. Le contrôle d’accès, qui représente une composante importante de la
sécurité des systèmes d’information, consiste à vérifier si un sujet possède les droits nécessaires
pour accéder à un objet [43]. Il est régi par des règles qui peuvent être exprimées en différents
langages. La validation de contrôle d’accès, également appelée analyse de conformité, consiste
à vérifier, à intervalles réguliers, si ces règles de contrôle d’accès mises en œuvre sont cohérentes
et complètes par rapport à une politique de sécurité donnée. Plusieurs outils de contrôle d’accès
sont applicables à cette fin. AVTAC (Automatic Validation Tool of Access Control) est un outil
sur lequel nous avons apporté notre contribution.
iii
Abstract
Computer security is more than ever a major concern for any private or public company.
Access control which is an important component of security of information systems consists
on verifying whether a subject has the rights to access to an object. It is governed by rules that
can be expressed in different languages. Validation of access control also called compliance is
to check at regular intervals if the access control implemented rules are consistent and complete
with respect to a given security policy or not. Several access control tools are applicable to
this end. AVTAC (Automatic Validation Tool of Access Control) is the tool on which we made
our contribution.
v
Table des matières
Résumé iii
Abstract v
Remerciements xiii
Introduction 1
3 Contribution 51
3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.2 Architecture et vue d’ensemble . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.3 Outils d’approvisionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.4 Processus de validation de droit d’accès . . . . . . . . . . . . . . . . . . . . 57
3.5 Traduction des droits d’accès . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.6 Récupération automatique des droits d’accès à partir de différentes machines 63
3.7 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
vi
Conclusion générale 67
vii
Liste des tableaux
ix
Liste des figures
xi
Remerciements
À mon Dieu
Que toute la gloire te revienne pour cette étape, je te dis merci pour ton choix et ta fidélité
sur ma vie.
À mes parents
Reconnaissance et amour familial, plus particulièrement à mon père qui a accepté de financer
mes études, merci de croire en moi papa.
À mes collègues
Merci pour votre soutien, particulièrement à Etienne Sadio qui a été pour moi un appui ines-
timable.
xiii
Introduction
Motivation
La sécurité informatique est plus que jamais une préoccupation majeure de toute organisation.
Le contrôle d’accès, qui représente une composante importante de la sécurité des systèmes
d’information, consiste à vérifier si un sujet demandant l’accès à un objet possède les droits
nécessaires pour le faire. Il est régi par des règles qui peuvent être exprimées dans un langage
tel que XACML [1].
Pour mieux protéger nos données et les équipements de nos systèmes informatiques, nos insti-
tutions définissent des politiques de sécurité et utilisent différentes techniques et outils pour les
implémenter. L’attribution et le contrôle de droits d’accès est souvent la principale technique.
Cependant, la conformité entre ce qui est demandé par la politique de sécurité et ce qui est
réellement implanté dans le système n’est pas toujours respectée. Par ailleurs, la complexité de
cette tâche d’analyse de conformité augmente considérablement quand nos systèmes (incluant
les équipements et les données qu’on protège, les personnes qui donnent les droits d’accès
et les personnes à qui l’on donne les droits d’accès) ou nos politiques de sécurité changent
constamment.
Par exemple, il arrive assez souvent que des personnes qui ont complètement quitté une organi-
sation bénéficient, par erreur, de leurs anciens accès. Il arrive souvent aussi que des personnes
qui ont changé de poste ou de grade bénéficient, toujours par erreur, de leurs anciens accès.
Pire encore, des données sensibles peuvent se trouver mal protégées.
C’est dans cet axe de recherche que se situe ce travail. En effet, nous proposons le développe-
ment des outils permettant de récupérer automatiquement des droits d’accès et des techniques
permettant de les analyser.
1
Buts
L’objectif de ce travail de recherche est d’une part de faire une synthèse de l’état de l’art des
différents outils et techniques permettant la gestion des droits d’accès dans les réseaux infor-
matiques et d’autre part de développer des outils permettant de récupérer automatiquement
une partie de ces droits d’accès et de les analyser.
Organisation
Ce mémoire est structuré comme suit : le chapitre 1 est consacré à l’état de l’art des ou-
tils de gestion de contrôle d’accès . Ensuite, le chapitre 2 décrit la représentation des droits
d’accès sous Windows et Linux . Dans le chapitre 3, nous présentons notre contribution dans
l’élaboration de l’outil AVTAC. Finalement au chapitre 4, nous terminons par une conclusion
générale.
2
Chapitre 1
1.1 Introduction
L’IAM (Identity and Access Management) a évolué en devenant un élément capital du sys-
tème informatique dans les grandes et moyennes entreprises. Ses atouts en termes de création
et de mise en œuvre de politiques de contrôle d’accès sont avérés ; cependant cette solution
informatique a été auparavant considérée comme très difficile à mettre en œuvre. Aussi, la né-
cessité métier d’une bonne interaction entre les systèmes d’information et les différentes entités
organisationnelles (acteurs externes) devient de plus en plus primordiale. Qu’il s’agisse d’uti-
lisateurs internes ou externes à l’entreprise, ces identités peuvent exposer celle-ci à de grandes
menaces, si elles ne sont pas gérées et maintenues par des systèmes fiables et performants.
La gouvernance d’un système IAM, qui est très souvent intégrée à la gestion de la politique de
sécurité de l’organisation, spécifie les attendus pour les quatre thèmes principaux de la gestion
d’identités et d’accès :
— l’Authentification de l’accès utilisateur ;
— l’Habilitation aux ressources du système d’information ;
— L’Implémentation de processus ;
— Le Contrôle des procédures de gestion et de validation.
Ce chapitre sera un bon repère dans la connaissance de l’IAM, car il nous permettra de
nous acclimater avec les notions et la modélisation utilisées dans un processus de gestion des
identités et des droits d’accès. Il a aussi pour objectif de nous orienter à faire de bon choix
afin de réaliser parfaitement un projet IAM.
3
1.2 Authentification pour un système IAM
L’objectif de l’authentification est d’assurer la légitimité d’un accès à une ressource. Cette
justification est faite par un moyen d’authentification qui se base sur des composants de
différents types :
— "Ce que je sais".
Il s’agit d’une information confidentielle qu’un utilisateur indique pour prouver son iden-
tité : un mot de passe, un NIP 1 , etc.
— "Ce dont je dispose".
Il s’agit d’un équipement de sécurité tenu par l’utilisateur qui donne lieu à un authen-
tifiant permettant de prouver son identité : certificat numérique, token, badge d’accès,
etc.
— "Ce que je suis".
Il s’agit d’une marque propre à l’utilisateur : la signature, l’empreinte digitale, l’iris de
l’œil, etc.
Plusieurs services peuvent être mis en place pour faciliter l’authentification, mais celui qui
attirera notre attention et qui est le service d’authentification le plus mis en œuvre pour un
projet IAM est : l’authentification unique ou SSO 2 .
De nos jours, les entreprises ont à assurer la gestion d’un ensemble délicat d’applications ré-
seau et d’applications Web qui fonctionnent sur des systèmes hétérogènes. Les utilisateurs sont
dans l’obligation d’accéder à plusieurs applications pour l’envoi de leurs courriels, la gestion
du support informatique, la gestion des fichiers de tout type.
À cause des exigences toujours plus rigoureuses en matière de sécurité, les utilisateurs doivent
entrer leur paramètre de connexion (identifiant / mot de passe) propre à chacune de ces ap-
plications, ce qui peut avoir comme conséquence, et ce de façon courante, l’utilisation de n
(nombre d’applications) combinaisons différentes.
4
de passe (coup de fil important de la part des utilisateurs pour réinitialiser leur mot de passe)
et à "l’inconfortabilité" des utilisateurs (trop de mot de passe à gérer) se sont accentués.
C’est dans ce cadre qu’ont été élaborées les solutions d’authentification unique pour les entre-
prises. Cette façon de s’authentifier permet aux utilisateurs de se loguer une seule fois, sachant
que les processus de connexion aux applications dans la suite, sont gérés automatiquement.
Ainsi, la solution de SSO logue automatiquement les utilisateurs à diverses applications sur la
base des paramètres de connexion authentifiés.
Les fonctions de l’authentification unique offrent plusieurs avantages aux entreprises parmi
lesquels :
5
— En une seule demande, l’authentification unique permet, et ce en une seul fois,
l’interdiction de l’accès des employés à l’ensemble du réseau, à défaut de devoir
reproduire cette action pour chacune des applications.
Nonobstant les avantages que proposent les fonctions SSO, il est de même notable de signaler
quelques inconvénients :
— L’authentification unique peut aussi attenter à la sécurité, en effet elle permet d’accéder
à plusieurs ressources une fois l’utilisateur logué. Pour pallier ce problème, il faut associer
les solutions de l’authentification unique à d’autres facteurs d’authentification comme
les certificats ou carte à puce.
Un système d’authentification unique est composé d’au moins trois « segments », ces segments
spécifient des fonctionnalités qui donnent lieu à la mise en place de l’authentification. Ces trois
segments sont :
6
— la propagation d’identité 3 entre les applications.
• Les applications : Les applications sont utilisées par les utilisateurs finaux, elles doivent
être compatibles avec le système d’authentification unique, c’est à dire être capable
d’échanger avec l’agent d’authentification.
• L’agent d’authentification :
L’agent d’authentification est la jonction entre les applications et le serveur SSO. Sa
fonction est de vérifier que l’employé est authentifié. En cas d’échec de ce processus de
vérification, l’utilisateur est redirigé vers le serveur SSO.
Architectures de SSO
On dénombre plusieurs types d’architecture pour l’authentification unique, en plus des tech-
niques utilisées. L’architecture d’un système d’authentification unique est révélatrice, ce choix
doit être fonction d’une bonne vue d’ensemble du système d’information visé. En effet ce choix
est très conditionné par les normes de confiance établies entre plusieurs entités à fédérer au
sein du système d’authentification unique. Les architectures se subdivisent en deux modèles
que voici :
• Le modèle centralisé
La règle fondamentale ici est d’avoir soit un système de stockage de données (BD 4 ) de
tous les utilisateurs ou un annuaire. Cela donne lieu aussi à la centralisation de la gestion
de la politique de sécurité et des droits d’accès. On compte parmi les logiciels qui illustre
ce procédé, LemonLDAP.
Ce modèle est particulièrement désigné à des services qui appartiennent tous à une
même entité. Par exemple au sein d’une entreprise, la gestion des intergiciels est fondée
sur le modèle centralisé. En effet chaque entité (service) interdépendante a confiance
dans l’authentification approuvée par le centre d’authentification (serveur SSO).
On peut citer le compte Apple pour illustrer ce modèle. En effet il permet d’accéder à une
multitude de modules tels qu’ App store (Plateforme de téléchargement d’application),
iTunes store (service de vente en ligne de musique, films, séries, etc.), iCloud (service de
nuage), etc., avec un seul compte et une seule authentification.
• Le modèle fédératif
Dans ce modèle, le système Liberty Alliance 5 est le principal exemplaire, chaque entité
3. L’objectif de la propagation d’identités est double : déléguer l’authentification à l’établissement d’origine
de l’utilisateur et obtenir certains attributs de l’utilisateur (pour gérer le contrôle d’accès ou personnaliser les
contenus).[61]
4. BD = Base de données.
5. Liberty Alliance, aussi connu sous le nom de Project Liberty, est un projet qui réunit des acteurs des
mondes industriel, informatique, bancaire et gouvernemental sous la forme d’un consortium. L’objectif est de
définir des ensembles de spécifications de protocoles de fédération d’identité et de communication entre services
7
administre une partie des données d’un utilisateur A en partageant les informations dont
il dispose sur l’utilisateur A avec les entités partenaires.
Cette approche a été mise en œuvre pour faire face à la nécessité d’une gestion décen-
tralisée des utilisateurs, où chacune des entités partenaires souhaite garder le contrôle
de leur propre politique de sécurité.
À titre d’exemple, considérons un partenariat commercial qui met en œuvre deux sites
web. L’utilisateur a un même compte pour les deux sites, mais il doit pour chacun spé-
cifier quelques informations importantes, telles que son adresse de livraison. Mais par
contre, des informations telles que son login et son courriel sont partagées dans le but
de cibler les goûts de l’utilisateur.
Dans un système IAM et dans la majorité des entreprises, le principal modèle d’habilitation
utilisé est RBAC 8 . Ce modèle repose sur la définition de rôles (ou profils) qui établissent le lien
en matière d’habilitation entre les utilisateurs et les ressources du SI. Nous nous intéresserons
donc dans cette section du modèle RBAC et de ses dérivées.
RBAC est présenté dans [28]. Dans ce modèle, la notion de rôle est le concept fondamental, les
droits d’accès sont attribués à un rôle et si ce rôle est joint à un utilisateur ou à des groupes
d’utilisateurs, alors ceux-ci obtiennent implicitement les droits d’accès à travers le rôle.
Un rôle définit un ensemble de droits d’accès et est attribué à un ou plusieurs utilisateurs.
Ainsi dans la gestion de RBAC, deux types de relations sont à considérer :
- La relation entre les rôles et les utilisateurs.
- La relation entre les rôles et les permissions.
web. Ces protocoles sont conçus pour être mis en œuvre aussi bien dans le cadre de déploiements intra-entreprise
qu’inter-entreprise.[62]
6. Discretionary Access Control.
7. Mandatory Access Control.
8. Role-Based Access Control.
8
1.3.2 Extensions du modèle RBAC
Le modèle RBAC connaît quelques limites dès lors que l’employé a des fonctions différentes
qui dépendent du lieu géographique où il exerce (Ex. : un conseiller qui travaille dans plusieurs
agences avec des fonctions différentes).
Des modèles d’habilitations proches du modèle RBAC existent pour pallier ce genre de spéci-
ficité :
— ORBAC 9 permet en plus des autorisations, de spécifier des interdictions et des obliga-
tions tout en s’appuyant sur des notions de contexte.
— Risk-RBAC qui introduit la notion de risque et de délégation.
Modèle ORBAC
Le modèle OrBAC (Organization-based Access Control) [56] est une évolution de RBAC.
Le concept principal de ce modèle est d’exprimer la politique de sécurité avec des notions
abstraites, et aussi de pouvoir distinguer la représentation d’une politique de sécurité de son
implémentation en utilisant différents processus de contrôle d’accès. OrBAC définit la notion
d’ « organisation » et spécifie les sujets, les objets et les actions respectivement en rôle (comme
dans RBAC). OrBAC utilise aussi la notion de vue (View-based Access Control "VBAC" [57]),
et aussi la notion d’activités (Task-based Authorization Controls "TBAC" [58]). Un rôle est
attribué à un groupe d’utilisateurs, aussi une activité est attribuée à une ou plusieurs actions,
et une vue est attribuée à un ou plusieurs objets. OrBAC introduit également la notion aussi
de contexte et la définit comme étant une situation particulière qui détermine si une règle est
valide ou pas.
9
→ Ispermitted(s, α, o)
L’interprétation donnée à cette expression est la suivante :
si « dans l’organisation ‘org’, le rôle ‘r’ est autorisé à faire l’activité ‘a’ sur la vue ‘v’ quand le
contexte ‘c’ est vrai », et si « dans l’organisation ‘org’, le rôle ‘r’ est attribué au sujet ‘s’ », et si
« dans l’organisation ‘org’, l’action ‘’ est incluse dans l’activité ‘a’», et si « dans l’organisation
‘org’, l’objet ‘o’ est inclus dans ‘v’ » et si « le contexte ‘c’ est vrai pour le quadruplet (org, s,
, o) », alors le sujet ‘s’ peut exécuter l’action ‘’ sur l’objet ‘o’.
Modèle Risk-RBAC
Il est capital d’introduire une relation d’ordre dépendamment de la valeur des objets et aussi
de définir des actions délimiter afin de sécuriser ces objets.
Le présent modèle d’accès de contrôle dans cette sous-section introduit la notion de risque et
de délégation, il s’agit du Risk-RBAC [59], qui est une évolution du modèle RBAC.
Le modèle RBAC R est défini comme RBAC en y ajoutant une fonction de sécurité RF
(fonction d’analyse de risque) et un ensemble de niveaux de confiance C.
On affecte un niveau de confiance C à un utilisateur u ∈ U et on note CN F (u) : U → C et
pour tous les rôles on calcule le niveau minimum de confiance noté M LC(R) : R → C.
La valeur du risque attribué à un utilisateur u qui a un rôle R, noté rv(u, R), est compris
entre 0 et 1.
Ce calcul s’effectue de la façon suivante :
(
0, si CN F (u) ≥ M LC(R)
rv(u, R) = CN F (u)
1− M LC(R) , sinon
Comme spécifié plus haut, il est question également dans cet article de notion de délégation
et du risque correspondant à cette délégation.
Il est noté del_rv(u1 , u2 ) et traduit le risque produit sur les objets de u1 si u1 délègue son
rôle à u2 .
Ce calcul s’effectue de la façon suivante :
(
0, si CN F (u1 ) ≥ CN F (u2 )
del_rv(u, R) = CN F (u1 )
1− CN F (u2 ) , sinon
.
10
1.4 Implémentation et contrôle pour un système IAM
La bonne gestion des processus d’entrée, sortie et mobilité des employés dans l’entreprise
est importante afin de garantir la validité des identités, des habilitations et des accès. Une
surcharge d’habilitation, l’utilisation de comptes utilisateurs désuets, la non-résiliation des
droits dans les systèmes de gestion d’accès sont une partie des risques traités par la gestion
du cycle de vie des identités. La mise en œuvre des processus métiers, et leur automatisation
assure à l’entreprise un bon contrôle des identités et une meilleure gestion des accès au sein
de l’entreprise. Pour ce faire nous allons définir les différents processus et techniques utilisés
par un système IAM afin de garantir une bonne gestion des identités, des habilitations et des
accès au sein de l’organisation.
1.4.1 Approvisionnement
L’approvisionnement automatique, lorsque bien utilisé, garantira une bonne mise en œuvre
des politiques d’habilitation sur le SI.
Selon [42], l’objectif de l’approvisionnement dans un système IAM est d’interagir avec les
ressources externes en se connectant aux serveurs d’annuaire, aux systèmes d’application mé-
tiers (RH, Administration...), et d’autres types de systèmes. Il récupère les informations des
ressources et les modifie également si nécessaire.
Les responsabilités qui incombent au système d’approvisionnement sont en résumé :
— La gestion des objets sur les ressources (système cible / source). Les objets désignent
toutes les entités liées à la gestion de l’identité, en particulier les comptes, les groupes, les
rôles, les droits, les attributs de compte, etc. et on entend par gestion, l’exécution d’opé-
rations telles que la récupération, création, modification et la suppression des objets.
(CRUD)
11
1.4.2 Réconciliation et synchronisation
L’un des grands challenges qui déterminent la gestion des identités et le contrôle des accès
consiste dans l’interaction de plusieurs applications. Pour relever ce défi dans le monde des
IAM, deux techniques sont souvent utilisés et demeurent incontournables de nos jours. Ce
sont : la réconciliation et la synchronisation.
Réconciliation
Synchronisation
Pour expliquer le processus de synchronisation, nous allons utiliser la figure 1.1 comme illus-
tration.
12
Des connecteurs placés sur des référentiels fournissent des événements ou des données au
moteur de synchronisation. Le moteur de synchronisation interprète les événements en entrée,
éventuellement les modifie, puis achemine aux référentiels cibles les événements ou données à
intégrer. Ce fonctionnement de répartition de données est automatisé et régi par des règles
statiques.
Les avantages liés à l’automatisation des processus sont nombreux, on peut citer entre autres :
Une diminution des coûts et un accroissement de la productivité de façon radicale.
10. Le moteur de workflow est l’outil permettant de modéliser et d’automatiser les processus métiers de
l’entreprise.
13
1.5 Outils de gestion des droits d’accès
Il existe diverses applications pour la gestion des droits d’accès dans le monde IAM. Bon
nombre d’entre elles sont assignées à un environnement spécifique, et n’ont pas toujours les
mêmes niveaux de tâche dépendamment de la fonction majeure que ces outils sont appelés à
exercer. Ci-dessous, nous citons quelques outils de contrôle d’accès.
1.5.1 CA IdentityMinder
CA IdentityMinder [30] est un outil de gestion d’identité et de droit d’accès mise en œuvre par
la compagnie CA Technologies. Il fournit la capacité de gérer et de gouverner les identités des
utilisateurs et comme tout bon outil de gestion de droits d’accès répond à la question "Qui
a accès à quoi ?". D’une façon aisée et productive, CA IdentityMinder permet également de
gérer et de gouverner les outils nécessaires afin de prendre le contrôle des utilisateurs privilégiés
dans les plateformes physiques, virtuels et de cloud computing. Élaborer pour être pratique à
exploiter et productive, la gestion de CA IdentityMinder peut concourir à accroître l’efficacité,
la sécurité et la conformité dans toute l’organisation. La compagnie CA a augmenté au fil du
temps son offre de gestion IAM, en rachetant la compagnie ID Focus en octobre 2008 et
Eurikify quelque temps après.
SetACL Studio est un outil de gestion pour des autorisations Windows. Cet outil administre
les droits d’accès des utilisateurs et donne lieu à la mise en œuvre d’audits. Il possède une
interface utilisateur très intuitive pour une bonne gestion des autorisations, sans oublier sa
fonctionnalité qui se met en œuvre aussi bien sur le réseau qu’en local. Il est possible d’utiliser
des scripts afin de construire certaines automatisations dans l’élaboration et l’administration
de droits d’accès.
1.5.3 midPoint
14
services de cloud computing, les portails Internet, les opérateurs télécom et les fournisseurs de
services et ainsi de suite.
15
1.5.5 LinID
LinID est la seule suite logicielle de gestion d’identité "Open Source", qui permet de gagner
en efficacité et en sécurité dans la gestion des données d’identité, d’accès et d’habilitation.
Cette suite est développée par l’entreprise Linagora, une entreprise française qui oeuvre dans
le monde de l’open source. LinID est principalement utilisé dans l’environnement Windows
où est déployé un domaine active directory.
1.5.6 OpenIDM
OpenIDM, édité par ForgeRock, est un système de gestion d’identité open source écrit en
Java. OpenIDM exploite JavaScript comme langage de script par défaut pour définir les règles
d’affaires pendant l’approvisionnement. Il est basé sur un outil d’approvisionnement nommé
OpenICF qui est un framework que l’on peut utiliser avec java et .NET. OpenIDM permet aux
organisations d’automatiser la gestion du cycle de vie de l’identité de l’utilisateur en temps
réel, y compris la gestion des comptes utilisateurs et des droits d’accès dans les applications.
Léger et agile, OpenIDM a été conçu pour aider les organisations à assurer la conformité avec
les politiques et les exigences réglementaires à travers l’entreprise, cloud, les environnements
sociaux et mobiles.
16
1.5.7 Quest One Identity
Membre de la suite de Quest Software de l’entreprise DELL, Quest One Identity assure le
contrôle des accès et l’administration des identités et améliore, en plus, la vérification de
conformité en consolidant l’automatisation et la génération de rapports.
Quest One vous permet de trouver rapidement et facilement les comptes et les utilisateurs qui
possèdent des droits d’accès inadaptés. Quest One Identity permet d’effectuer une découverte
approfondie des environnements Active Directory et accéder à la gouvernance de toute l’en-
treprise.
Il fonctionne sous Windows et est optimisé pour une architecture basée sur Active directory
de Windows.
17
Contrôle SSO Gestion SNMP Audits Script Gestion
d’accès des mots d’alertes
de passe
OpenIDM • • • • •
CA • • • •
Identity-
Minder
SetACL • • • • • •
studio
midPoint • • • • •
IBM • • • • •
Security
Identity
and
Access
Assu-
rance
Varonis • • • • • •
Datad-
vantage
Quest • • • • •
One
Identity
LinID • • • • •
Tous les outils IAM mentionnés ci-dessus ont en commun des politiques de sécurité statique.
En outre, les procédés de validation de droits d’accès ainsi que l’audit sont mis en œuvre
par les gestionnaires de sécurité qui, alerté par un processus de sécurité (alerte, scan, plainte
utilisateur), s’appuie en général sur les résultats des fichiers logs. Vu cette façon de gérer
l’environnement de sécurité, il est indispensable de mettre en oeuvre des outils "Ontologiques",
ayant une base formelle qui aideront à établir une analyse des droits d’accès afin de vérifier le
respect ou non d’une politique de sécurité donnée, et ce de façon automatique.
De nos jours, la gestion et la sécurité d’un Système d’Information sont difficiles à mettre
en œuvre sans l’utilisation de normes et de référentiels de sécurité. En effet, ces référentiels
garantissent une bonne cohérence des processus ainsi que de bonnes pratiques au sein de
l’organisation. Plusieurs référentiels et normes existent, mais nous allons nous contenter d’en
18
présenter quelques-uns.
ISO 27002 définit un ensemble de bonnes pratiques de la sécurité de l’information adaptée aux
entreprises. Cette norme propose plusieurs mesures de sécurité sur le plan organisationnel et
technique.
19
— Chapitre 17 : Aspects de la sécurité de l’information dans la gestion de la continuité
d’activité.
— Chapitre 18 : Conformité.
Nous allons maintenant voir selon [67], les chapitres qui sont en rapport avec l’analyse de
conformité :
— Politiques de sécurité de l’information (chapitre 5)
— Contrôle d’accès (Chapitre 9)
— Conformité (chapitre 18)
Contrôle d’accès
L’un des objectifs concernant ce chapitre est de limiter l’accès à l’information et aux moyens
de traitement de l’information.
La mesure dans ce chapitre, recommande d’établir, de documenter et de revoir une politique
du contrôle d’accès sur la base des exigences métier et de sécurité de l’information.
La mise en œuvre préconise que les propriétaires des actifs déterminent des règles de contrôle
d’accès, des droits d’accès et des restrictions d’accès appropriés aux fonctions spécifiques de
l’utilisateur des actifs, avec la quantité de détails et la rigueur des mesures correspondant aux
risques associés en matière de sécurité de l’information.
Selon la norme, il convient que la politique du contrôle d’accès tienne compte des exigences
de sécurité suivantes :
— exigences en matière de sécurité des applications métier ;
20
— cohérence entre la politique des droits d’accès et la politique de classification de l’infor-
mation des différents systèmes et réseaux ;
— gestion des droits d’accès dans un environnement décentralisé mis en réseau qui reconnaît
tous les types de connexions disponibles ;
— cloisonnement des rôles pour le contrôle d’accès, par exemple la demande d’accès, l’au-
torisation d’accès et l’administration des accès ;
— annulation de droits d’accès.
Conformité
L’objectif de ce chapitre est de garantir que la sécurité de l’information est mise en œuvre et
appliquée conformément aux politiques et procédures organisationnelles.
La mesure dans ce chapitre, recommande d’une part, de procéder à des revues régulières et
indépendantes de l’approche retenue par l’organisation pour gérer et mettre en œuvre la sécu-
rité de l’information (à savoir le suivi des objectifs, les mesures, les politiques, les procédures
et les processus relatifs à la sécurité de l’information) à intervalles définis ou lorsque des chan-
gements importants sont intervenus.
D’une autre part, elle recommande que les responsables revoient régulièrement la conformité
du traitement de l’information et des procédures dont ils sont chargés au regard des politiques,
des normes de sécurité applicables et autres exigences de sécurité.
La mise en œuvre préconise que la direction instaure une revue indépendante. Des revues
indépendantes sont nécessaires pour veiller à la pérennité de l’efficacité de l’approche de l’or-
ganisation en matière de management de la sécurité de l’information. Elle préconise aussi dans
un premier temps, que les responsables déterminent la manière de vérifier que les exigences
de sécurité de l’information définies dans les politiques, les normes et autres règlementations
applicables, sont respectées. Et dans un deuxième temps, elle recommande d’envisager l’utili-
sation d’outils de mesure et d’enregistrement automatisés pour procéder à des revues régulières
efficaces.
Si la revue détecte une non-conformité, il convient que les responsables :
— déterminent les causes de la non-conformité ;
— évaluent la nécessité d’engager des actions pour établir la conformité ;
— mettent en oeuvre l’action corrective appropriée ;
— revoient l’action corrective entreprise pour vérifier son efficacité et identifier toute insuf-
fisance ou faille.
21
gies de l’information - Techniques de sécurité - Systèmes de gestion de sécurité de l’information
- Exigences". Elle fait partie de la suite ISO/CEI 27000. [63]
La norme ISO 27001 enseigne le personnel responsable de la sécurité dans les entreprises sur
la manière de construire, procéder, entretenir et optimiser un Système de Management de la
Sécurité de l’Information (SMSI) dans l’intention de maintenir la sécurité de l’information au
sein de l’entreprise. Pour ce faire, la norme ISO 27001 utilise une approche d’amélioration
continue connue sous le nom de PDCA (Plan-Do-Check-Act).
— PLAN : Dans cette phase, il s’agit de définir le périmètre, c’est à dire le domaine d’appli-
cation du SMSI et spécifier les besoins en sécurité. À ce stade, une politique de sécurité
est élaborée, la réalisation de l’analyse des risques, le traitement des risques et le choix
des mesures de sécurité à mettre en place.
— DO : Ce stade permet d’établir un plan de traitement des risques afin que les objectifs du
SMSI défini soient opérationnels. Il consiste également à déployer les mesures de sécurité
sans oublier la formation du personnel.
— CHECK : La phase check comme son l’indique, consiste à détecter les erreurs. C’est
également dans cette phase que se déroulent les audits et les contrôles internes.
— ACT : Le SMSI est optimisé au regard des résultats de la phase CHECK, des actions
correctives et préventives sont ainsi élaborées.
Nous allons maintenant voir selon [71], les sections qui sont en rapport avec l’analyse de
conformité dans l’approche de l’amélioration continue (PDCA).
Phase Do
C’est dans cette phase que les objectifs de sécurité sont définis ainsi que les plans pour les
atteindre.
Dans la norme iso 27001 :2013, il est dit que l’organisation doit établir, aux fonctions et
niveaux concernés, des objectifs de sécurité de l’information. Ces objectifs à leur tour doivent
à leur tour :
— être cohérents avec la politique de sécurité ;
— être mesurables (si possible)
— tenir compte des exigences applicables à la sécurité de l’information, et des résultats de
l’appréciation et du traitement des risques ;
— être communiqués et aussi mis à jour quand cela est approprié.
Phase Check
Cette phase est l’une des plus importantes dans le processus d’analyse de conformité, car elle
consiste à détecter les incidents et les non-conformités.
22
Pour cette sous-section, l’organisation doit réaliser des audits internes à des intervalles planifiés
afin de recueillir des informations permettant de déterminer si le système de management de la
sécurité de l’information est conforme aux exigences propres de l’organisation et aux exigences
de la présente norme.
Pour ce faire l’organisation doit :
— Planifier, établir, mettre en œuvre et tenir à jour un ou plusieurs programmes d’audit ;
— définir des critères d’audit et le périmètre de chaque audit ;
— sélectionner des auditeurs et réaliser des audits qui assurent l’objectivité et l’impartialité
du processus d’audit ;
— conserver des informations documentées comme preuves de la mise en œuvre des pro-
grammes d’audit et des résultats d’audit.
Phase Act
Comme mentionné plus haut, cette phase donne lieu principalement à la mise en place d’ac-
tions corrective. À cet effet, la norme recommande lorsqu’une non-conformité se produit,
l’organisation doit :
— réagir à celle-ci et le cas échéant, traiter les conséquences ;
— évaluer s’il est nécessaire de mener une action pour éliminer les causes de la non-
conformité, de sorte qu’elle ne se reproduise plus ;
— mettre en œuvre toutes les actions requises ;
— réviser l’efficacité de toute action corrective mise en œuvre.
1.6.3 COBIT
COBIT (Control Objectives for Business Related Technology) [64] est une approche pour les
gestionnaires, auditeurs et utilisateurs qui aide à évaluer les risques et à déterminer le niveau
de contrôle afin de mieux protéger l’organisation. En effet, COBIT est un référentiel pour la
gouvernance et l’audit des Systèmes d’Information développé par l’ISACA 12 . COBIT adopte
une approche orientée processus qui consiste à décomposer tout Système d’Information en 34
processus regroupés en 4 domaines. Ces domaines sont entre autres :
23
projets avec les critères de qualité et les risques associés tout en assurant la conformité
avec les besoins externes.
— Acquisition et mise en œuvre : ce domaine décrit dans une première partie les processus
d’identification des solutions automatisées, d’acquisition, de la gestion d’actifs (infra-
structure technologique, logiciels applicatifs) et leur adéquation avec les besoins métiers.
Ensuite viennent lors de la mise en œuvre, le développement et la maintenance de pro-
cédures, l’installation et l’accréditation des systèmes. Enfin, tout système étant évolutif,
la gestion des changements est prise en compte.
1.6.4 ITIL
ITIL (Information Technology Infrastructure Library) est une mise en œuvre de bonnes pra-
tiques pour le management des processus informatiques [65]. Présentement en version 3 (Figure
1.4), ITIL est une bibliothèque qui dénombre, résume et expose les meilleures pratiques pour
un service informatique.
Au nombre de ces pratiques, on peut citer :
— La stratégie des services (service strategy) qui définit les processus comme la gestion
financière, la gestion du portefeuille des services, la gestion des demandes, etc. .
— La conception des services (service design), qui permet mettre en relation des processus,
assurer la sécurité des informations, maintenir un niveau de stock permettant de répondre
à la demande, etc. .
— La transition des services (service transition) qui est composé de processus donnant lieu
à la gestion des changements, à la gestion des mises en production, sans oublier le service
de test et validation.
— L’exploitation des services (service operation) qui prend en charge les processus comme
la gestion des accès, la gestion des incidents, la gestion des problèmes, etc. .
24
Figure 1.4 – ITIL version 3 [65].
1.7 Conclusion
Dans ce chapitre, nous avons présenté les principes fondamentaux et les pratiques liées à une
bonne gestion des identités et des droits d’accès. Nous avons également défini les différents
processus et techniques utilisés par un système IAM afin de garantir une bonne gestion des
identités, des habilitations et des accès au sein d’un système d’information. Finalement, une
ébauche de quelques outils de contrôle d’accès et norme de sécurité ont été définies afin d’aider
les administrateurs à choisir la technologie adaptée à leur besoin.
Cette mise en œuvre des concepts et pratiques autour du contrôle d’accès vient nous confor-
ter dans l’élaboration de nos travaux et nous permet d’aborder la partie suivante, où il est
question de la représentation des droits d’accès sous Windows et Linux.
25
Chapitre 2
2.1 Introduction
Le contrôle d’accès est la mise en œuvre de procédures permettant de vérifier qu’une entité
voulant avoir accès à une ressource bénéficie des droits ou habilitations nécessaires pour le
faire. Il se fait de façon générale en se basant sur une politique de sécurité.
En effet, cette méthode de contrôle d’accès peut être remarquée aussi bien dans le domaine des
infrastructures informatique, que dans la vie de tous les jours. Prenons le cas d’une personne
qui veut retirer de l’argent au guichet automatique, le contrôle d’accès se définit ici par le faite
de vérifier que la personne dispose de sa carte bancaire et du bon NIP.
Afin de sécuriser les ressources, plusieurs systèmes d’information mettent en œuvre un système
de contrôle d’accès en s’appuyant sur des modèles comme le MAC 1 , DAC 2 , RBAC 3 , etc. Un
modèle de contrôle d’accès est la mise en œuvre d’une méthode définissant des règles pour la
répartition des droits d’accès.
Dans ce chapitre, nous allons définir les notions qui environnent le contrôle d’accès dans la
27
section 1 ; dans la section 2 et 3, il s’agira de montrer les représentations du contrôle d’accès
sous Linux et Windows, et finalement dans la section 4 nous représenterons quelques interfaces
utilisateurs de gestion de contrôle d’accès.
Définition et notation :
-Entités
L’ensemble des accès noté A, représentent les multiples modes d’accès exécutés par les sujets
sur les objets. Cet ensemble inclut de façon générale les accès de type "read, write, execute,
etc.". De façon formelle on peut décrire un accès A par un triplet (s, o, x) traduisant que le
sujet s a accès à l’objet o selon le mode d’accès x.
-Paramètres de sécurité
Quelques informations liées aux entités sont utiles et essentielles afin d’être à même de mieux
exprimer une politique de sécurité dans un système d’information donné. Ces informations
émanent de ce que nous dénommerons les paramètres de sécurité et sa notation est ρ.
-État
-Fonction de sécurité
Un état est tenu aussi de spécifier un groupe de fonctions de sécurité, qui joint les entités aux
28
paramètres de sécurité. Puisque ces fonctions de sécurité sont définies par les états, elles sont
modifiables lors des phases de transitions, à l’encontre des paramètres de sécurité, qui sont
définitifs pour une politique donnée.
On définit Υ(σ), σ dans Σ, exprime le groupe des fonctions de sécurité de l’état σ.
Υ : Σ → SF 4 .
-Accès courant
Un accès courant traduit un accès qui a été admis, mais dont le processus reste inachevé.
L’ensemble des accès courants est noté Λ. De même on à :
Λ : Σ → ℘(A)
Où ℘(A) désigne l’ensemble des parties de A. Compte tenu un état σ, Λ(σ) traduit l’ensemble
des accès courants du système dans l’état σ.
-Prédicat de sécurité
Une politique de sécurité décrit les états sûrs d’un système. Ces états sûrs sont déterminés
par un prédicat de sécurité et sa notation est Ω.
-Politique de sécurité
Une politique de contrôle d’accès se base sur des paramètres de sécurité. Les paramètres de
sécurité étant notés ρ, une politique de sécurité d’accès P[ρ] est traduite par un quintuple :
P[ρ] = (S, O, A, Σ, Ω)
4. SF : Fonction de sécurité.
29
Figure 2.1 – Concepts de base pour le contrôle d’accès dans Linux
Excepté l’utilisateur suprême (root) qui administre totalement tous les objets du système,
uniquement le Owner peut accéder et modifier ses objets ; sans compter qu’il est également le
seul à pouvoir déléguer des droits d’accès au Owner Group et aux Others.[9]
Les droits d’accès donnés à un objet sont traduits par trois entités de trois caractères qui
appartiennent à l’ensemble : {r, w, x, −}.
La première entité de trois caractères indique le droit d’accès du Owner, la deuxième de trois
caractères traduit les droits d’accès du Owner Group et la troisième entité de caractères indique
les droits donnés au Others . (Voir Figure 2.1). Dès lors on parvient à trois entités de trois
caractères. Le premier caractère de chacune des entités accorde le droit de lecture s’il retourne
"r", autrement il retourne "−" et le droit de lecture n’est pas accordé.
Le deuxième caractère de chacune des entités accorde le droit d’accès en écriture sur un objet
s’il retourne "w" sinon il retourne "−" et le droit d’écriture n’est pas accordé.
Le troisième caractère d’une entité accorde l’autorisation d’exécuter un objet s’il retourne "x"
sinon il retourne "−" et le droit d’exécuter n’est pas accordé".
En exécutant la commande ls -l , on a les droits d’accès des différents fichiers ainsi que le
présente la figure 2.2.
Selon l’exemple, le premier caractère révèle la nature de l’objet. Le caractère d nous indique
que la nature du fichier est un dossier, tandis que le caractère − quant à lui nous indique
que la nature de l’objet est un fichier. Les caractères ci-après traduisent les droits d’accès
30
pour respectivement le Owner, Owner Group et Others. La valeur drwxr − xr − x signifie que
le Owner a les droits de lecture, d’écriture et de "traversée"(c’est-à-dire qu’on peut voir les
sous-dossiers que le dossier contient) ; le Owner Group et le Others ont le droit de lecture et
de "traversée". Sous Linux, les droits d’accès sont modifiables le Owner où le root en utilisant
la commande chmod.
Le bit setuid
Quand un utilisateur lance un programme, celui-ci s’exécute avec les droits de cet utilisateur.
Mais souvent, on veut lancer une commande spéciale (en général réservé au super utilisateur)
en tant que simple utilisateur. L’exemple le plus manifeste étant la commande passwd dont le
chemin d’accès est /usr/bin/passwd qui est une commande root.
$ ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 25036 2013-10-02 11:08 /usr/bin/passwd
En regardant les droits sur passwd, on s’aperçoit que ce fichier est affecté par le bit setuid :
c’est-à-dire que lorsqu’un utilisateur lance la commande passwd, elle est lancée avec les droits
du root, ainsi l’écriture pourra se faire dans le fichier /etc/passwd et l’utilisateur aura changé
son mot de passe sans être root. Sans le setuid 5 , l’utilisateur n’aurait pas pu écrire dans le
fichier /etc/passwd.
setuid est un attribut de fichier spécial qui indique au système d’exécuter certains programmes
sous un ID utilisateur spécifique.[36]
Il est à noter que la notion de setuid n’existe pas pour les répertoires.
Le bit setgid
La théorie du setgid 6 est le même que le setuid pour un fichier, mais assurément au niveau
des droits du groupe. Un exécutable affecté par le bit setgid peut donc être déclenché avec les
droits du groupe auquel il se rapporte.
En revanche, le comportement change lorsqu’il s’agit d’un répertoire. Quand il s’agit d’un
répertoire, tous les fichiers créés dans ce répertoire appartiennent au même groupe que le
répertoire. Exemple : prenons le cas d’un répertoire contenant plusieurs utilisateurs qui tra-
vaillent sur celui-ci pour un même projet, il est bon d’affecter le bit setgid au dossier, de cette
manière, les fichiers mis en œuvre appartiendront tous au même groupe.
31
le s signifie que le bit setuid est défini pour l’autorisation du groupe. Le propriétaire du dossier
backup et les membres du groupe projet1 peuvent accéder au dit dossier.
Le sticky bit
L’utilisation du bit collant (sticky bit) est différente dépendamment de s’il appartient à un
fichier ou à un répertoire. S’il est assigné à un fichier, alors le fichier en question est chargé dans
la mémoire vive pour éviter d’avoir à le recueillir du disque dur à chacune de ces utilisations .
Si ce bit appartient à un répertoire, alors son but est d’empêcher les utilisateurs de supprimer
leurs fichiers respectifs. Les exemples spécifiques sont entre autres les répertoires /tmp et
/var/tmp.
le t indique que le sticky bit est attribué au répertoire /tmp, dont l’accès en écriture demeure
possible par tous les utilisateurs, sans que ceux-ci se suppriment leurs fichiers.
Les ACL (listes de contrôle d’accès) POSIX pour Linux sont fondées sur la proposition première
du standard POSIX [35]. Elles sont employées comme une avancée de la notion traditionnelle
d’autorisation pour les objets système de fichiers. Les ACL donnent lieu à la mise en œuvre
des autorisations plus aisément que le concept d’autorisation traditionnel.
En général, trois entités d’autorisations sont spécifiées pour chacun des objets (fichier) sous
Linux. Ces entités englobent les autorisations lire (r), écrire (w) et exécuter (x) pour chacun
des trois types d’utilisateurs : le Owner, le group et les others. Par ailleurs, il est possible de
définir les bits set user id et set group id comme nous l’avons vu plus haut.
Cette notion élémentaire est absolument adaptée dans une grande partie des cas pratiques.
Toutefois, pour les scénarios plus délicats ou les applications avancées, les administrateurs
système jadis étaient obligés d’adopter plusieurs moyens pour contourner les limitations du
concept d’autorisation traditionnel.
32
Les ACL sont perçues comme une avancée de la notion traditionnelle d’autorisation d’accès
aux fichiers. Elles donnent lieu à l’attribution de différentes autorisations à des utilisateurs ou
à des groupes, même si ceux-ci ne se rapportent pas au propriétaire d’origine ou au groupe
propriétaire. Les listes de contrôle d’accès sont une fonctionnalité du Kernel Linux et sont
actuellement prises en charge par ReiserFS, Ext2, Ext3, JFS et XFS [36].
Les ACL donnent lieu à la réalisation de scénarios complexes sans implanter des modèles
d’autorisation complexes au niveau de l’application.
Le Tableau 2.1 affiche les six types possibles d’entrées ACL, chaque entrée spécifie les au-
torisations d’un utilisateur ou d’un groupe d’utilisateurs. L’entrée propriétaire spécifie les
autorisations de l’utilisateur propriétaire de l’objet. L’entrée groupe propriétaire spécifie les
autorisations du groupe propriétaire de l’objet. Le super utilisateur quant à lui à la possibi-
lité de modifier le propriétaire ou le groupe propriétaire à travers les commandes chown ou
chgrp. À ce moment-là, les entrées du propriétaire et du groupe propriétaire font allusion au
nouveau propriétaire et au nouveau groupe propriétaire.
Chacune des entrées (utilisateur nommé) spécifie les autorisations de l’utilisateur défini dans
le champ de qualification de l’entrée. Uniquement les entrées d’utilisateur nommé et de groupe
nommé ont un champ de qualification qui n’est pas vide. L’entrée autre spécifie les autorisa-
tions du reste des utilisateurs (others).
L’entrée masque, a pour rôle de restreindre les autorisations accordées par les entrées utilisateur
nommé, groupe nommé et groupe propriétaire en spécifiant, parmi ces entrées, les autorisations
qui sont en cours et les autorisations masquées.
Quand des autorisations sont configurées dans l’une des entrées citées ainsi que dans le masque,
elles sont en cours tandis que les autorisations incluses seulement dans le masque ou seulement
dans l’entrée en question ne sont pas en cours, et ne sont pas accordées. L’ensemble des
autorisations définies dans les entrées propriétaire et groupe propriétaire sont constamment en
cours. L’exemple du Tableau 2.2 explique ce processus.
33
Type d’entrée Forme textuelle Autorisations
utilisateurs nommé user :emma :r-x r-x
masque mask :: rw− rw−
autorisations en cours r–
— Une ACL étendue est beaucoup plus développée. Elle inclus une entrée masque et peut
renfermer de multiples entrées de type utilisateur nommé et groupe nommé.
Les autorisations d’accès de l’utilisateur et du groupe pour tous les types d’objets système de
fichiers (fichiers et répertoires) sont déterminées au moyen des ACL d’accès. Avec getfacl et
34
setfacl sur la ligne de commande, on peut visualiser et modifier les ACL. L’utilisation de ces
commandes est présentée dans l’exemplaire suivant.
Exemple : Avant de créer le répertoire LSI, utilisons la commande umask pour spécifier les
autorisations d’accès qui seront masquées chaque fois qu’un objet est créé.
La commande umask 027, spécifie les autorisations par défaut en accordant au propriétaire
tous les droits (0), en refusant au groupe le droit d’écrire (2) et en n’accordant aucun droit
aux autres utilisateurs (7). En réalité,umask masque les bits d’autorisation correspondants ou
les désactive.
mkdir LSI crée le répertoire LSI avec les droits par défaut tels qu’ils sont spécifiés par umask.
Employons ls -dl LSI pour s’assurer que tous les droits ont été attribués correctement.
Voici le résultat de la commande :
Avec getfacl LSI, examinons l’état initial de l’ACL. On obtient des informations comme :
# file: LSI
# owner: memel
# group: avtac
user::rwx
group::r-x
other::---
Les trois premières lignes donnent la description du nom, du propriétaire et du groupe pro-
priétaire du répertoire. Les trois lignes suivantes affichent les trois entrées ACL propriétaire,
groupe propriétaire et autre. En effet, dans le cas de l’ACL minimal, la commande getfacl ne
génère pas plus d’informations que la commande ls.
Modifions l’ACL pour attribuer des droits de lecture, d’écriture et d’exécution à l’utilisateur
additionnel emmanuel et au groupe additionnel labo, de la façon suivante :
L’option -m demande à setfacl permet de modifier l’ACL existante. C’est un argument qui
désigne les entrées ACL à modifier. La partie restante indique le nom du répertoire dans lequel
ces modifications ont été apportées.
Utilisons la commande getfacl pour consulter la nouvlle valeur de l’ACL.
35
# file: LSI
# owner: memel
# group: avtac user::rwx
user:emmanuel:rwx group::r-x
group:labo:rwx mask::rwx
other::---
En plus des entrées lancées pour l’utilisateur emmanuel et le groupe labo, une entrée mask
a été générée. Cette entrée de masque est spécifiée automatiquement afin que tous les droits
entrent en vigueur.
setfacl dispose automatiquement les entrées mask aux nouveaux paramètres sauf si nous
désactivions cette fonctionnalité avec -n.
mask détermine le maximum de droits d’accès en vigueur pour toutes les entrées de la classe
de groupe.
Les bits d’autorisation de la classe de groupe indiqué par la commande "ls -dl LSI" conviennent
maintenant à l’entrée mask.
La première colonne du résultat compte un signe + indiquant que cet élément possède une
ACL étendue.
# file: LSI
# owner: memel
# group: avtac
user::rwx
36
user:emmanuel:rwx # effective: r-x
group::r-x
group:labo:rwx # effective: r-x
mask::r-x
other::---
Une fois la commande chmod exécutée, pour supprimer le droit écrire des bits de la classe de
groupe, le résultat de la commande ls est suffisant pour savoir que les bits de masque devront
être modifiés en conséquence : le droit d’écrire est à nouveau restreint au propriétaire de LSI.
Le résultat de getfacl soutient ce fait. Ce résultat inclut un commentaire pour toutes les
entrées dans lesquelles les bits d’autorisation en vigueur ne coïncident pas aux autorisations
d’origine, car elles sont filtrées dépendamment de l’entrée de masque. Les autorisations d’ori-
gine peuvent être reconstituées en tout temps grâce à la commande chmod g+w LSI.
Les répertoires ont la possibilité de disposer d’une ACL par défaut. Les ACL par défaut
s’appliquent uniquement aux répertoires et déterminent les autorisations qu’un objet Système
de fichiers hérite de son répertoire parent lors de sa création[36].
Il y a deux façons d’attribuer les permissions d’une ACL par défaut d’un répertoire aux fichiers
et aux sous-répertoires qu’il renferme :
— Un sous-répertoire hérite de l’ACL par défaut du répertoire parent en tant qu’ACL par
défaut et ACL d’accès.
— Un fichier hérite d’une ACL par défaut en tant qu’ACL d’accès.
L’ensemble des appels système qui définissent les objets système de fichiers utilisent un pa-
ramètre mode qui spécifie les droits d’accès pour le nouvel objet Système de fichiers. Au cas
où le répertoire parent ne possède pas une ACL par défaut, les bits d’autorisation définis par
umask sont retranchés des droits remis par le paramètre mode, le résultat étant attribué au
nouvel objet.
En admettant que le répertoire parent dispose d’une ACL par défaut, les bits d’autorisation
attribués au nouvel objet se rapportent à la partie commune des autorisations du paramètre
mode et à celles spécifiées dans l’ACL par défaut. umask n’est pas pris en compte dans cette
circonstance.
Les exemples ci-après représentent les opérations essentielles des répertoires et des ACL par
défaut :
1. Ajoutons une ACL par défaut au répertoire existant LSI par la commande suivante :
37
L’argument -d de la commande setfacl lui demande de faire les modifications suivantes (argu-
ment -m) à l’ACL par défaut.
getfacl LSI
# file: LSI
# owner: memel
# group: avtac
user::rwx
user:emmanuel:rwx
group::r-x
group:labo:rwx
mask::rwx
other::---
default:user::rwx
default:group::r-x
default:group:labo:r-x
default:mask::r-x
default:other::---
getfacl retourne l’ACL d’accès et l’ACL par défaut. L’ACL par défaut est composée de toutes
les lignes débutant par default. Quoique nous ayons uniquement exécuté la commande setfacl
avec une entrée pour le groupe labo de l’ACL par défaut, setfacl a de façon automatique copié
toutes les autres entrées de l’ACL d’accès dans le but de créer une ACL par défaut valide.
Les ACL par défaut n’ont pas d’effet imminent sur les droits d’accès. Elles sont fonctionnelles
seulement quand des objets système de fichiers sont créés. Ces objets héritent des droits pro-
venant seulement de l’ACL par défaut de leur répertoire parent.
2. À l’intérieur de l’exemple ci-après, utilisons la commande mkdir pour créer dans LSI un
sous-répertoire sousLSI qui hérite de l’ACL par défaut.
mkdir LSI/sousLSI
getfacl LSI/sousLSI
# file: LSI/sousLSI
# owner: memel
# group: avtac
user::rwx
group::r-x
38
group:labo:r-x
mask::r-x
other::---
default:user::rwx
default:group::r-x
default:group:labo:r-x
default:mask::r-x
default:other::---
Bien entendu, le nouveau répertoire sousLSI a les droits de l’ACL par défaut du répertoire
parent. L’ACL d’accès de sousLSI est la réplique exacte de l’ACL par défaut de LSI. L’ACL
par défaut que ce répertoire doit céder à ses objets sous-jacent est aussi identique.
# file: LSI/monfichier
# owner: memel
# group: avtac
user::rw-
group::r-x # effective:r--
group:labo:r-x # effective:r--
mask::r--
other::---
la commande touch dispose d’un paramètre mode qui a la valeur 0666 lorsque les fichiers sont
crées. La création des fichiers se fait donc avec les droits lire et écrire pour toutes les classes
d’utilisateurs, pourvu qu’il n’existe pas une restriction en plus dans umask ou dans l’ACL par
défaut .
Cette démarche renforce l’interaction correcte des applications, particulièrement des compi-
lateurs, avec les ACL. A ce niveau on peut donc créer des fichiers ayant des droits d’accès
restreint et les marquer par la suite comme exécutables.
39
2.3.3 SELinux
Security Enhanced Linux (SELinux) est l’implémentation d’un contrôle d’accès obligatoire
(MAC). Il a été conçu pour répondre à une grande variété de besoins de sécurité, de l’uti-
lisation générale, aux exigences des systèmes gouvernementaux et militaires exploitant des
informations classifiées [39]. La sécurité du MAC est différente de celle du DAC à cause de
la politique de sécurité qui y est administrée de manière centrale, et aussi que les utilisateurs
n’ont aucun contrôle en ce qui concerne la politique de leurs ressources. Cette approche par-
ticipe à contrôler les attaques qui exploitent des bogues ou des défauts de configuration dans
les applications pour utilisateur.
Sous SELinux, on attribue aux objets tels les fichiers, des étiquettes ou labels. Toutes les ré-
actions entre les ensembles liés à la sécurité sont retenues par LSM 7 et données au module
SELinux, qui examine la politique de sécurité de façon à déterminer si l’opération en cours
peut continuer. La politique de sécurité SELinux est loadée depuis la plateforme utilisateur, et
est modifiable pour faire face à plusieurs objectifs de sécurité. Beaucoup de modèles de MAC
passés détenaient une politique fixe, qui délimitait leur application dans un cadre d’informa-
tique générale.
SELinux est installé sur plusieurs OS Linux et également activé par défaut sur tous les OS
basés sur Fedora.
Implémentation de SE Linux
D’après [41], le code source de SELinux est inséré dans les noyaux de base fournis par Debian et
les programmes standards issus de la famille Unix. Ainsi on peut facilement utiliser SELinux.
Après l’installation des règles, il faut labelliser tous les fichiers vacants en leur affectant un
type.Ce processus est possible en déclenchant de façon manuelle la commande fixfiles relabel .
La plateforme SELinux étant opérationnelle, il faut alors l’activer. Pour se faire, il faut ap-
pliquer la variable selinux=1 au noyau de l’OS. La variable audit=1 initialise les traces
SELinux qui mémorisent les opérations non acceptées.
40
Finalement la variable enforcing=1 donne lieu à l’exécution des règles : en réalité, de façon
basique SELinux s’exécute en "mode permissive" (les opérations interdites sont tracées néan-
moins elles sont tout de même autorisées). Il faut ainsi effectuer la modification du fichier de
configuration du chargeur d’amorçage GRUB 8 afin de compléter les paramètres souhaités. De
façon pratique il faut modifier le paramètre GRUB_CMDLINE_LINUX qui se trouve
dans /etc/default/grub et exécuter update-grub. Au redémarrage, SELinux sera actif.
Toutes les fois qu’un utilisateur s’authentifie, le système lui assigne une identité SELinux, qui a
pour fonction de définir les rôles de l’utilisateur. Ces deux corrélations à savoir de l’utilisateur
vers l’identité SELinux et de l’identité vers les rôles s’établissent à l’aide de la commande
semanage.
À cette commande on pourra associer différents arguments entre autres : -a pour ajouter, -d
pour supprimer, -m pour modifier, -l pour lister et -t pour indiquer un type.
semanage login -l liste les corrélations subsistantes entre ID utilisateurs et identités SE-
Linux. Si un utilisateur n’a pas de corrélation précise, il aura l’identité affichée en face de
_default_. La commande semanage login -a -s user_u utilisateur va affecter l’iden-
tité user_u à l’utilisateur. Finalement, semanage login -d utilisateur va supprimer la
corrélation attribuée à l’utilisateur.
semanage user -l énumère les corrélations entre identités SELinux et les rôles. Faire un
ajout d’une nouvelle identité exige de spécifier d’un côté les rôles correspondants et d’un autre
un préfixe d’étiquetage qui va définir le type affecté aux fichiers (/home/utilisateur/* ). Le
choix se fera donc parmi les préfixes suivants : user , staff et sysadm.
Le préfixe « staff » produira des fichiers typés, ex : staff_home_dir_t. La commande
qui permet de créer une identité est semanage user -a -R rôles -P préfixe identité.
Finalement, une identité sera supprimée grâce à la commande semanage user -d identité.
8. GRUB : GRand Unified Bootloader.
41
# semanage user -a -R ’staff_r user_r’ -P staff test_u
# semanage user -l
D’après [13], nous allons définir plusieurs termes afin de mieux appréhender le contrôle d’accès
sous Windows.
Objets
ACL
Une ACL est une liste de contrôle d’accès qui administre les permissions d’accès aux ob-
jets du système. Elle comprend des entrées de contrôle d’accès ACE 9 . En ce qui concerne
les ACL, on en distingue deux types :
Les ACL systèmes ou SACL et les ACL discrètes ou DACL.
Une SACL (System Access Control List) est une liste de contrôle d’accès qui spécifie les
évènements audités lors des tentatives d’accès à un objet sécurisé.
Une DACL (Discretionary Access Control List) est une liste de contrôle d’accès discré-
tionnaire parce qu’elle est administrée par le propriétaire de l’objet. Une DACL admi-
nistre les permissions sur un objet sécurisé en spécifiant qui est habilité à accéder au dit
42
Figure 2.5 – ACE de type accès accordé [13].
objet.
ACE
Une entrée de contrôle d’accès ACE est la structure qui enregistre les permissions pour
un compte de sécurité donné et spécifie aussi les propriétés d’audit pour ce compte sur
l’objet en question. Une ACL peut avoir zéro ou plusieurs ACE.
Une ACE inclus un SID 10 , un masque d’accès de 32 bits qui spécifie les permissions
attribuées au SID et un drapeau ou flag qui définit le type d’ACE (ACE de type accès
accordé, ACE de type accès refusé et ACE de type Audit system).
Descripteur de sécurité
SDDL
43
Figure 2.6 – ACE de type accès refusé [13].
Contrôle d’accès
44
Figure 2.7 – Structure d’un descripteur de sécurité [13].
constitué d’utilisateurs, processus, etc. À chaque sujet est assigné un SID qui permet de
l’identifier de façon unique.
Lorsque le bit (masque) d’une ACE qui traduit la permission écrire a la valeur 1 et que l’ACE
est de type accès refusé alors l’ACE interdit le droit de modifier les permissions de l’objet.
Par ailleurs, si le bit identique a la valeur 1 et que le l’ACE est de type accès accordé alors
l’ACE autorise le droit de modifier les permissions de l’objet.
45
La structure du masque d’accès est constituée de bits qui équivalent aux types de droits d’accès
suivant [12] :
— les droits standards comme DELETE qui traduit le droit de supprimer un objet, WRITE_DAC
qui traduit le droit de modifier le DACL, et WRITE_OWNER qui traduit le droit de
changer le propriétaire de l’objet.
— les droits génériques à l’instar de GENERIC_READ, GENERIC_WRITE, GENERIC_EXECUTE
et GENERIC_ALL ;
Même si le propriétaire d’un objet n’a pas une entrée dans le DACL, il peut, de manière
implicite, lire et modifier les permissions de son objet.
Lorsqu’un objet n’a pas de DACL, Windows permet l’accès total à tous les utilisateurs ; au-
trement, Windows examine les ACE qui sont dans le DACL de l’objet. Tout ACE dans un
DACL d’un objet définit le droit d’accès accepté ou exclu pour l’utilisateur.[13]
Le système analyse tous les ACE progressivement jusqu’à l’obtention d’une action ci-après :
— Un accès refusé (voir Figure 2.6)
— Un ou plusieurs accès acceptés (voir Figure 2.5).
Dans cette section nous nous intéresserons aux interfaces graphiques de Linux et de Windows.
Sous Linux l’interface graphique est le serveur X et sous Windows c’est l’explorateur Windows
46
Figure 2.9 – Architecture Linux [53].
qui assume ce rôle. Dans les deux cas de figure, on parle d’environnement de bureau qui est
tiré de la métaphore du bureau [16].
Pour le contrôle d’accès, les OS Linux et Windows offrent des interfaces graphiques pour
faciliter la gestion du contrôle d’accès.
47
Figure 2.10 – GMC gestion des droits d’accès [21].
Sous les différentes distributions de Linux dont le gestionnaire de bureau est GNOME ou
KDE, le contrôle d’accès sur les objets de type fichier et dossier est réalisé et est paramétrable
grâce à l’outil GNU Midnight Commander (GMC) [21] sur GNOME et KDE File Manager
sur KDE [22]. Pour montrer la gestion graphique du contrôle d’accès sous Linux, nous avons
fait une capture d’écran du GMC sous une machine Ubuntu comme le montre la figure 2.10.
On peut remarquer que sur la fenêtre dans la partie permission il y a les informations qui
décrivent les droits d’accès au fichier test, Il suffit de cliquer ([x]) sur la permission voulue afin
de l’attribuer au fichier et de cliquer à nouveau ([ ]) pour enlever une permission.
Dans les systèmes d’exploitation Microsoft Windows, la gestion du contrôle d’accès est réalisée
grâce à l’explorateur de fichier qui permet de gérer les droits d’accès et, moins connue, le MMC
(Microsoft Management Console) [24] à travers son module utilisateurs et groupes locaux (Voir
figure 2.11 et 2.12).
En pratique, pour tous les objets Windows, il suffit d’afficher la fenêtre des propriétés et
d’accéder à l’onglet sécurité pour visualiser et modifier les droits d’accès. La figure 2.13 et la
figure 2.14 montrent respectivement une représentation graphique des descripteurs de sécurité
et de l’interface de gestion des ACE du dossier Sample Pictures.
Étant donnée la popularité des OS Windows, les administrateurs peuvent, en utilisant l’inter-
48
Figure 2.11 – Console de gestion Microsoft.
49
Figure 2.14 – Fenêtre d’édition des ACE.
face graphique, faire une gestion rigoureuse du contrôle d’accès. Et cela en utilisant l’explora-
teur de fichier et l’application MMC de Microsoft.
2.6 Conclusion
Le contrôle d’accès est l’un des fondements de la sécurité informatique. Dans plusieurs entre-
prises, la fonction principale des administrateurs en sécurité est de gérer l’accès aux ressources,
sans oublier l’analyse de conformité et l’audit.
Alors, il est capital de mettre l’accent sur l’analyse des besoins des administrateurs qui définit
la problématique liée à la gestion du contrôle d’accès et également de bien cerner les différents
modèles de contrôle d’accès et d’en déterminer le choix par rapport aux objectifs de sécurité.
Bien que la notion d’interface personne-machine soit présente dans la structure des OS, on
peut faire le constat que pour la gestion du contrôle d’accès, l’aspect interface en ligne de com-
mande est privilégié et qu’il faut avoir les compétences qu’il faut pour la gestion fine des droits
d’accès. Toutefois, la prise de conscience sur les enjeux de la sécurité informatique en général
et des données personnelles en particulier par le grand public pourra jouer sur l’amélioration
des interfaces graphiques pour la gestion des droits d’accès.
50
Chapitre 3
Contribution
3.1 Introduction
Dans ce chapitre, nous présentons AVTAC 1 qui est un framework dont l’un des modules
permet de faire l’analyse et la validation automatique des droits d’accès. En nous appuyant
sur une ontologie [55] et des outils de approvisionnement, nous allons détailler l’architecture
de notre outil et montrer les processus utilisés pour l’analyse de conformité.
Une contrainte est une relation entre différentes variables. On distingue différents types de
contraintes telles que : les contraintes numériques, booléennes, etc. La contrainte est utilisée
pour résoudre les problèmes de non-satisfaction. On utilise la programmation par contrainte
afin de résoudre les problèmes combinatoires et plus particulièrement les problèmes de grande
taille. Dans AVTAC [43], elle permet d’accélérer le traitement pour des opérations de recherche
et faciliter l’analyse et les interprétations.
L’outil de comparaison de politique comme son nom l’indique si bien, est utilisé pour comparer
deux ou plusieurs politiques de sécurité. Cette opération de comparaison vise à analyser les
liens entre les politiques. L’objectif est d’amener des éléments de réponse de façon formelles
51
Figure 3.1 – Architecture du cadriciel AVTAC [43].
52
— Inégalité triangulaire : d(x; z) ≤ d(x; y) + d(y; z).
L’analyseur de logs permet de repérer et de faire une analyse prédictive des évènements mal-
veillants sur le système. Il permet d’avoir les différents profils de comportements liés aux
utilisateurs dans le but d’une meilleure optimisation des ressources allouées.
Cet outil donne lieu à la vérification de la politique de sécurité implémentée dans le sys-
tème. Elle permet donc d’assurer la conformité des droits d’accès par rapport à la politique
de sécurité. (Voir section 3.4)
• Extension :
L’extension de notre framework est un outil de classification qui a pour objectif de présenter
des critères de classification qui sont en relation avec le contrôle d’accès, le but étant d’aider
à l’agencement des rôles et des ressources de données.
L’outil AVTAC est une application développée en JAVA et FLEX doté de nombreux modules
jouant chacun un rôle important dans le fonctionnement de outil, nous nous intéresserons entre
autres aux modules suivants :
— Outils d’approvisionnement
Les outils d’approvisionnement ont pour fonction de collecter les différents objets qui
traduisent un droit d’accès dans une plateforme donnée. C’est dans ce module que mon
étude de recherche vient contribuer à l’outil AVTAC. Ils permettent aussi d’établir un
standard quant à la représentation des différents droits d’accès en XACML qui est un
langage défini pour le contrôle d’accès.
— Ontologie
L’ontologie aide à établir une analyse des droits d’accès afin de vérifier le respect ou non
d’une politique de sécurité donnée.
— Générateur de rapport
Le générateur de rapport produit un fichier (.pdf) sur lequel sont mentionnés les accès
non conformes à la politique de sécurité et fait une proposition corrective afin d’aider à
la conformité.
53
Architecture
Générateur de rapport
Moteur de validation des droits d’accès
Politique de sécurité stocker Ontologie instanciée Opérations
Outil de provisioning
Traducteur XML
Linux Script Windows Script Routeur Script Appli Script Mac Script
La démarche, comme illustrée dans la figure 3.2, consiste dans un premier temps, à collecter
les objets qui expriment les droits d’accès dans les différentes plateformes informatiques par
des scripts adaptés à chaque système.
Dans un deuxième temps, l’ontologie sera initialisée avec ces objets afin d’afficher les droits
d’accès valides et non valides selon une politique de sécurité donnée. Une série de requêtes
peut être effectuée grâce au langage de requête de l’ontologie DL-query.
Finalement, un rapport sera généré afin de permettre aux administrateurs de mieux appré-
hender l’apport de solution pour les droits d’accès non valide.
Dans le but d’améliorer la qualité de l’outil de validation, la représentation des droits d’accès
54
des différentes plateformes se doit d’être standardisée. À cet effet, on traduira les objets de
type accès en XACML, car ce langage est très riche de par sa sémantique et donc facilite la
traduction des objets. Aussi XACML permet aisément de représenter une politique de sécurité
et dans la pratique de cette traduction nous nous appuierons sur une grammaire BNF (Voir
Annexe A.3). Cette grammaire BNF a été spécifiée à l’aide d’une formalisation d’un sous-
ensemble de XACML-3.0 et se compose d’éléments suivants :
— Un ensemble de politiques (PolicySet)
— Un PolicySet est constitué d’autres politiques (Policy) et de règles (Rules). Chaque
ensemble de politiques obéit à un algorithme de combinaison (Ralg) qui décrit la façon
de combiner les décisions de ses politiques.
— Une règle se compose d’une cible (Target), d’un effet (REffect), et d’une condition (At-
tEnv ). Une cible représente l’objet sur lequel la règle s’applique et l’effet quant à lui
traduit la décision d’accès qui peut être Permit ou Deny.
Dans la section 3.5, nous allons explorer les détails de cette traduction.
Comme indiqué dans la section 2.4 (contrôle d’accès sous Windows), une entrée de contrôle
d’accès (ACE) est la structure qui enregistre les permissions pour un compte de sécurité
donné et spécifie aussi les propriétés d’audit pour ce compte sur un objet. Ce script permet
de parcourir un répertoire et ses sous-répertoires dans le but de lire les autorisations (masque
d’accès) contenues dans les ACE. Il spécifie également :
— Le type de l’objet : Un dossier ou un fichier
— Le chemin d’accès de l’objet
— Le propriétaire de l’objet
— Le sujet (Utilisateurs ou groupe)
— La permission (accepté ou refusé)
— L’autorisation qui définit le droit d’accès à l’objet.
C’est le lieu de rappeler qu’il existe deux types d’autorisations dans une ACE :
— Des autorisations standards : lecture ; écriture ; affichage du contenu du dossier ; modi-
fication ; contrôle total ; lecture et exécution.
— Des autorisations spécifiques : Parcours du dossier/exécution du fichier ; création de
dossiers/ajout de données ; lecture des autorisations ; liste du dossier/lecture de don-
55
nées ; écriture d’attributs ; modification des autorisations ; lecture des attributs ; écri-
ture d’attributs étendus ; appropriation ; lecture des attributs étendus ; suppression de
sous-dossiers et de fichiers ; synchronisation ; création de fichiers/écriture de données ;
suppression.
Le résultat du script ci-dessus produit en sortie ce fichier txt tout en sachant que le dossier
test1 contient un seul fichier provisio.vbs.
56
F|C:\test1\provisio.vbs|emmanuel|Utilisateurs authentifiÈs|Allowed|FILE_APPEND_DATA
F|C:\test1\provisio.vbs|emmanuel|Utilisateurs authentifiÈs|Allowed|FILE_DELETE
F|C:\test1\provisio.vbs|emmanuel|Utilisateurs authentifiÈs|Allowed|FILE_EXECUTE
F|C:\test1\provisio.vbs|emmanuel|Utilisateurs authentifiÈs|Allowed|FILE_READ_ATTRIBUTES
F|C:\test1\provisio.vbs|emmanuel|Utilisateurs authentifiÈs|Allowed|FILE_READ_CONTROL
F|C:\test1\provisio.vbs|emmanuel|Utilisateurs authentifiÈs|Allowed|FILE_READ_DATA
F|C:\test1\provisio.vbs|emmanuel|Utilisateurs authentifiÈs|Allowed|FILE_READ_EA
F|C:\test1\provisio.vbs|emmanuel|Utilisateurs authentifiÈs|Allowed|FILE_SYNCHRONIZE
F|C:\test1\provisio.vbs|emmanuel|Utilisateurs authentifiÈs|Allowed|FILE_WRITE_ATTRIBUTES
F|C:\test1\provisio.vbs|emmanuel|Utilisateurs authentifiÈs|Allowed|FILE_WRITE_DATA
F|C:\test1\provisio.vbs|emmanuel|Utilisateurs authentifiÈs|Allowed|FILE_WRITE_EA
Dans Linux, nous avons fait le choix de récupérer les droits d’accès via un script bash. Le script
proposé ci-dessous permet de récupérer les droits d’accès de l’ensemble des fichiers contenus
dans le dossier Documents afin de les consignés dans un fichier texte portant le nom de la
distribution Linux "drsnake-debian._objet.txt".
#!/bin/bash
ls -R -l ${PWD}/* >> /home/emmanuel/Documents/$HOSTNAME._objet.txt
Le résultat du script ci-dessus produit en sortie ce fichier txt tout en sachant que le dossier
Documents contient 4 fichiers et un dossier doc.
/home/emmanuel/Documents/doc:
total 2
-rw-r--r-- 1 emmanuel emmanuel 1912 6 mar 20:13 drsnake-debian._group.txt
-rw-r--r-- 1 emmanuel emmanuel 3474 6 mar 20:13 drsnake-debian._user.txt
57
-La mise en œuvre de la politique de sécurité par des requêtes DL-query.
-La sollicitation d’un raisonneur pour l’analyse de conformité.
• Instanciation de l’ontologie :
Avant d’aborder ce point, donnons une définition pratique d’une ontologie selon [55]. Une
ontologie est une collection ordonnée des descriptions de classes, de propriétés et d’instances.
Une classe représente un concept du domaine défini par l’ontologie. Une instance représente
un individu concret relevant de cette classe. Une propriété représente une relation qui exprime
un type d’interaction entre les classes.
Dans ce point, il est question du peuplement (transfert de données) de l’ontologie par les
données collectées via les outils d’approvisionnement. Cette opération est effectuée de façon
automatique grâce à l’API de gestion de l’ontologie.
Effectivement, avec l’aide de parseurs XML, les droits d’accès sont respectivement assignés
à leur classe vers les propriétés qui les déterminent. Ce processus pouvant être long, il est
recommandé de l’exécuter une fois et ensuite de déterminer seulement les instances qui ont
été modifiées afin d’effectuer la mise à jour de l’ontologie.
La politique de sécurité d’une organisation est souvent décrite dans un document texte qui
est perceptible des dirigeants et autres membres de l’organisation. Alors, il est essentiel de
traduire ce document pour une utilisation informatique. Nonobstant l’établissement de plu-
sieurs langages informatiques tels que XACML, qui donne lieu à la spécification de politiques
de sécurité, il est important de se servir de cette politique pour générer plusieurs requêtes DL-
query afin d’interroger automatiquement l’ontologie. En réalité, les requêtes mises en œuvre
servent à vérifier la validité ou non des droits d’accès.
À titre d’exemple, prenons une politique de sécurité qui stipule que le groupe des administra-
teurs ont accès qu’en lecture à un fichier PS.txt et que le root seul a le droit d’écriture sur le
fichier PS.txt.
Générons une requête DL-Querry pour déterminer tous les droits d’accès qui ne sont pas
conformes à cette politique :
58
? Rôle : néant ;
? Ressource : PS.txt ;
— Exécution de la commande ls -l pour afficher les droits d’accès du fichier PS.txt ;
# ls -l
-rw-r--r-- 1 root root 0 20 dec. 9:49 PS.txt
Ainsi pour l’analyse de conformité entre la validité des droits d’accès et la politique de
sécurité, on aura comme résultat, les instances de la requête suivantes :
1. Un utilisateur root a le droit d’écriture.
2. Les autres utilisateurs ont le droit de lecture.
3. Aucun utilisateur n’a le droit d’exécution.
Une fois ces trois points accomplis, un rapport pdf est produit pour donner la liste des droits
d’accès valide et non valide. Nous verrons dans la section qui suit, une illustration pour nous
aider à mieux cerner tout le processus de l’outil.
59
Soit :
Dans l’utilisation de XACML pour la représentation des droits d’accès Linux, on va s’accorder
sur les règles suivantes :
• Chaque action permise et action non permise est traduite en une règle XACML avec comme
attributs appropriés : subject, resource et action.
En appliquant ces règles à l’exemple ci-dessus, on obtient alors un fichier XACML (Voir Annexe
A.2.)
En nous appuyons sur la syntaxe SDDL, on peut maintenant établir une corrélation entre les
langages SDDL et XACML.
Ces deux phases ayant été accomplies, on peut produire un exemple de traduction d’un droit
d’accès Windows vers XACML.
Soit le SDDL du fichier test.txt suivant :
- SDDL
0:S-1-5-21-718938447-1703640164-3469265397-1000
G:S-1-5-21-718938447-1703640164-3469265397-513
D:AI(D;;CC;;;\S-1-5-21-718938447-1703640164-3469265397-1001)
(A;ID;FA;;;BA)
60
Security Descriptor : := {Owner_SID ;
Group_SID ; DACL}
DACL : := {Dacl-flag, ACE}
ACE : := {ACE Type ; ACE Flag ; Rights ; SID}
DACL : := hace :{Ace}i
ACE Type : := A|D
ACE Flag : := CI | OI | NP
IO | ID | SA | FA
Rights : := GA | GR | GW | GX | ...
SID : := S-1-5-21domaine-500
| S-1-1-0
DACL Flag : := P | AR | AI
| AU | SY | ...
Owner_SID : := S-1-5-21domaine-500
Group_SID : := BA | ...
Windows XACML
Security Descriptor ⇒ Policies
ACE ⇒ Rules
Rights, SID ⇒ Targets
ACE :Type ⇒ Effect
Ralg =fisrt-applicable
En appliquant les règles de traduction de SDDL vers XACML, on obtient le document XACML
qui suit :
<POLICY first-applicable>
<TARGET><AnyOf><AllOf>
<Match MatchID = string-equal>
<AttrValue> text.txt < /AttrValue>
<AttributeDesignator Category= resource AttributeId
= resource-id DataType= string MustBePresent= boolean />
</Match >
</All0f> </AnyOf> </TARCET>
<RULE Permit>
<TARGET><AnyOf><All0f>
<Match MatchID = string-equal>
<AttrValue> 0:S-1-5-21-718938447-1703640164-3469265397-1000
</AttrValue> <AttributeDesignator Category= Subject AttributeId =
subject-id DataType= string MustBepresent= boolean />
61
</Match >
</All0f></AnyOf></TARGET>
</RULE
<RULE Deny>
<TARGET><AnyQf><AllOf>
<Match MatchID = string-equal>
<AttrValue> S-1-5-21-718938447-1703640164-3469265397-1001 </AttrValue>
<AttributeDesignator Category= Subject AttrtbuteId =
subject-id DataType= string MustBepresent= boolean />
</Match >
</All0f></AnyOf>
<AnyOf><AllOf>
<Match MatchID = string-equal>
<AttrValue> CC < /AttrValue>
<AttributeDesignator Category= action AttrtbuteId =
action-id DataType= strtng MustBePresent= boolean />
</Match >
</All0f> </AnyOf>
</TARGET>
</RULE>
<RULE Permit>
<TARGET><AnyOf><AllOf>
<Match MatchID = string-equal>
<AttrValue> BA < /AttrValue>
<AttributeDesignator Gategory = Subject AttributeID =
subject-id DataType = string MustBePresent= boolean />
</Match >
</All0f> </AnyOf>
<AnyOf><All0f>
<Match MatchID = string-equal>
<Attrvalue> FA < /AttrValue>
<AttributeDesignator Category= action AttributeId =
action-id DataType= String MustBePresent= boolean />
</Match>
</All0f> </AnyOf> </TARGET>
</RULE >
</POLICY >
— Le Chargeur de fichier XACML (Get from File) permet de recueillir les droits d’accès à vérifier
à partir d’un fichier XACML existant.
— L’outil de scan réseau (Get from Network ) quant à lui permet de faire une découverte réseau et
62
déterminer les postes sur lesquels on peut collecter les droits d’accès. Ce processus fait également
appel à la fonction d’extraction des outils d’approvisionnement.
— La liste des machines (Machine) dont les droits d’accès seront vérifiés.
— La liste des objets (Access list) à instancier dans l’ontologie.
— Les boutons de traitement pour commencer le processus de validation (Get access, Access-
Validation, Xacml Policies Formal Validation).
Cette première interface permet de faire l’instanciation de l’ontologie. Ensuite une fois complété, on
accède à l’interface de la figure 3.4 où va se faire la validation de la cohérence et les quelques opérations
liées à la comparaison de politiques de sécurité.
63
Figure 3.4 – Capture 2 d’écran de l’outil de validation.
Une MIB est un ensemble d’informations structuré sur une entité réseau, par exemple un routeur, un
commutateur ou un serveur. Ces informations peuvent être récupérées ou modifiées par SNMP. [68]
La MIB possède une structure hiérarchisée : les informations sont rassemblées en arbre. Chacune des
informations possède un OID (object identifier) et un nom. (Voir figure 3.5)
Dans le cadre pratique de cette ébauche, avec SNMP comme support, nous avons élaboré un script
64
qui permet de récupérer les droits d’accès sur une machine distante Linux.(Voir Annexe A.4).
Ce script est écrit dans le langage de programmation python et est enregistré dans le fichier script.py.
Il est à noter qu’avant d’exécuter ce script, l’outil pysnmp[69] doit être installé sur le serveur (machine
qui émet la requête). La commande pour démarrer le serveur python se fait en ligne de commande
(invité de commande) en précisant le chemin d’accès vers le fichier script.py. Ensuite, une fois le serveur
python démarré, nous exécutons la commande snmpwalk comme suit :
snmpwalk est une commande Unix qui permet d’interroger une machine pourvue d’un agent SNMP à
travers le réseau.[70]
La commande ci-dessus qui est associée au script script.py s’interprète de la façon suivante : Afficher
les droits d’accès (ls -l ) de la machine distante avec les paramètres suivants :
Définitivement, notre script (script.py) permet de récupérer les droits d’accès d’une machine Linux
(Manu), les accès étant sur une Mib qu’on a créée dynamiquement (class MibCryptoShare(MibScalarInstance)),
en toute sécurité (authentification et chiffrement).
3.7 Conclusion
L’analyse de conformité est incontournable pour la prévention des failles de sécurité et des pertes finan-
cières. De nos jours, les systèmes informatiques sont tellement évolutifs et variés que l’administration
manuelle rend pratiquement impossible la gestion des droits d’accès. AVTAC, une solution d’automa-
tisation informatique, assure la sécurité et garantit une bonne gestion automatique des droits d’accès.
Les principales fonctionnalités de l’outil de validation consistent :
— À collecter les objets qui expriment les droits d’accès dans les différentes plateformes informa-
tiques par des scripts adaptés à chaque système.
— À initialiser l’ontologie avec ces objets afin d’afficher les droits d’accès valides et non valides
selon une politique de sécurité donnée.
— À générer un rapport afin de permettre aux administrateurs de mieux appréhender l’apport de
solution pour les droits d’accès non valide.
65
Conclusion générale
Le cycle de vie des utilisateurs au sein d’une organisation et les processus qui y sont associés ont des
conséquences directes sur leurs droits dans le système informatique.
Un système complet de gestion des identités doit ainsi donner une vue globale des habilitations et des
accès au SI. Il nous permet alors de maîtriser le risque opérationnel et de répondre aux contraintes
réglementaires.
Dans ce mémoire, nous avons d’une part fait une synthèse de l’état de l’art des différents outils et
techniques permettant la gestion des droits d’accès dans les réseaux informatiques et d’autre part de
développer des outils permettant de récupérer automatiquement ces droits d’accès et de les analyser.
Dans le chapitre 1, nous avons décrit de façon générale, les principes fondamentaux et les pratiques
liées à une bonne gestion des identités et des droits d’accès. Aussi à l’aide d’exemples, nous avons fait
la synthèse de quelques outils de contrôle d’accès sans oublier de définir quelques normes de sécurité.
Une revue de littérature portant sur le contrôle d’accès sous Windows et Linux a été élaborée dans le
chapitre 2. Ceci a permis de comprendre comment se fait la gestion du contrôle d’accès sur les systèmes
d’exploitation les plus utilisés dans le monde de l’informatique.
Le chapitre 3 a été consacré à la présentation du framework AVTAC ainsi qu’au développement des
outils de provisioning pour une meilleure gestion automatique des droits d’accès, sans oublier le méca-
nisme de validation de ceux-ci et l’outil développé avec SNMP qui permet de récupérer les objets sur
des machines distantes Linux.
Perspective
En mettant en œuvre un framework à la place d’un outil ordinaire, on a ainsi permis à AVTAC de
couvrir l’ensemble des aspects de la gestion des droits d’accès et de l’analyse de conformité. De plus,
d’autres outils pourront être ajoutés pour enrichir notre framework, il s’agit entre autres :
— Des outils pour récupérer les objets de type accès dans certaines plateformes systèmes (Androïd,
IOS, MacOS...), des équipements réseau (routeurs, switch, hub..) et aussi des bases de données
spécifiques.
— Des outils capables de récupérer les droits d’accès sur des machines distantes Windows.
67
Annexe A
strFolderName = folder
SE_DACL_PRESENT = &h4
ACCESS_ALLOWED_ACE_TYPE = &h0
ACCESS_DENIED_ACE_TYPE = &h1
FILE_ALL_ACCESS = &h1f01ff
FOLDER_ADD_SUBDIRECTORY = &h000004
FILE_DELETE = &h010000
FILE_DELETE_CHILD = &h000040
FOLDER_TRAVERSE = &h000020
FILE_READ_ATTRIBUTES = &h000080
FILE_READ_CONTROL = &h020000
FOLDER_LIST_DIRECTORY = &h000001
FILE_READ_EA = &h000008
69
FILE_SYNCHRONIZE = &h100000
FILE_WRITE_ATTRIBUTES = &h000100
FILE_WRITE_DAC = &h040000
FOLDER_ADD_FILE = &h000002
FILE_WRITE_EA = &h000010
FILE_WRITE_OWNER = &h080000
intControlFlags = objSD.ControlFlags
70
AccessType = " FOLDER_TRAVERSE "
MonFic.Writeline "D"&"|"& folder&"|"& objSD.Owner.Name &
"|" & objACE.Trustee.Name&"|"&Allowed_Denied &"|"& AccessType
End If
If objACE.AccessMask AND FILE_READ_ATTRIBUTES Then
AccessType = "FILE_READ_ATTRIBUTES "
MonFic.Writeline "D"&"|"& folder&"|"& objSD.Owner.Name &
"|" & objACE.Trustee.Name&"|"&Allowed_Denied &"|"& AccessType
End If
If objACE.AccessMask AND FILE_READ_CONTROL Then
AccessType = "FILE_READ_CONTROL "
MonFic.Writeline "D"&"|"& folder&"|"& objSD.Owner.Name &
"|" & objACE.Trustee.Name&"|"&Allowed_Denied &"|"& AccessType
End If
If objACE.AccessMask AND FOLDER_LIST_DIRECTORY Then
AccessType = " FOLDER_LIST_DIRECTORY "
MonFic.Writeline "D"&"|"& folder&"|"& objSD.Owner.Name &
"|" & objACE.Trustee.Name&"|"&Allowed_Denied &"|"& AccessType
End If
If objACE.AccessMask AND FILE_READ_EA Then
AccessType = "FILE_READ_EA "
MonFic.Writeline "D"&"|"& folder&"|"& objSD.Owner.Name &
"|" & objACE.Trustee.Name&"|"&Allowed_Denied &"|"& AccessType
End If
If objACE.AccessMask AND FILE_SYNCHRONIZE Then
AccessType = "FILE_SYNCHRONIZE "
MonFic.Writeline "D"&"|"& folder&"|"& objSD.Owner.Name &
"|" & objACE.Trustee.Name&"|"&Allowed_Denied &"|"& AccessType
End If
If objACE.AccessMask AND FILE_WRITE_ATTRIBUTES Then
AccessType = "FILE_WRITE_ATTRIBUTES "
MonFic.Writeline "D" &"|"& folder&"|"& objSD.Owner.Name &
"|" & objACE.Trustee.Name&"|"&Allowed_Denied &"|"& AccessType
End If
If objACE.AccessMask AND FILE_WRITE_DAC Then
AccessType = "FILE_WRITE_DAC "
MonFic.Writeline "D" &"|"& folder&"|"& objSD.Owner.Name &
"|" & objACE.Trustee.Name&"|"&Allowed_Denied &"|"& AccessType
End If
If objACE.AccessMask AND FOLDER_ADD_FILE Then
AccessType = " FOLDER_ADD_FILE "
MonFic.Writeline "D" &"|"& folder&"|"& objSD.Owner.Name &
"|" & objACE.Trustee.Name&"|"&Allowed_Denied &"|"& AccessType
End If
71
If objACE.AccessMask AND FILE_WRITE_EA Then
AccessType = "FILE_WRITE_EA "
MonFic.Writeline "D" &"|"& folder&"|"& objSD.Owner.Name &
"|" & objACE.Trustee.Name&"|"&Allowed_Denied &"|"& AccessType
End If
If objACE.AccessMask AND FILE_WRITE_OWNER Then
AccessType = "FILE_WRITE_OWNER "
MonFic.Writeline "D" &"|"& folder&"|"& objSD.Owner.Name &
"|" & objACE.Trustee.Name&"|"&Allowed_Denied &"|"& AccessType
End If
Next
Else
WScript.Echo "No DACL present in security descriptor"
End If
end sub
strFileName = file
SE_DACL_PRESENT = &h4
ACCESS_ALLOWED_ACE_TYPE = &h0
ACCESS_DENIED_ACE_TYPE = &h1
FILE_ALL_ACCESS = &h1f01ff
FILE_APPEND_DATA = &h000004
FILE_DELETE = &h010000
FILE_DELETE_CHILD = &h000040
FILE_EXECUTE = &h000020
FILE_READ_ATTRIBUTES = &h000080
FILE_READ_CONTROL = &h020000
FILE_READ_DATA = &h000001
FILE_READ_EA = &h000008
FILE_SYNCHRONIZE = &h100000
FILE_WRITE_ATTRIBUTES = &h000100
FILE_WRITE_DAC = &h040000
FILE_WRITE_DATA = &h000002
FILE_WRITE_EA = &h000010
FILE_WRITE_OWNER = &h080000
72
intControlFlags = objSD.ControlFlags
73
MonFic.Writeline "F" & "|" & file & "|" & objSD.Owner.Name & "|" & objACE.Trustee.Name&
"|"&Allowed_Denied &"|"& AccessType
End If
If objACE.AccessMask AND FILE_READ_DATA Then
AccessType = "FILE_READ_DATA "
MonFic.Writeline "F" & "|" & file & "|" & objSD.Owner.Name & "|" & objACE.Trustee.Name&
"|"&Allowed_Denied &"|"& AccessType
End If
If objACE.AccessMask AND FILE_READ_EA Then
AccessType = "FILE_READ_EA "
MonFic.Writeline "F" & "|" & file & "|" & objSD.Owner.Name & "|" &
objACE.Trustee.Name&"|"&Allowed_Denied &"|"& AccessType
End If
If objACE.AccessMask AND FILE_SYNCHRONIZE Then
AccessType = "FILE_SYNCHRONIZE "
MonFic.Writeline "F" & "|" & file & "|" & objSD.Owner.Name & "|" &
objACE.Trustee.Name&"|"&Allowed_Denied &"|"& AccessType
End If
If objACE.AccessMask AND FILE_WRITE_ATTRIBUTES Then
AccessType = "FILE_WRITE_ATTRIBUTES "
MonFic.Writeline "F" & "|" & file & "|" & objSD.Owner.Name & "|" &
objACE.Trustee.Name&"|"&Allowed_Denied &"|"& AccessType
End If
If objACE.AccessMask AND FILE_WRITE_DAC Then
AccessType = "FILE_WRITE_DAC "
MonFic.Writeline "F" & "|" & file & "|" & objSD.Owner.Name & "|" &
objACE.Trustee.Name&"|"&Allowed_Denied &"|"& AccessType
End If
If objACE.AccessMask AND FILE_WRITE_DATA Then
AccessType = "FILE_WRITE_DATA "
MonFic.Writeline "F" & "|" & file & "|" & objSD.Owner.Name & "|" &
objACE.Trustee.Name&"|"&Allowed_Denied &"|"& AccessType
End If
If objACE.AccessMask AND FILE_WRITE_EA Then
AccessType = "FILE_WRITE_EA "
MonFic.Writeline "F" & "|" & file & "|" & objSD.Owner.Name & "|" &
objACE.Trustee.Name&"|"&Allowed_Denied &"|"& AccessType
End If
If objACE.AccessMask AND FILE_WRITE_OWNER Then
AccessType = "FILE_WRITE_OWNER "
MonFic.Writeline "F" & "|" & file & "|" & objSD.Owner.Name & "|" &
objACE.Trustee.Name&"|"&Allowed_Denied &"|"& AccessType
End If
Next
74
Else
WScript.Echo "No DACL present in security descriptor"
End If
end sub
75
<TARGET><AnyOf><All0f>
<Match MatchID = string-equal>
<AttrValue> root < /AttrValue>
<AttributeDesignator Category= Subject AttributeId =
subject-id DataType= string MustBePresent= boolean />
</Match >
</All0f> </AnyOf>
<AnyOf><All0f>
<Match MatchID = stzing-equal>
<AttrValue> r < /AttrValue>
<AttributeDesignator Category= action AttributeId =
action-id DataType= string MustBePresent= boolean />
</Match >
</AllOf>
<All0f>
<Match MatchID = string-equal>
<AttrValue> w < /AttrValue>
<AttributeDesignator Category= action AttributeId =
action-id DataType= string MustBePresent= boolean />
</Match >
</All0f> </AnyOf> </TARGET>
</RULE >
<RULE Deny>
<TARGET><AnyOf><All0f>
<Match MatchID = string-equal>
<AttrValue> emmanuel < /AttrValue>
<AttributeDesignator Category= Subject AttributeId =
group-id DataType= strang MustBePresent= boolean />
</Match >
</All0f> </AnyOf>
<AnyOf><All0f>
<Match MatchID = string-equal>
<AttrValue> x < /AttrValue>
<AttributeDesignator Category= action AttributeId =
action-id DataType= string MustBePresent= boolean />
</Match > </All0f>
<Allof>
<Match MatchID = string-equal>
<AttrValue> w < /AttrValue>
<AttributeDesignator Category= actaon AttributeId =
action-id DataType= string MustBePresent= boolean />
</Match >
</All0f> </AnyOf> </TARGET>
</RULE >
76
<RULE Permit>
<TARGET><AnyOf><All0f>
<Match MatchID = string-equal>
<AttrValue> emmanuel < /AttrValue>
<AttributeDesignator Category= Subject AttributeId =
group-id DataType= string MustBePresent= boolean />
</Match >
</All0f> </AnyOf>
<AnyOf><AllOf>
<Match MatchID = string-equal>
<AttrValue> r < /AttrValue>
<AttributeDesignator Category= action AttributeId =
action-id DataType= string MustBePresent= boolean />
</Match >
</AllOf> </AnyOf> </TARGET>
</RULE >
<RULE Deny>
<TARGET><AnyOf><AllOf>
<Match MatchID = string-equal>
<AttrValue> x < /AttrValue>
<AttributeDesignator Categor/= action AttributeId =
action-id DataType= string MustBePresent= boolean />
</Match > </AllOf>
<AllOf>
<Match MatchID = string-equal>
<AttrValue> w < /AttrValue>
<AtrributeDesignator Category= action AttributeId =
action-id DataType=string MustBePresent= boolean />
</Match >
</AllOf> </AnyOf> </TARGET>
</RULE >
<RULE Permit>
<TARGET><AnyOf><AllOf>
<Match MatchID = string-equal>
<AttrValue> r < /AttrValue>
<AttributeDesignator Category= action AttributeId =
action-id DataType= string MustBePresent= boolean />
</Match > </AllOf>
</AllOf> </AnyOf> </TARGET>
</RULE >
</POLICY >
77
78
A.4 Script d’extraction des droits d’accès Linux via SNMP
# -*- coding: utf-8 -*-
"""
Created on Mon Mar 31 19:51:36 2014
@author: Manu
"""
import subprocess
from twisted.internet import reactor
from pysnmp.entity import engine, config
from pysnmp.entity.rfc3413 import cmdrsp, context
from pysnmp.carrier.twisted.dgram import udp
from pysnmp.carrier.twisted import dispatch
from pysnmp.proto.api import v2c
from pysnmp import debug
snmpEngine = engine.SnmpEngine()
snmpContext = context.SnmpContext(snmpEngine)
mibBuilder = snmpContext.getMibInstrum().getMibBuilder()
class User:
self.username=username
self.auth=auth
self.enc=enc
79
self.securitylevel=securitylevel
self.authProtocol=authProtocol
self.encProtocol=encProtocol
class ACL:
self.user = user
self.mode = mode
class MibCryptoShare(MibScalarInstance):
self.value = subprocess.check_output(["ls","-l"]);
self.scalar = MibDefaultScalar((1,4))
return self.getSyntax().clone(self.value)
class MibDefaultScalar(MibScalar):
self.oid=oid
80
user_max = User(username=’Manu’,
auth=’ManuSPassword’,
enc=’ManuSSecondPassword’,
securitylevel=’authPriv’,
authProtocol=config.usmHMACMD5AuthProtocol,
encProtocol=config.usmAesCfb128Protocol)
mibBuilder.exportSymbols(
snmpEngine.registerTransportDispatcher(dispatch.TwistedDispatcher())
config.addSocketTransport(
snmpEngine,
udp.domainName,
udp.UdpTwistedTransport().openServerMode((’127.0.0.1’, 2222))
81
)
config.addV3User(
snmpEngine, user_max.username,
user_max.authProtocol, user_max.auth,
user_max.encProtocol, user_max.enc
(1,4), (1,4))
snmpContext = context.SnmpContext(snmpEngine)
# Register SNMP Applications at the SNMP engine for particular SNMP context
cmdrsp.GetCommandResponder(snmpEngine, snmpContext)
cmdrsp.SetCommandResponder(snmpEngine, snmpContext)
cmdrsp.NextCommandResponder(snmpEngine, snmpContext)
cmdrsp.BulkCommandResponder(snmpEngine, snmpContext)
reactor.run();
82
Bibliographie
[1] T. Moses and S. Godik. “eXtensible Access Control Markup Language (XACML)”. Ver-
sion 2.0, Feb. 2005 “http ://docs.oasis-open.org/xacml/access_control-xacml-2.0-core-spec-
cd-01.pdf”
[2] M. Jaume & C. Morisset. “Un Cadre sémantique pour le contrôle d’accès.”. TSI (Tech-
nique et Science Informatiques), pages 951-976, 2008.
[3] A. Kalam & Y. Deswarte. “un modèle de contrôle d’accès basé sur les organisations.”.
Cahiers francophones de la recherche en sécurité de l’information Numéro II, 1er trimestre
2003, pages 30-43, Projet MP6, 2003.
[4] J. Rushby. “The Bell and La Padula Security Model”. Computer Science Laboratory, SRI
International, Menlo Park, CA, Draft Technical Note. 1986.
[5] F. Giunchiglia ; R. Zhang ; B.Crispo ; “RelBAC : Relation Based Access Control,” Se-
mantics, Knowledge and Grid, 2008. SKG ’08. Fourth International Conference on , vol., no.,
pp.3,11, 3-5 Dec. 2008.
[6] J. Ma ; K. Adi ; M. Mejri ; L. Logrippo, “Risk analysis in access control systems,”Privacy Se-
curity and Trust (PST), 2010 Eighth Annual International Conference on , vol., no., pp.160,166,
17-19 Aug. 2010.
[8] E. Bertino ; A. Bonatti ; E. Ferrari, “Trbac : A temporal role-based access control mo-
del.”. ACM Trans. Inf. Syst. Secur. 4, 3 (2001), 191–233.
[9] A. Grunbacher “Posix access control lists on linux.”In USENIX Annual Technical Confe-
rence, FREENIX Track, USENIX (2003), 259–272.
83
[13] E. Dreux La sécurité sous Windows Vista Editions ENI, 2009.
[14] C. BLAESS, Shells linux et unix par la pratique. Editions Eyrolles, 2007.
[15] G. Lapointe ; S. Bray, Automating Sharepoint 2010 with Windows Powershell 2.0. John
Wiley Sons, 2011.
[17] M. Anwari, GNOME 3 Application Development Beginner’s Guide Packt Publishing Ltd,
2013.
[19] L. Groupe, Lxde : Debian, Knoppix, Mandriva Linux, Fedora, Frugalware, Arch Linux,
Lubuntu, Slitaz Gnulinux, U-Lite General Books LLC, 2010.
[27] S. Cantor ; I. Moreh ; S. Philpott ; E. Maler, “Metadata for the OASIS Security Assertion
Markup Language (SAML) V2.0.” 2005.
84
[29] N. Debaes ; P. Pezziardi ; B. Vincent, 2007In Gestion des identités : une politique pour le
système d’information, Octo Technology, 214 pages.
[43] M. Mejri ; A. Khadija and E. Sadio A Framework for Automatic Auditing of Access
Control in Windows and Linux Systems/. (2013).
[44] B. Lampson. Protection and access control in operating systems. In Operating Systems,
Infotech State of the Art Report 14, 1972, pp 309-326, 1972.
[45] A. Harrison ; W. Ruzzo and J. Ullman. Protection in operating systems. Commun. ACM,
19(8) :461471, 1976.
[46] S. Sandhu. The typed access matrix model. In Proc. IEEE Symposium on Research in
Security and Privacy, pages 122-136, 1992.
85
[47] G. Martella ; P. Samarati ; S. Castano ; M. G. Fugini, Database Security. Addison-Wesley
ACM Press, 1995.
[48] D. E. Bell ; L. J. La Padula. Secure computer system : Unifed exposition and multics
interpretation. Proc. IEEE Computer Society Symposium on Research in Security and Pri-
vacy, pp. 215-228., March 1976.
[49] D. Brewer and M. Nash. The chinese wall security policy. Proc. IEEE Computer So-
ciety Symposium on Research in Security and Privacy, pp. 215-228., April 1989.
[50] E. Bertino ; J. W. Byun ; Y. Sohn. Systematic control and management of data inte-
grity. Proceedings of the eleventh ACM symposium on Access control models and technologies,
June 2006.
[57] T. Fink, M. Koch, C. Oancea. “Specification and Enforcement of Access Control in Hetero-
geneous Distributed Applications”.International Conference on Web Services (ICWS- Europe),
2003, pp. 88-100.
86
[59] J. Ma ; K. Adi ; M. Mejri & L. Logrippo, (2010, August). Risk analysis in access control
systems. In Privacy security and trust (PST), 2010 Eighth annual international conference on
(pp. 160-166).
[60] N. Debaes & B. Vincent (2007). Gestion des identités : une politique pour le système
d’information. OCTO Technology.
[67] ISO/IEC 27002 :2013 Information technology — Security techniques — Code of practice
for information security controls (second edition) : http ://www.iso27001security.com/html/27002.html#Sectio
[71] ISO/IEC 27001 :2013 Information technology — Security techniques — Information se-
curity management systems - Requirements
87