Упоминание только одной операции доступа без правила также приводит к ошибке, поэтому недопустимо следующее объявление:
RULES
WRITES
ENDRULES
В условии необходим доступ к атрибутам по их именам, определенным в секции «имена атрибутов».
Доступ к значению атрибута по его имени осуществляются образом:
имя атрибута [номер субъекта(объекта)]
имя атрибута - уже объявленное ранее имя.
номер субъекта(объекта) - конкретно номер сущности, значение атрибута которой хочет получить пользователь.
Номер варьируется от 1 до 16. Выход за пределы этого интервала не обрабатывается. Здесь можно использовать такие служебные слова, как THISS, THISO. Во время работы программы «Монитор безопасности» пользователь выбирает активную, пассивную сущности и вид доступа. В этом случае:
· THISS - это номер выбранной текущей активной сущности на момент вызова «Монитора безопасности»,
· THISO - номер текущей пассивной сущности.
В теле условия возможен вызов конкретного атрибута по его имени (атрибута, именованного при помощи функций AS и АО), а также по прямому вызову функций AS и АО. Особенности этих функций рассмотрены в секции «имена атрибутов».
Таким образом, правильным будет следующее описание (переменная tmp определена в файле prefile): RULES
READO IF(tmp++==0 && seclevel_s[THISS] >= seclevel[1] || Orole==5)
CHATTRS
tmp=50;
IF(AS(1,1)==tmp || seclevel_s[THISS]<NEW_ATTR(1))
ENDRULES
Видно, что в примере задействованы новые служебное слово -NEW_ATTR. Оно необходимо при операциях изменения атрибутов пассивной сущности и при создании новых сущностей. Правило доступа может основываться на новых атрибутах сущности. При вызове, например, операции CHATTRS происходит сопоставление изменяемых и новых атрибутов, на основе чего либо происходит замена атрибутов, либо - нет. Формат рассмотренного слова:
NEW_ATTR(Hомep атрибута)
номер атрибута - порядковый номер атрибута пассивной сущности, варьируемый от 1 до 8. Выход за пределы этого интервала не обрабатывается. По умолчанию никакие значения номера атрибута не назначаются.
Практический пример
Рассмотрим практическое определение файла описания модели на том же примере, с которого мы начали изучение языка описания:
// секция «субъекты»
S( 1, 1,2,3,4, 5, 6, 7, 8 ); // создание субъекта №1
// секция «объекты»
0(1, 15,16,17,18,19,20,21,25 ); //создание объекта №1
// секция «имена атрибутов»
// определение имен атрибутов субъекта и объекта
ATTRNAME seclevelS IS ATTRS(1), seclevelO IS ATTRO(1);
// определение имени конкретного атрибута, а именно, первого атрибута первого субъекта
ATTRNAME imp = AS(1,1);
// секция «правила доступа»
// начало блока правил доступа RULES
// правило по чтению
READO IF(seclevelS[THISS]>seclevelO[THISO])
// правило по записи
WRITEO IF(seclevelS[THISS]<seclevelO[THISO] &&tmp = = 1)
// конец блока правил доступа
ENDRULES
В файле описания модели определено, что в начале в системе существуют две сущности - один субъект и один объект. Далее присвоено первому атрибуту субъектов имя seclevelS, а первому атрибуту объектов - seclevelO. Введена переменная Imp, которой присвоено значение определенного атрибута (первый атрибут первого субъекта). Затем, с целью дальнейшего исследования поведения модели только при записи и чтении, описаны правила доступа субъекта по чтению и записи к пассивной сущности.
Дополнительные файлы prefile и postfile не использовались.
Приложение 3
Порядок создания исполняемого файла описания модели
1. Задание модели безопасности при помощи языка описания модели в файлеописания.
2. Запуск в MS-DOS служебной программы expert.ехе. Формат ввода:
expert.exe файл описания модели
Программа expert.exe добавляет к началу и концу файла описания модели необходимый код (рис.1). В результате получается программа, которая автоматически компилируется средствами Си ++.
Рис. 1. Служебный код программы «Монитор безопасности» - процесс создания исполняемого файла описания модели программой expert.exe
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.