Обеспечение безопасности базы данных
А объект в операторе GRANT определяется таким способом:
[TABLE] <имя таблицы> |DOMAIN <имя домена> | COLLATION <имя сопоставления> | CHARACTER SET <имя символьного набора> |TRANSLATION <имя трансляции> | ТYРЕ <схематмчески обозначенный определенный пользователем тип> |SEQUENCE <имя генератора последовательности спецификатор указателя шаблона>
И наконец, список пользователей в операторе определяется следующим образом:
регистрационное-имя [, регистрационное-имя]… | PUBLIC
Указанный синтаксис применяется к представлению точно так же, как и к таблице. Полномочия SELECT, DELETE, INSERT, UPDATE и REFERENCES относятся только к таблицам и представлениям. А полномочие USAGE имеет отношение к доменам, наборам символов, сопоставлениям и трансляциям. В последующих разделах приведены различные примеры использования оператора GRANT.
Роли
Одним из типов идентификатора подтверждения полномочий, причем не единственным, является имя пользователя. Это имя удостоверяет пользователя или программу, имеющих полномочия на выполнение с базой данных одной или множества операций. Если в большой организации с большим числом пользователей предоставлять полномочия отдельно каждому сотруднику, то такая операция может занять очень много времени. В стандарте SQL:2OO3 есть понятие роли. Оно-то и помогает решить эту проблему.
Роль, определяемая именем, – это набор полномочий, предоставляемый совокупности пользователей, которым нужен одинаковый уровень доступа к базе данных. Например, одинаковые полномочия должны быть у всех пользователей, имеющих роль SecurityGuard (означает "охранник"). Эти полномочия, скорее всего, должны отличаться от тех, что предоставляются пользователям, имеющим роль SalesClerk ("торговый служащий").
Помни:
Так как в основном стандарте SQL:2OO3 ролей нет, то в некоторых реализациях их также может не быть. Перед тем как пытаться использовать роли, проверьте документацию конкретной СУБД.
Для создания роли можно использовать примерно такой синтаксис:
CREATE ROLE SalesClerk;
После того как роль создана, вы можете назначить ее тому или иному пользователю с помощью оператора GRANT:
GRANT SalesClerk to Becky;
Полномочия ролям предоставляются точно так же, как и пользователям, за одним, правда, исключением: роль не будет спорить и жаловаться на вас начальству.
Вставка данных
Ниже приведен пример предоставления полномочий на вставку данных в таблицу:
GRANT INSERT ON CUSTOMER TO SalesClerk;
Эти полномочия позволяют служащему из отдела продаж добавлять в таблицу CUSTOMER (клиент) новые записи.