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

       

Использование представлений для управления доступом



СУБД предоставляют специфическое средство управления доступом - представления.
Представления позволяют сделать видимыми для субъектов определенные столбцы базовых
таблиц (реализовать проекцию) или отобрать определенные строки (реализовать селекцию). Не
предоставляя субъектам прав доступа к базовым таблицам и сконструировав подходящие
представления, администратор базы данных защитит таблицы от несанкционированного доступа и
снабдит каждого пользователя своим видением базы данных, когда недоступные объекты как бы
не существуют.

Приведем пример создания представления, содержащего два столбца исходной таблицы и
включающего в себя только строки с определенным значением одного из столбцов:

CREATE VIEW empview AS

SELECT name, dept

FROM employee

WHERE dept = 'shoe';

Предоставим всем право на выборку из этого представления:

GRANT SELECT

ON empview

TO PUBLIC;

Субъекты, осуществляющие доступ к представлению empview, могут пытаться запросить
сведения об отделах, отличных от shoe, например:

SELECT *

FROM empview

WHERE dept = 'toy';

но в ответ просто получат результат из нуля строк, а не код ответа, свидетельствующий о
нарушении прав доступа. Это принципиально важно, так как лишает злоумышленника
возможности получить список отделов косвенным образом, анализируя коды ответов,
возвращаемые после обработки SQL-запросов.

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