Программирование >>  Администрирование microsoft sql 

1 ... 108 109 110 [ 111 ] 112 113 114 ... 203


Когда разрешения доступа на работу с объектами предоставляются с использованием операторов вы также можете использовать необязательный параметр WITH GRANT OPTION. С помощью этого параметра вы можете предоставлять пользователю, роли или группе определенные разрешения доступа для работы с объектом, а также разрешить им эти разрешения любым другим зарегистрированным в БД пользователям, роли или группе.

В следующем примере роли SalesManagen (определяемая пользователем роль БД) разрешается выполнять оператор SELECT в таблице Customer. Любой член роли SalesManagers сможет предоставлять разрешение на выполнение оператора SELECT для таблицы Customer. Если разрешение на выполнение оператора WITH GRANT OPTION предоставляется группе, то пользователь из этой группы, пытающийся передать это разрешение другому пользователю, группе или роли дащью оператора GRANT, должен будет использовать ключевое слово AS.

GRANT SELECT ON Customer TO SalesManagers WITH GRANT OPTION : .

В следующем примере пользователю Joe разрешается выполнение оператора SELECT в таблице Customer. Используя оператор GRANT, член роли SalesManagers должен указать свою принадлежность к роли с помошью ключевого слова

AS. Указание фуппы, к которой принадлежит пользователь, необходимо для проверки его разрешений на выполнение действия GRANT.

GRANT SELECT ON Customer ТО Joe AS SalesHanagers *

Чтобы отменить действие оператора WITH GRANT OPTION, не отменяя при этом разрешения, предоставленные учетной записи пользователя, используйте оператор

GRANT OPTION FOR.

В следующем примере отменяется действие оператора WITH GRANT OPTION

для пользователя Joe, однако при этом не отменяются его разрешения доступа на работу с таблицей Customer. Для блокировки или отзыва разрешений доступа к объекту,

которые были изначально путем использования оператора WITH GRANT

OPTION, используйте ключевое слово CASCADE, блокирующее или отзывающее

разрешения, предоставленнхе Joe другим пользователям:

REVOKE GRANT OPTION FOR ON Customer FROM Joe AS SalesManagers

В следующем примере отменяется оператора WITH GRANT OPTION

для пользователя Joe, а также отзываются все разрешения, предоставленные Joe другим пользователям:

revoke GRANT OPTION FOR ON Customer FROM Joe CASCADE AS , f.

SalesManagers

Примечание Используйте оператор WITH GRANT OPTION осторожно. Единственный контроль над учетными записями, которые получают разрешения доступа, будет состоять в запрете доступа или отмене разрешений на работу с объектами после того, как они будут установлены (и, возможно, после повреждения данных).

Просмотр разрешений

Вы можете просматривать предоставленные разрешения доступа для объектов БД, используя системную хранимую процедуру Все пользователи БД имеют разрешение на ее выполнение.



Следующий оператор выводит список всех разрешений, назначенных объектам

таблицы Customer текущей БД:

EXEC sp.helprotect Xustomer-

Этот оператор выводит список всех разрешений на выполнение операторов и работу с объектами, которыми пользователь Joe обладает в текущей БД:

EXE protect NULL , Joe*

Следующий оператор выводит список всех разрешений доступа к объектам, которые назначены пользователям роли в текущей БД:

ЕХЕС spjelprotect NULL , NULL . SaiesManagers

Упражнение 3. Предоставление и проверка разрешений доступа к объею-ам

В этом упражнении вы предоставите пользователям разрешения на работу с объектами и выполните проверку предоставленных разрешений.

► Чтобы предоставить и проверить разрешения доступа к объектам

1. Переключитесь в SQL Query Analyzer.

2. В меню File выберите Connect. Откроется окно Connect To SQL Server.

3. Щелкните SQL Server Authentication.

4. В поле Login Name введите sa и щелкните ОК.

Обратите внимание, что вы подключились к БД master как пользователь sa.

5. В панели инструментов в списке БД выберите в качестве текущей БД SSEMDB.

6. В панели инструментов щелкните Load SQL Script. Откроется окно Open Query File.

