Поддержка авторизации доступа к данным в языке SQL
В общем случае база данных является слишком дорогостоящим предметом, чтобы можно было использовать ее в автономном режиме. Обычно с достаточно большой базой данных (параллельно или последовательно) работает много приложений и пользователей, и не для всех них было бы разумно обеспечивать равноправный доступ к хранящимся данным.
В языке SQL (SQL:1999) предусмотрены возможности контроля доступа к разным объектам базы данных, в том числе к следующим объектам:
- таблицам;
- столбцам таблиц;
- представлениям;
- доменам;
- наборам символов1);
- порядкам сортировки символов (collation);
- преобразованиям (translation);
- триггерам;
- подпрограммам, вызываемым из SQL;
- определенным пользователями типам.
В совокупности в SQL:1999 может поддерживаться девять видов защиты разных объектов в соответствии со следующими возможными действиями (см. табл.18.1).
При разработке средств контроля доступа к объектам баз данных создатели SQL придерживались принципа сокрытия информации об объектах, содержащихся в схеме базы данных, от пользователей, которые лишены доступа к этим объектам. Другими словами, если некоторый пользователь не обладает, например, привилегией на просмотр таблицы PRO, то при выполнении операции SELECT * FROM PRO он получит такое же диагностическое сообщение, как если бы таблица PRO не существовала. Если бы в случае отсутствия этой таблицы и в случае отсутствия привилегии доступа выдавались разные диагностические сообщения, то непривилегированный пользователь получил бы данные о том, что интересующая его таблица существует, но он лишен доступа к ней.
Просмотр | SELECT | Таблицы, столбцы, подпрограммы, вызываемые из SQL |
Вставка | INSERT | Таблицы, столбцы |
Модификация | UPDATE | Таблицы, столбцы |
Удаление | DELETE | Таблицы |
Ссылка | REFERENCES | Таблицы, столбцы |
Использование | USAGE | Домены, определенные пользователями типы, наборы символов, порядки сортировки символов, преобразования |
Инициирование | TRIGGER | Таблицы |
Выполнение | EXECUTE | Подпрограммы, вызываемые из SQL |
Подтипизация | UNDER | Структурные типы |