Корпоративные базы данных - статьи

       

Табл. 3. Данные, доступные пользователю с высоким уровнем секретности




(Обратим внимание на то, что строка "Иванов Пневмония" здесь отсутствует.)

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

CREATE TABLE BaseTable1 (

PatientName char (20),

Disease char (20),

Level char (10)

) WITH PRIMARY KEY (PatientName, Level)

;

CREATE TABLE BaseTable2 (

UserName char (20),



SecurityLevel char (10)

) WITH PRIMARY KEY (UserName)

;

CREATE VIEW PatientInfo (

PatientName,

Disease

) AS SELECT PatientName, Disease

FROM TABLE BaseTable1

WHERE BaseTable1.Level = (

SELECT SecurityLevel FROM BaseTable2

WHERE UserName = username ()

) OR (

BaseTable1.Level = "LOW"

AND NOT EXISTS (

SELECT * FROM BaseTable1 AS X

WHERE X.PatientName = BaseTable1.PatientName

AND X.Level = "HIGH"

)

)

;

Всем пользователям предоставляется доступ только к представлению PatientInfo.
Пользователи с низким уровнем благонадежности увидят только информацию, выдаваемую
первой конструкцией WHERE:

WHERE BaseTable1.Level = (

SELECT SecurityLevel FROM BaseTable2

WHERE UserName = username () )

поскольку для них поле SecurityLevel имеет значение "LOW". В формирование представления
для благонадежных пользователей внесут вклад обе конструкции WHERE, причем в случае
совпадения имен менее секретные записи будут заслонены более секретными (конструкция NOT
EXISTS).

Мы видим, что в отличие от систем с меточной безопасностью, стандартные SQL-серверы
предоставляют довольно тяжеловесные средства для реализации механизма размножения строк.
Тем не менее, эти средства не так плохи, как может показаться на первый взгляд. Можно надеяться,
что оптимизатор SQL-запросов, входящий в комплект любой современной СУБД, сделает время
доступа к представлению PatientInfo сравнимым с временем извлечения строк из базовых
таблиц.

Нетрудно понять, что борьба с получением информации путем логического вывода актуальна не
только для медицинских баз данных и что она (борьба) требует кропотливого труда при
проектировании модели данных и иерархии привилегий, а также при реализации видимых
пользователям представлений.




Содержание раздела