Chapitre 3. Évaluation de requêtes et ontrle d'aès
3.6. Évaluation de requêtes sous ontrle d'aès
Nousmontreronsmaintenant,omment inorporerànotrevuelausale
d'évalua-tion derequêtes,les politiquesdu ontrle d'aès. Nousmodéliserons esdernières
à l'aide des lauses de Horn ontraintes. Pour motiver notre approhe, nous
om-mençons par un exemple:
Exemple 3.3. Considérons un doument XML représentant une faulté d'une
uni-versité (Figure 3.4). On suppose que deux atégories d'utilisateurs ont l'aès à e
doument des employés administratifs Adm, et aadémiques Aad mais les
représentantsde es deux groupes nepeuvent pas aéder à la même information:
1. Adm un utilisateur administratif ne peut pas aéder à l'information
suiv-ante: lenomd'unétudiant(
Student.name
)etlaatégorie(Course.grade
)d'unours que suit e dernier. Pourtant, il peut onsulter séparément es deux
infor-mations;
Faculty
Figure3.4. XMLdoumentreprésentantunefaulté
2. Aad un utilisateur aadémique peut aéder à l'information omposée du
nom d'un étudiant (
Student.name
) et la atégorie (Course.grade
) d'un de sesours, si etseulement sil'utilisateurest la personne responsable pourleours en
question(
Course.resp
).On représente les atégories d'utilisateurs Adm et Aad par des prédiats unaires
Adm(x)
etAcad(x)
, qui s'évaluent en vrai si et seulement si,x
est l'identiateur respetivement d'unemployéadministratifouaadémique. Voiiomment modéliserà l'aidedes lauses purementnégatives,la politique duontrle d'aès mentionnée:
1.
← Adm(∗), Student.name, Course.grade,
[Student.name
hildCourse.grade]
2.
← Acad(x), Student.name, Course.grade,
[Student.name
hildCourse.grade
,Course.resp 6= x]
Lapolitiqueduontrled'aèspourunutilisateuradministratifquelonque(
Adm(∗)
)sera violée, si les informations onsultées par e dernier peutêtre à plusieurs
reprises ontiendrontlenom d'un étudiant
Student.name
etla atégorie d'un deses ours
Course.grade
, e qui est exprimé parla lause 1.Pendantque l'utilisateurayantunidentiateur
id
évaluedes requêtes surledo-ument donné, on onstruira un ensemble
Hist id
, qui représentera les onnaissanes aquises parid
sur le doument Faulty. Cet ensemble sera omposé des lausespurement positives, et ontiendra au moins la lause
Cat(id) ←
, oùCat
représentela atégorie d'utilisateurs à laquelle appartient
id
. L'évaluation des requêtes parid
restera "séurisée" tant que l'ensembleHist id
sera onsistent ave l'ensembleP
omposé des lauses 1 et2, modélisant la politique du ontrle d'aès donnée.
On introduit maintenant les notions qui seront utilisées pour formaliser la
mé-thode présentée dans l'exemple plus haut. Par
U ser
on note un ensemble nid'utilisateurs,etpar
Category
onomprend l'ensembledesutilisateursd'unemême atégorie(parexemple,Category = Adm
dansl'Exemple3.3). OnassoieàU ser
etCategory
lesprédiatsunairesorrespondantU ser()
etCat()
. Fixons undoumentt
assujetti à une politique duontrle d'aèsP
. Les règles deP
sont représentées omme deslauses deHorn purementnégatives,souventaompagnées par deson-traintes exprimant leur portée. Tout littéral apparaissant dans une telle lause est
soitunprédiatunairedelaforme
U ser(x)
ouCat(x)
,soitunsymbolepropositionnel delaformeσ.a
,oùσ
estlenomd'unélémentsurledoumentt
,eta
estlenomd'unattribut assoié à
σ
. La ontrainte de portée estpar dénition de laforme[constr]
,où
constr
estuneonjontionniedesexpressionsσ.a
axisρ.b
,ouσ.a
dir-axisρ.b
,ou/et
σ.a op val
,oùop
estunopérateur deomparaison (=, ≤ , ≥
et.),etval
estunedesvaleurspossibles pour l'attribut
a
.Exemple 3.4. Par exemple, la lause
←− U ser(10), σ.a, ρ.b, δ.c, [σ.a
hildρ.b, σ.a
rightδ.c]
stipule que l'utilisateur ayant l'identité numéro
10
n'est pas autorisé à aéder enmême temps aux données stokées omme les valeurs des attributs
a
,b
etc
auxn÷udsayant desnoms
σ
,ρ
etδ
respetivement. Par"enmême temps"onomprend que l'utilisateur no10
ne peut pas déduire les trois informations mentionnées en évaluant une ou plusieurs requêtes surt
; par ontre, il lui est permis d'aéder, parexemple, à l'information
σ.a, ρ.b
, telle queσ.a
hildρ.b
, mais sans voir dans easla donnée
δ.c
, tellequeσ.a
rightδ.c
.Dénitions formelles
Soitundoument
t
,assujettiàune politiqueduontrle d'aèsP
. Considéronsun utilisateur ayant l'identiateurid
. Pour haque requêteQ
évaluée parid
surt
, etpourtoutn÷ud
v
det
traverséparlerundusystèmeS Q
orrespondantàQ
,onasso-ie trois ensembles de lauses positives, dénotés par
Hist id (v, Q)
,Scope id (v, Q)
etAccess id (v, Q)
. Cestroisensembles,dont lerleestdereprésenterlesonnaissanes del'utilisateurid
surledoumentt
,sontonstruitsd'unefaçonréursivedériteplusbas en quatre pas Step0 Step3 (pour plus de larté, on omet l'indie
id
pourHist
,Scope
etAccess
). NotonsparQ (0) , Q (1) , . . . , Q (i) , . . .
lasuitedesrequêtes quel'utilisateur
id
évalue suessivement surt
:Step0. On pose
i := 0
.Step1. Pour
v = root t
:ondénit
Scope(root t , Q (i) ) := ∅
;si
i = 0
,alorsHist(root t , Q (i) )
estlesingleton :{U ser(id) ←}
ou{Cat(id) ←}
;si
i > 0
,Hist(root t , Q (i) )
estdénit ommeHist(root t , Q (i−1) )
;si
i = 0
,alorsAccess(root t , Q (i) )
est l'ensemble vide;si
i > 0
,Access(root t , Q (i) )
est dénitommeHist(root t , Q (i−1) )
.Step2. Pour
v 6= root t
:Onsupposequel'utilisateurestentraind'évaluerlarequête
Q (i)
,etqu'onaonstruitdéjàdesensembles
Access(u ′ , Q (i) )
,Scope(u ′ , Q (i) )
etHist(u ′ , Q (i) )
,pourtoutn÷udu ′
que le run du systèmeS Q (i)
a traversé avantv
. Notons paru
le n÷ud à partirduquellerunde
S Q (i)
sedéplaeversv
. LesensemblesScope(v, Q (i) )
,Access(v, Q (i) )
et
Hist(v, Q (i) )
sont don onstruit ommesuit:1. Onsupposeque lesystème
S Q (i)
est entrain d'évaluer uneétapede loalisation omposantQ (i)
,dont l'axedenavigationestaxis. Soitunn÷udu ′
déjàtraversépar le run, tel que
u ′
axisv
soit satisfait surt
. Sia
(resp.att
) est un nomd'attribut en
u ′
(resp. env
), tel quename t (u ′ ).a
axisname t (v).att
apparaîtdans la ontrainte de portée d'une des lauses de
P
, alors on rée une lausepositive
[name t (u ′ ).a
axisname t (v).att] ←
,etonpose:
Scope(v, Q (i) ) =: Scope(v, Q (i−1) ) ∪ {[name t (u ′ ).a
axisname t (v).att] ←}
.2. Pour tout
name t (v).att
qui apparaît dans le orps d'une lause deP
, tel quename t (v).att
soitonsistent aveladonnéeσ
[L
℄(oùl'étapedeloalisationéval-uée àprésent par
S Q (i)
est delaforme axis::σ
[L
℄), on réelalausename t (v).att ← ,
etonpose:
Access(v, Q (i) ) := Access(v, Q (i−1) ) ∪ {name t (v).att ←}.
3. Ondénit
Hist(v, Q (i) ) := Hist(v, Q (i−1) ) ∪ Scope(v, Q (i) ) ∪ Access(v, Q (i) )
.Step3. On pose
i := i + 1
,eton revient à Step1.Par
D v (t)
on note l'ensemble desdépendanes fontionnelles (éventuelles) entre lesattributsstokésaun÷udv
d'undoumentt
. Onsupposeraqueesdépendanessont formulées également sousforme delauses de laforme
name t (v).a i r ← name t (v).a i 1 , name t (v).a i 2 , . . . , name t (v).a i k ,
où
a j
sont les noms des attributs env
. S'il n'y a pas de telles dépendanes, on poseD v (t) := ∅
. Notons parHist id
l'ensemble étant l'union de tous les ensemblesHist id (v, Q i )
onstruits plus haut. En utilisant les ensemblesHist id
etD v (t)
, ondénitunestratégie d'évaluationquigarantit quel'évaluationd'unerequêteneviole
paslapolitiquedu ontrle d'aès donnée:
Dénition 3.1. (Évaluation séurisée) Si une requête donnée
Q
est évaluée parunutilisateur
id
,à l'aidedu systèmeS Q
, surundoumentt
assujettià une politiqued'aès
P
, alors un état séletionnant peut être assigné à un n÷udv
det
, si etseulement si
Hist id ∪ D v (t) ∪ P 6| = ⊥ .
Pour vérierla onditionde laDénition 3.1on utilise la résolution lausale. Voii
ertaines règles(parmi biend'autres) que l'on peutappliquer pour une telle
résolu-tion :
•
larésolution lassiqueentre deslittérauxpositifsetnégatifs;•
un littéralσ.att
peut être résolu ave un littéral (de signe opposé) de la formeσ.∗
;idempourdeslittéraux(ayantdessignesopposés)U ser(id)
etU ser(∗)
,ainsique
Cat(id)
etCat(∗)
et.;•
une ontrainte de portée[σ.a
axisρ.b]
peut être résolu ave une ontrainte deportée de laforme
[ρ.b
axis−1 σ.a]
;•
un littéral négatif[σ.a
axisρ.b]
peut être résolu ave un littéral positif de laforme
[σ.a
dir-axisρ.b
℄;•
un littéral négatif[σ.a
axisρ.b]
peut être résolu ave un littéral positif de laforme
[σ.a
axisρ.b, σ.a 6= ‘val ′ ]
.Si on ne veut pas qu'une politique du ontrle d'aès soit violée, il est
indis-pensable de garder latrae de toute information à laquelle un utilisateur a aédé
en évaluant sesdiérentesrequêtes, ommelemontrel'exemple suivant.
Exemple 3.5. Soientledoument Faultyetlapolitique duontrled'aès
onsid-érés dans l'Exemple 3.3. Supposons que l'attribut
grade
stoké à toutn÷udCourse
n'a pas toujours la même valeur, .àd., les étudiants de atégories (
grade
)dié-rentes peuvent suivre le même ours. Supposons qu'un utilisateur administratif
id
évalue suessivement les trois requêtes suivantes:
Q 1 =
//Student
/@∗
Q 2 =
//Course
/@grade
Q 3 =
//Course
[@grade 6= M
℄/parent::Student
/@name
Analysons e qui sepasse sil'ensemble
Hist id
n'est pas gardé :•
En évaluantQ 1
, l'utilisateur prend onnaissane de toutes les données stokées à haque n÷udStudent
, enpartiulier les noms detous les étudiants.•
EnévaluantQ 2
ilobtientlesvaleursd'attributgrade
pourtouslesn÷udsCourse
.•
La REPONSE àQ 3
donne ànotre utilisateur les nomsdetous lesétudiants qui nesontpasenregistrés dans la atégorieM
.Il a maintenant toutes les informations susantes pour déduire les noms des
étu-diants enregistrés dans la atégorie
M
il sut de prendre le omplément del'ensemble qui onstitue la REPONSE à
Q 3
e qui viole la politique du ontrled'aès imposée dans l'Exemple 3.3:
← Adm(∗), Student.name, Course.grade,
[Student.name
hildCourse.grade]
.Garder l'ensemble
Hist id
la trae d'information à laquelle l'administratifid
àaédépermetd'éviterlaviolationdelapolitiqueduontrled'aèsdonnée. En
eet,aprèsavoirévaluélesrequêtes
Q 1
etQ 2
,Hist id
vaontenirleslausespositivessuivantes :
Adm(id) ←
,student.∗ ←
,course.grade ←
.Pendant l'évaluation delarequête
Q 3
on yaura ajoutélalause :[course.grade
parentstudent.name, course.grade 6= M ] ←
.En partiulier, laontraintede portée
[course.grade 6= M]
s'évalue en vrai. Il n'estpasdiile de remarquer(en utilisant larésolution lausale) que l'ensemble
Hist id
n'est pasonsistent ave la lause
← Adm(∗), Student.name, Course.grade,
[Student.name
hildCourse.grade]
.Par onséquent, l'évaluation de
Q 3
va être interrompue, etne fournira auun nom d'étudiant.Notreméthode d'évaluation de requêtes surles doumentsassujettis àune
poli-tique du ontrle d'aès est omplète, omme le montre la proposition suivante,
dont la preuve déoule diretement des dénitions introduites dans ette setion
(notamment laDénition 3.1):
Proposition 3.2. Soitundoument
t
assujettiàunepolitiqueduontrled'aèsP
.Une donnée stokée omme la valeur d'un attribut
att
au n÷udu
dut
est aessiblepour un utilisateur
id
, si et seulement si{name t (u).att ←} ∪ Hist id ∪ D u (t)
estonsistent ave l'ensemble des lauses négatives