16.1.23

SQL Server 2005: права доступа типа – Control

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

Комментариев нет:

Отправить комментарий