Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Без_СУБД.doc
Скачиваний:
3
Добавлен:
21.09.2019
Размер:
221.7 Кб
Скачать

1.7. Языки безопасных баз данных

При рассмотрении расширения языка SQL для поддержки хронологических баз данных, отметили, что ни стандарт SQL-92, ни текущая версия стандарта SQL3 не поддерживают эти средства. То же можно сказать и об языковых расширениях для поддержки баз данных с многоуровневой защитой.

Важно отметить, что, хотя в SQL предусмотрены операторы поддержки безопасности (например, операторы GRANT и REVOKE), но они не обеспечивают многоуровневой защиты (и следовательно, принудительного управления доступом, MAC). Возможность предоставлять (GRANT) привилегии доступа и модификации по отношению к определенным объектам и передавать другим пользователям права на предоставление привилегий (конструкция WITH GRANT OPTION), а также отбирать (REVOKE) права (предоставленные непосредственно или в результате использования опции WITH GRANT OPTION) - все это средства поддержки добровольного управления доступом (DAC). Даже, несмотря на то, что модель безопасности в SQL-92 проработана значительно тщательнее, чем в предыдущих версиях (отметим, впрочем, что многие коммерческие реляционные SQL-ориентированные СУБД имели собственные расширения для поддержки безопасности даже и до выхода SQL-92), но все эти возможности все равно недостаточны для обеспечения безопасности баз данных не только в будущем, но и в настоящем.

В ожидаемых коммерческих версиях СУБД с многоуровневой защитой, вероятно, будут присутствовать определенные языковые расширения. Пример исследовательского прототипа такого расширенного языка - MSQL (multilevel SQL), язык СУБД SeaView. MSQL содержит операторы DDL со средствами спецификации классов безопасности:

create relation roster (

name char (30) [U:S]

primary-key,

rank char (10) [U:S],

job_code char (10)

[U:TS],

duty_location char (20) [U:TS],

...

)

MSQL допускает составные первичные ключи, как в следующем примере:

create relation roater (

group (last_name char (20),

first_name char (10),

middle_initial char (1) )

[U:TS] primary-key,

...

)

Спецификация классов защиты для атрибута может задаваться не только в виде диапазона, как в предыдущих примерах, но и путем перечисления:

create relation missions (

...

task char (30) [S; TS

NUCLEAR; TS INTEL],

...

)

В этом примере столбец TASK может содержать значения класса "секретно", "совершенно секретно/ядерное оружие", "совершенно секретно/разведка".

MSQL допускает задание классификационных ограничений, концептуально подобных ограничениям целостности SQL:

create class-constraint

JOBCodeRules

on roster as

name.class = SECRET,

rank.class = SECRET,

mission.class =

(if roster.mission = "COUNTERINTELLIGENCE" then

TOP SECRET else SECRET)

Отметим, что элемент метаданных класс должен быть обязательно определен для всех атрибутов.

MSQL включает функции типа HIGHEST-CLASS для обработки многозначной классифицированной информации (которая позволяет, например, при помощи оператора SELECT выбрать строки максимальной секретности, соответствующей благонадежности данного пользователя или процесса).

Хотя SQL3 в настоящее время не содержит команд MLS (multilevel security), и эти средства, вероятно, будут предоставляться в виде специфических для конкретных продуктов расширений, мы можем тем не менее высказать некоторые предположения относительно языковых расширений MLS.

SQL, по-видимому, предоставит основу для языковых расширений обеспечения безопасности, хотя нетрадиционные операторы, подобные принятым в MSQL (CREATE RELATION вместо CREATE TABLE), скорее всего, приблизятся к синтаксису стандартных операторов SQL.

Когда реализации многозначности вместе с поддержкой многоуровневой защиты войдут в коммерческие версии СУБД, будут приняты и соответствующие языковые расширения, причем не только в виде конструкций языка определения данных (DDL), но и в виде новых функций типа HIGHEST-CLASS. Примеры - функции HIGHEST-COVER-STORY и LOWEST-COVER-STORY, возвращающие "легенды" агента, соответственно максимального и минимального классов секретности.

По мере проникновения концепций безопасности СУБД в ООСУБД, в языки ODMG будут включаться специальные расширения для поддержки многоуровневой защиты, подобные соответствующим расширениям SQL. Разумеется, сначала поставщикам придется реализовать в своих продуктах исходные версии языков ODMG, что может занять несколько лет. Пользователи ООСУБД, заинтересованные в средствах многоуровневой защиты, могут повлиять на поставщиков и на процесс стандартизации в отношении языковых средств безопасных ООСУБД.