Модель Харрисона-Руззо-Ульмана. Элементарные операции.
Разработанная в 1971 г. модель Харрисона-Руззо-Ульмана [16] формализует упоминавшееся ранее понятие матрицы доступа – таблицы, описывающей права доступа субъектов к объектам
Строки матрицы доступа соответствуют субъектам, существующим в системе, а столбцы
– объектам. На пересечении строки и столбца указаны права доступа соответствующего
субъекта к данному объекту: например, на рис. 2.3.1.1 субъект subj 3 обладает правами
чтения и записи по отношению к объекту obj 3.
Введём следующие обозначения:
- S – множество возможных субъектов,
- O – множество возможных объектов (напомним, что S ⊂ O);
- R={r1, …, rn} – конечное множество прав доступа
- O× S × R - пространство состояний системы;
- M – матрица прав доступа, описывающая текущие права доступа субъектов к
объектам;
- Q=(S, O, M) – текущее состояние системы;
- M[s,o] – ячейка матрицы, содержащая набор прав доступа субъекта s∈ S к
объекту o∈O .
Элементарные операции op1…opn будут выполнены в том случае, если выполняются все без исключения условия из блока if … then. При описании элементарных операций мы будем полагать, что в результате выполнения операции система переходит из состояния Q=(S, O, M) в состояние Q’=(S’, O’, M’).
1. enter r into M[s,o] ( s∈S,o∈O ) – добавление субъекту s права r по отношению к объекту o. В результате выполнения команды происходят следующие изменения в состоянии системы:
- S’=S,
- O’=O,
- M’[xs, xo]=M[xs, x0], если (xs, xo) ≠ (s,o),
- M’[s, o]=M[s, o] ∪ {r}.
Заметим, что содержимое ячейки таблицы рассматривается как множество. Это, в частности, означает, что если добавляемый элемент уже присутствовал в ячейке, то её содержимое не изменяется.
2. delete r from M[s,o] ( s∈S,o∈O ) – удаление у субъекта s права r по отношению к объекту o. Изменения в состоянии системы:
- S’=S,
- O’=O,
- M’[xs, xo]=M[xs, x0], если (xs, xo) ≠ (s,o),
- M’[s,o]=M[s.o] \ {r}.
Если удаляемое право отсутствовало в ячейке, то состояние системы в результате выполнения данной команды никак не изменяется.
3. create subject s (s∉ S ) – создание нового субъекта s. Изменения в состоянии системы:
- O’=O∪ {s},
- S’=S ∪ {s},
- M’[xs, xo]=M[xs, xo] для ∀ (xs, xo)∈S×O,
- M’[s, xo]=Ø для ∀ x O' o ∈
- M’[s, xs]=Ø для ∀ x S' s ∈
Как видим, при создании субъекта в матрицу M добавляются строка и столбец.
4. destroy subject s (s∈S) – удаление существующего субъекта s.
Изменения в состоянии системы:
- S’=S \ {s},
- O’=O \ {s},
- M’[xs, xo]=M[xs, xo] для ∀ (xs, xo)∈S’× O’.
5. create object o (o∉O) – создание нового объекта o.
Изменения в состоянии системы:
- O’=O∪ {o},
- S’=S,
- M’[xs, xo]=M[xs, xo] для ∀ (xs, xo)∈S×O,
- M’[xs, o]= Ø для ∀ x S' s ∈
При добавлении объекта в матрице доступа создаётся новый столбец.
6. destroy object o (o∈O \ S) – удаление существующего объекта o.
Изменения в состоянии системы:
- O’=O \ {o},
- S’=S,
- M’[xs, xo]=M[xs, xo] для ∀ (xs, xo)∈S’× O’.