Разрешения, предоставленные роли или группе, наследуются их членами. Хотя пользователю может быть предоставлен доступ через членство в одной роли, роль другого уровня может иметь запрещение на действие с объектом. В таком случае возникает конфликт доступа .
При разрешении конфликтов доступа SQL Server руководствуется следующим принципом: разрешение на предоставление доступа имеет самый низкий приоритет, а назапрещение доступа – самый высокий. Это значит, что доступ к данным может быть получен только явным его предоставлением при отсутствии запрещения доступа на любом другом уровне иерархии системы безопасности. Если доступ явно не предоставлен, пользователь не сможет работать с данными.
Пример 17.1. Создать новую базу данных, нового пользователя для этой базы данных, предоставив ему все права.
-- создание администратором новой
-- базы данных
CREATE DATABASE basa_user
-- создание нового пользователя с
-- именем UserA и паролем ‘123’
-- базой данных по умолчанию для
-- пользователя UserA будет база
-- с именем basa_user.
sp_addlogin 'UserA','123','basa_user'
-- переход в базу данных basa_user
USE basa_user
-- добавление в текущую базу данных
-- (basa_user) пользователя с именем
-- userA
sp_adduser 'UserA'
-- предоставление пользователю userA
-- в базе данных basa_user всех прав
GRANT ALL TO UserA
Пример 17.2. Использование ролей.
Создадим роль stud и включим в эту роль двух пользователей user1 и user2:
sp_addrole 'stud'
sp_addrolemember 'stud','user1'
sp_addrolemember 'stud','user2'
Предоставим права роли stud и непосредственно пользователю user2:
GRANT SELECT, INSERT ON Товар TO stud
GRANT SELECT, INSERT ON Товар TO user2
После выполнения этих команд пользователи user1 и user2 могут выполнять команды выборки и добавления записи в таблицу Товар.
Приостановим право на выполнение вставки в таблицу Товар для роли stud:
REVOKE INSERT ON Товар TO stud
После выполнения предыдущей команды пользователь user1 теряет право вставки записи, а user2 сохраняет это право, поскольку право вставки предоставлено ему явно.
Выполним команду
DENY INSERT ON Товар TO stud.
После выполнения этой команды оба пользователя лишаются права вставки в таблицу Товар.
Лекция 18: Внедрение SQL-операторов в прикладные программы Описываются возможности использования языка SQL в прикладных программах. Определяется роль технологии ODBC как единого интерфейса для доступа к смешанным базам данных SQL. Рассматриваются архитектура ODBC и варианты доступа к базам данных с использованием технологии ADO и Java. Методы доступа иллюстрируются примерами.