http://blogs.technet.com/lyudmila_fokina/archive/2007/07/03/sql-server-2005-control.aspx
Людмила Фокина
Знаете ли Вы что… В SQL Server 2005 возможно дать пользователю права доступ типа Control к объекту (таблице, виду и т.д.), который фактически дает те же права, что и у собственника объекта.
Пример:
GRANT CONTROL
ON t_Table TO Uesr1
GO
Control имеет некоторые особенности.
Обычно цепочка предоставлений прав доступа к объекту пользователями всегда хранится, на случай, если в дальнейшем эти права будут отменены с использованием опции Cascade.
Например:
1.
пользователь User1 дал права доступа типа Select к объекту Table
пользователю User2;
2.
права пользователя User1 по доступу к объекту Table были отменены с
использованием опции Cascade;
3.
в результате User2 также лишился прав доступа к объекту.
С Control ситуация выглядит иначе.
Пример:
1.владелец
объекта дал права доступа к объекту типа Control пользователю User1 с
использованием опции GRANT OPTION;
2.пользователь
User1 дал права доступа типа Control пользователю User2;
3.права
пользователя User1 по доступу к объекту были отменены с использованием опции Cascade;
4.пользователь User2 по-прежнему имеет права Control на объект.
Grant Control on T
to usr1
WITH GRANT OPTION
go
Execute as user =
'usr1'
go
Grant Control on T
to usr2
go
REVERT
go
Revoke Control on T
from usr1 Cascade
go
--Usr2 по-прежнему имеет права Control на T
Как
обойти эту ситуацию…
Если требуется, чтобы права Control были отменены у всех пользователей, которым их дал User1, User1 должен быть явно указан в момент предоставления прав другому пользователю:
Grant Control on T
to usr2
as usr1
go
Комментариев нет:
Отправить комментарий