7. Откройте файл View Proc.sql из папки C:\SelfPacedSQL\CH l 1.

Откроется сценарий Transact-SQL, который создаст новую хранимую процедуру с именем предоставит разрешение на выполнение операции

EXECUTE на эту процедуру для рол est, создаст новое представление с име нем Customer Viewl и предоставит разрешение на выполнение оператора SELECT в данном представлении для роли public.

8. В панели инструментов щелкните Execute Query.

Обратите внимание, что хранимая процедура была создана, а

разрешения на выполнение оператора EXECUTE были предоставлены роли guest. Обратите внимание также на то, что был создан объект и роли public

предоставлены разрешения выполнять запрос SELECT в этом объекте.

9. В меню File выберите Connect.

10. Щелкните SQL Server Authentication.

П. В поле Login Name введите Ana. .

12. В поле Password введите password и щелкните ОК.

Обратите что вы подключились к БД master под именем Ana.

13. Раскройте список БД в панели инструментов. Убедитесь в том, что пользователь

Ana не может выбрать БД SSEMDB в качестве текущей.

Ana не является пользователем БД SSEMDB.



14. В панели запросов введите EXEC и в панели ин-

струментов щелкните Execute Query.

Обратите внимание, что пользователь Ana не может выполнять проце-

дуру Customer Procedure в БД SSEMDB, несмотря на то что она не является

пользователем БД SSEMDB, а разрешение выполнения оператора EXECUTE предоставлено учетной записи пользователя guest.

В окне SQL Query Analyzer переключитесь на пользовательскую сессию sa.

16. В панели инструментов щелкните Clear Window.

17. В панели запросов введите ег guest и в панели инструментов щелкните

Execute Query.

Обратите внимание, что в БД SSEMDB отсутствует пользователь guest. Поэтому пользователь Ana не имеет доступа к БД SSEMDB.

18. В панели инструментов щелкните Clear Window.

19. В панели запросов введите ccess guest и в панели инструментов щелкните Execute Query.

Обратите внимание, что роли guest предоставлен доступ к БД SSEMDB.

20. В окне SQL Query Analyzer переключитесь на пользовательскую сессию Ana.

21. Выполните запрос EXEC SSEMDB.dbo.Customer Piocedure еще раз.

Обратите внимание, что теперь пользователь Ana может выполнить хранимую процедуру Customer Procedure, которая отображает три пож таблицы Customer.

22. В новой строке введите SELECT * FROM SSEMDB.dbo.Custoroer View L

23. Выделите мышью этот новый запрос и в панели инструментов щелкните Execute

Query.

Обратите внимание, что пользователь Ana может выполнять выборку данных из представление rVkv Она является пользователем guest, и разрешение на выполнение оператора SELECT было предоставлено роли public, к которой относится и пользователь guest.

24. В окне SQL Query Analyzer переключитесь на пользовательскую сессию sa.

25. В панели инструментов щелкните Clear Window.

26. В панели запросов введите и в панели инструментов щелкните Execute Query.

27. Обратите внимание, что пользователю Ana предоставлен доступ к БД SSEMDB. Переключитесь на .,ол,...о1!а1с.1.скую сессию Ana в окне SQL Query Analyzer.

28. В панели инструментов щелкните Execute Query, чтобы заново выполнить оба запроса.

Обратите внимание, что Ana больше не может выполнять хранимую процедуру хотя может выполнять выборку данных из представления Customer Viewl. Теперь она является пользователем БД SSEMDB. Разрешение выполнения оператора EXECUTE предоставлялось только учетной записи пользователя guest, но не роли public.

29. Переключитесь в SQL Server Enterprise Manager.

30. Раскрыв контейнер БД SSEMDB, правой кнопкой щелкните Use и выберите Refresh.

31. Раскрыв контейнер БД SSEMDB, правой кнопкой щелкните Roles и выберите New

Database Role.

Откроется окно Database Role Properties - New Role.

32. В поле Name введите SSEMDB CustomRole,



1 ... 108 109 110 [ 111 ] 112 113 114 ... 203

© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика