Обеспечение безопасности базы данных
"Публика"
В сетевой терминологии словом "public" обозначают всех пользователей, не имеющих специальных полномочий администратора или владельцев объектов, и кому эти привилегированные пользователи специально не предоставили права доступа. Если привилегированный пользователь предоставляет некоторые права доступа PUBLIC, их получают все пользователи системы.
В большинстве установленных баз данных пользовательские полномочия представляют собой иерархическую структуру. В этой структуре полномочия администратора находятся на самом высоком уровне, а полномочия рядовых пользователей – на самом низком. Пример иерархической структуры полномочий приведен на рис. 13.1.
Рис. 13.1. Иерархическая структура полномочий доступа
Предоставление полномочий пользователям
В силу своего положения администратор базы данных имеет все полномочия на все ее объекты. Но, в конце концов, владелец объекта имеет на него все полномочия, а база данных сама является объектом. Ни у кого из пользователей не будет полномочий, относящихся к какому-либо объекту, если только их ему специально не предоставит тот, у которого эти полномочия уже есть (а также право их передавать). Предоставлять полномочия кому-либо другому вы можете с помощью оператора GRANT (предоставить). У этого оператора следующий синтаксис:
GRANT СПИСОК-ПОЛНОМОЧИЙ ON объект ТО список-пользователей [WITH GRANT OPTION];
Предложение WITH GRANT OPTION означает "предоставляющий полномочия"; список полномочий в операторе GRANT определяется следующим образом:
ПОЛНОМОЧИЯ [, ПОЛНОМОЧИЯ]…
…или:
ALL PRIVILEGES
В свою очередь, вот как здесь определяются полномочия:
SELECT | DELETE | INSERT [(имя-столбца[, имя-столбца]…) ] | UPDATE [(имя-столбца[, имя-столбца]…)] |REFERENCES [(имя-столбца[, имя-столбца]…)] | USAGE | UNDER | TRIGGER | EXECUTE