Обеспечение безопасности базы данных
Просмотр данных
А вот пример предоставления полномочий просмотра:
GRANT SELECT ON PRODUCT TO PUBLIC;
Эти полномочия позволяют пользователям системы просматривать содержимое таблицы PRODUCT (товар).
Внимание:
Этот оператор может быть по-настоящему опасным. В столбцах таблицы PRODUCT – например, таких как CostOfGoods (стоимость товаров), – может храниться информация, не предназначенная для всеобщего обозрения. И чтобы предоставить доступ к большей части информации, скрывая при этом важные данные, определите на основе таблицы представление, в котором не будет столбцов с конфиденциальной информацией. Затем предоставляйте полномочия SELECT не на саму таблицу, а на ее представление. Синтаксис этой процедуры приведен ниже.
CREATE VIEW MERCHANDISE AS SELECT Model, ProdName, ProdDesc, ListPrice FROM PRODUCT; GRANT SELECT ON MERCHANDISE TO PUBLIC;
Пользуясь лишь представлением MERCHANDISE (товары), рядовой пользователь не сможет увидеть CostOfGoods или любой другой столбец из таблицы PRODUCT, за исключением тех четырех, которые перечислены в операторе CREATE VIEW. Это столбцы Model (модель), ProdName (название товара), ProdDesc (описание товара), ListPrice (цена по прейскуранту).
Модификация табличных данных
В любой работающей организации табличные данные со временем меняются. Поэтому некоторым сотрудникам необходимо предоставить возможность обновлять данные базы, а всем остальным, наоборот, запретить этим заниматься. Ниже приведен пример предоставления полномочий на обновление.
GRANT UPDATE (BonusPct) ON BONUSRATE TO SalesMgr;
Исходя из рыночной конъюнктуры, менеджер по продажам может регулировать значения премиальных процентов, на основе которых рассчитываются премии продавцов (столбец ВоnusPct). Однако менеджер не может изменять значения в столбцах Min Amount и Max Amount, определяющие диапазон, который соответствует каждому уровню шкалы премий. Чтобы разрешить модификацию значений всех столбцов таблицы, необходимо указать все имена столбцов или, как в следующем примере, – ни одного:
GRANT UPDATE ON BONUSRATE TO VPSales;
Удаление из таблицы устаревших строк
Покупатели переезжают в другие города. Сотрудники увольняются, уходят на пенсию или в мир иной. Товары устаревают. Жизнь продолжается, данные базы теряют актуальность. Устаревшие записи необходимо удалять. С другой стороны, следует тщательно контролировать, кто какие записи может удалять. И с этой задачей справится оператор GRANT:
GRANT DELETE ON EMPLOYEE TO PersonnelMgr;
Менеджер по персоналу может удалять записи из таблицы EMPLOYEE (сотрудник). Этим также может заниматься администратор или владелец этой таблицы. Кроме них, записи о сотрудниках больше никто удалять не может (если только кто-то не получит такую возможность благодаря другому оператору GRANT).