Введение в системы БД (542480), страница 154
Текст из файла (страница 154)
604 Часть 1г. Дополнительные аспекты внимание на работу (16.91, в которой описывается система с влаженпы.ии пользовательскими группами. Вот цитата из этой работы; "Способность классифицировать пользователей в виде иерархии групп представляет собой мошный инструмент администрирования больших систем с тысячами пользователей и объектов". 16.2. Избирательная схема управления доступом Повторяя сказанное выше, следует еше раз отметить, что во многих СУБД поддерживается либо избирательная, либо мандатная схема управления доступом, либо оба эти типа одновременно.
Однако точнее все же будет сказать, что в действительности в большинстве СУБД поддерживается только избирательная схема доступа и лишь в некоторых — только мандатная. Поскольку на практике избирательная схема доступа встречается гораздо чаще, основное внимание в этой главе уделяется именно ей. Как уже отмечалось, для определения избирательных ограничений зашиты необходимо использовать некоторый язык, По вполне очевидным причинам гораздо легче указать то, что разрешается, чем то, что не разрешается. Поэтому в полобных языках обычно поддерживается определение не самих ограничений защиты, а полномочий, которые по своей сути противоположны ограничениям зашиты (т.е.
они разрешают какие- либо действия, а не запрещают их). Дадим краткое описание языка определения полномочий, воспользовавшись следуюшнм примеромз. АНТНОА1ТУ ЯАЗ БДАМТ НЕТН1ЕЧЕ ( Я()з ЯМАМЕ, О1ТТ ), РЕЬЕТЕ ОМ Б ТО 31щ, лгез), Магу ; /* Разрешить вшборку атрибутов ( Я(), БМАМЕ, О1ТТ ) и удаление "/ /* даниях из таблицм поставщиков пользователям Джим, Фред и Мэри "/ Этот пример иллюстрирует тот факт, что в общем случае полномочия доступа включают четыре компонента. 1. Имя (в данном примере — ЯА3).
Устанавливаемые полномочия будут зарегистри- рованы в системном каталоге под этим именем. 2. Одна или более привилегий, задаваемых в предложении ОНАМТ (в нашем примере это привилегия НЕТА1ЕЧЕ (только дпя некоторых атрибутов) и привилегия РЕЬЕТЕ). 3. Задаваемое в предложении ОМ имя переменной-отношения, к которой применяются полномочия (в нашем примере это переменная-отношение Б). 4.
Один или более имен пользователей (точнее, идентис/зикатарав пользователей), которым предоставляются указанные привилегии по отношению к переменной- отношению, задаваемой с помощью фразы ТО. 2 В исходном варианте языка Тигапа! зу /3.3/ нс прсдусматрена никаких средств опрвделенил тмнамачий, однако используемый в данном разделе гипотетический нзвзк.мажно рассматривать как "вьздержанный в духе" языка Тигапа! В. 605 Глава /б. Защита данных Ниже приводится общий синтаксис оператора определения полномочий.
АОТНОН1ТУ <нмя полномочий> БНАНТ <спнсок привилегий> ОН <нмя переменной-отношения> ТО <спясок идентификаторов пользователей> ; Пояснения. В приведенном выше определении смысл параметров <ямя полномочий>, <слисок привилегий>, <имя переменной-отношения> и <слнсок идентификаторов пользователей> понятен из их названий. Добавим только, что значение АЬЬ в данном контексте может применяться для обозначения сразу всех известных пользователей. В качестве элементов списка в параметре <список привилегий> разрешается применять следующие значения. НЕТН1ЕЧЕ [ (<слнсок имен атркбутов>) 1НБЕНТ [ (<слисок имен атрибутов>) ) НРОАТЕ [ (<спясок имен атрибутов>) ] ОЕЬЕТЕ А11 Смысл привилегий НЕТН1ЕЧЕ (выборка), 1НБЕНТ (вставка), УРОАТЕ (обновление) и ОЕЬЕТЕ (удаление) очевиден без дополнительных разъясненийэ.
Если при указании привилегии НЕТН1ЕЧЕ определен список атрибутов, то она применяется только к заданным атрибутам. Списки имен атрибутов в определениях привилегий 1КБЕНТ и ОРОАТЕ имеют тот же смысл. Спецификация АЬЬ является сокращенной записью предоставления всех привилегий — НЕТН1ЕЧЕ (по всем атрибутам), 1КБЕНТ (по всем атрибутам), ОРОАТЕ (по всем атрибутам) н РЕЬЕТЕ. Замечание. Для простоты здесь игнорируется проблема необходимости некоторых особых привилегий для выполнения общих реляционных операций присвоения. Мы также ограничим рассмотрение операциями.чапипулировапия данными, хотя на практике, конечно, существует много других операций, для которых следовало бы проверять наличие соответствующих полномочий (например, опрелеление и улаление переменных- отношений, а также определение н удаление самих полномочий).
Подробное рассмотрение этих полномочий опускается для экономии места. Что произойдет, если пользователь попытается выполнить с объектом операцию, не имея на это необходимых полномочий? В простейшем случае достаточно просто отвергнуть эту попытку (конечно, предоставив пользователю соответствующее диагностическое сообщение). На практике такой вариант применяется наиболее часто, поэтому его можно понимать как используемый по умолчанию. Однако в более сложных ситуациях может оказаться полезным применить некоторое другое действие, например завершить выполнение программы или заблокировать клавиатуру пользователя. Также может иметь смысл фиксация всех подобных попыток в специальном журнале регистрации (т.е.
проведение отслеживания угроз). Впоследствии эти данные могут оказаться полезным для выявления попыток обнаружения брешей З Хотя и пе вполне, поскольку наличие привилегии ЯЕТЯ1ЕУЕ необходимо также в случае ссылки па некоторый объекы (капример, в определении представления или ограничения целостности), а ке только для выполнения операции выборки.
606 Часть гг. дополнительные аспекты в системе защиты, а также следов возможного нелегального проникновения в систему (подробнее вопросы контрольного слежения за процессами в системе обсуждаются в конце этого раздела). Безусловно, необходимо также предусмотреть способ отмены существующих полномочий.
ЯВОР АОТНОВ1ТХ <лил лоллоиочлФ ; В частности, для нашего примера он может выглядеть следующим образом. ЯВОР АОТНОК1ТХ ЯА3 Для простоты изложения предположим, что при удалении некоторой переменной-отношения автоматически удаляются и все полномочия, предоставленные по отношению к ней. Ниже представлено несколько примеров определения полномочий, большинство из которых не нуждается в дополнительных объяснениях. 1. АОТНОК1ТХ ЕХ1 6ВАКТ ВЕТК1ЕЧЕ ( РР, РКАМЕ, ИЕ16НТ ) ОК Р ТО Засопев, Аппе, С)заг1еу ; Пользователи засопев, Алпв и Сйаг1еу получают право доступа к указанному "вертикальному подмножеству" данных в базовой переменной-отношении Р.
Таким образом, это пример предоставления полномочий, не зависящих от значения данных. 2, АОТНОВ1ТХ ЕХ2 6КАКТ КЕТКХЕЧЕ, ОРОАТЕ (ЯКАМЕ, ЯТАТОЯ), ОВЕЕТЕ ОК ЬЯ ТО Оап, М(вйа ; Упоминаемая здесь переменная-отношение ЬЯ является представлением (представлением "поставщиков из Лондона"; см. рис. 9.4 в главе 9). Пользователи Оап и М(в)за получают доступ к "горизонтальному подмножеству" данных в базовой переменной- отношении Я.
Это пример предоставления полномочий, зависящих от значений данных. Обратите внимание, что хотя пользователи Оап и М(вйа могут удалить (ОЕ1ЕТЕ) некоторые кортежи поставщиков (через представление ЬЯ), они не могут вставить (1КЯЕКТ) их, а также не имеют права обновлять (ОРОАТЕ) атрибуты Я)) и С1ТХ, 3. ЧАВ ЯЯРРК Ч1ЕИ (Я 661К ЯР 361К (Р НЕВКЕ СХТХ = 'Коле') ( РФ ) ) ( АЕ~.
ЕОТ Р(), ОТХ ); АОТНОКХТХ ЕХЗ 6ВАКТ КЕТК1ЕЧЕ ОК ЯЯРРК ТО 61очапп1 ) Это еше один пример полномочий, зависящих от значения данных; пользователь 61отапп1 получает доступ к информации о поставщиках, но только о тех, которые поставляют детали, хранящиеся в Риме. 6О7 Глава )б. Защита данньп 4. ЧАН ЯЯО ЧХЕН ЯОИИАНХЕЕ ЯР РЕН Я ( 84 ) А00 ЯОИ (ОТХ) АЯ ЯО ; АОТИОЕХтх ех4 ОНАИТ нетнхехе ОН ЯЯа ТО Гтбе1 ) Пользователь ГМе1 получает право просматривать итоговые данные по каждому поставщику, но не имеет доступа к данным о каждой поставке в отдельности.
Таким образом, пользователь Г1бе1 сможет просматривать в базе только статистически обработанные данные. 5. АОТНОЕХТХ ЕХЯ ОНАНТ НЕТН1ЕЧЕ, ОРОАТЕ (ЯТАТОЯ) ОН Я МНЕМ ОАХ () 1Н ('Иоп', 'Тце', 'Ней', 'Т)ш', 'Ггт') АНО НОН () > ТХИЕ '09зООзОО' АНО НОН () < ТХИЕ ' 17зООвОО' ТО РагсЬав1пд ; Здесь синтаксис определения полномочий расширен предложением ННЕН, позволяющим задать некоторые "контекстные элементы управления".
Дополнительно предполагается, что система предоставляет две встроенные функции (получения названия текущего дня недели ОАХ() и текущего времени НОН()), которые не имеют аргументов. Данное определение полномочий гарантирует, что значение статуса поставщика может быть изменено любым пользователем из группы РцгсЬавтп9 (работники отдела приема заказов) только в рабочие дни и в рабочее время. Это пример так называемого контекстно-зависимого полномочия, поскольку поступивший запрос на доступ будет или не будет нарушать установленные ограничения в зависимости от состояния контекста (в данном случае это комбинация дня недели и времени суток). Ниже приводятся примеры других встроенных функций, которые могут быть полезны при определении контекстно-зависимых полномочий.
ОАТЕ( ) Возвращает текущую дату ОЯЕН() Возвращает идентификатор пользователя, выдавшего запрос ТЕНИХНАЬ( ) Возвращает идентификатор терминала, с которого поступил запрос С концептуальной точки зрения несколько полномочий объединяются одно с другим по принципу связи логических утверждений с помощью оператора ОН (Или). Иначе говоря, поступивший запрос на получение доступа (включающий комбинацию запрашиваемой операции, запрашиваемого объекта и имени запрашивающего пользователя) принимается тогда и только тогда, когда он удовлетворяет хотя бы одному из существующих полномочий.
Например, если в одном определении полномочий утверждается, что пользователю Напсу разрешается считывать сведения о цвете деталей, а в другом определении указывается, что этот же пользователь имеет право доступа к сведениям о весе деталей, это не значит, что ему разрешается считывать сведения о цвете и весе леталей одновременно (для этого потребуется определить дополнительное полномочие).