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

1 ... 105 106 107 [ 108 ] 109 110 111 ... 203


предоставления, блокирования и отзыва этих разрешений. Чтобы просмотреть в БД существующие разрешения на выполнение операторов, щелкните правой кнопкой БД и выберите Properties. На вкладке Permissions диалогового окна Properties вы можете выполнить все перечисленные операции над разрешениями доступа (рис.


a......

□ \


Рис. 11-1. Просмотр н изменение разрешений на выполнение операторов

Обратите внимание, что каждый зарегистрированный и каждая оп-

ределяемая пользователем роль БД отображается в этом списке с указанием соответствующих разрешений на выполнение операторов, если таковые определены. Зеленая галочка рядом с именем пользователя или роли означает, что они обладают соответствующими разрешениями, красный крестик означает блокирование разрешения, а отсутствие метки - отзыв или неприменимость данных разрешений для пользователя или роли. Помните: если для объекта определено несколько разрешений, результирующие разрешения доступа в основном будут определяться как сумма всех имеющихся разрешений, но запрет разрешений доступа имеет приоритет над всеми остальными. Например, на рис. 11-1 для роли public блокировано разрешение на создание таблицы. Поэтому под именем пользователя Joe вы не сможете создать таблицу, несмотря на то, что ему в индивидуальном порядке были предоставлены такие разрешения. Однако запрет на выполнение операторов никак не отражается на члене роли сервера sysadmin (в которую входит учетная запись sa). Наконец, следует отметить, что в данном списке разрешений отображаются только те разрешения на выполнение операторов, которые непосредственно пользователю. Разрешения на выполнение операторов, предоставленные пользователю через его участие в роли сервера или постоянной роли БД, здесь не отображаются.

Предоставление, блокирование и отзыв разрешений на выполнение операторов средствами Transact-SQL

Вы можете использовать операторы GRANT, DENY и REVOKE для управления разрешениями на выполнение операторов при помощи сценариев Transact-SQL. Эти операторы могут быть использованы для предоставления, блокировки и отзыва разрешений на выполнение отдельных операторов. Когда они используются с ключевым словом ALL, разрешения доступа распространяются на все операторы и объекты.



В следующем примере пользователю Joe (имя учетной записи SQL Server), роли SalesManagets (определяемая пользователем роль БД) и группе SelfPacedSQL\SQLSer-

verAdmins (группа Windows) предоставляется разрешение на выполнение оператора CREATE TABLE:

GRANT CREATE TABLE TO Joe, SalesManagers, . . . - .

[SelfPacedSQL\SOLServerAominsj . <

Примечание При ссылке налокальпую встроенную группу Windows, например BUIL-Operators, лучше указывать а не имя домена или локального

компьютера.

В следующем примере пользователю Joe будет запрещено выполнение оператора CREATE TABLE. Чтобы удалить блокировку, заданную оператором DENY, используйте операторы REVOKE или GRANT.

DENY CREATE TABLE TO Joe

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

REVOKE ALL FROM Joe

. У m

Просмотр разрешений на выполнение операторов средствами Transact-SQL

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

В следующем примере выводится список всех разрешений на выполнение операторов в текущей БД:

EXE protect NULL, NULL, NULL, s

Упражнение 2. Предоставление и проверка разрешений на выполнение операторов

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

► Чтобы предоставить и проверить разрешения на выполнение операторов

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

2. Убедитесь, что вы подключились к SQL Server под именем Joe.

3. В панели инструментов шелкните Load SQL Script.

окно SQL Query Analyzer, выдающее вопрос, хотите ли вы сохранить изменения в предыдущем сценарии.

4. Щелкните No. . Откроется окно Open Query File.

5. Откройте файл CreateTeslTable 1 .sql из папки C;\SelfPacedSQL\CH l 1.

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



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

Обратите внимание, что успешно создана и в нее добавлена одна запись.

Пользователь Joe может создавать таблицы, так как он относится к членам роли Однако Joe не может просматривать данные, потому что он относится к пользователям, которым назначена постоянная ролью БД db denydatareader.

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

Обратите внимание, что окно Database User Properties - Joe до сих пор открыто с момента выполнения последнего упражнения.

8. В диалоговом окне Database User Properties - Joe снимите флажок рядом с именем роли Db denydatareader и щелкните Apply.

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

10. В области запроса выберите SELECT * FROM TestTablel и в панели инструментов

щелкните Execute Query.

Обратите внимание, что пользователь Joe теперь может успешно выполнить запрос.

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

Откроется окно Connect To SQL Server.

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

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

Обратите внимание, что подключиться к серверу можно как sa без указания пароля. де, где будет эксплуатироваться ваша БД никогда не разрешайте использовать смешанный режим проверки подлинности и оставлять пустой строку пароля системного администратора.

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

15. В панели запросов введите SELECT * FROM TestTablel и в панели инструментов

щелкните Execute Query.

Обратите внимание, что объект TestTable! не будет найден, если в качестве aia-дельца объекта TestTable 1 не указан пользователь с учетной записью sa. Причина в том, что SQL Server 2000 ищет этот объект толъко как объект, принадлежащий или пользователю sa, или роли dbo. Атак как он принадлежит пользователю Joe, он не будет найден.

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

Обратите внимание, что на экране отображается содержимое объекта TestTable, владельцем которого является пользователь Joe.

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

18. Измените оператор CREATE TABLE, указав в качестве владельца роль dbo (теперь оператор должен начинаться так: CREATE а затем в панели инструментов щелкните Execute Query.

Обратите внимание, что таблица успешно создана и в нее добавлена одна запись. Однако заметьте, что данные были добавлены в объект Joe.TestTablel, а не в dbo.TestTablel.

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

20. В диалоговом окне Database User Properties - Joe снимите флажок рядом с Db owner и щелкните ОК.

21. В дереве консоли щелкните правой кнопкой БД SSEMDB и выберите Properties.

Откроется окно SSEMDB Properties.

22. Перейдите на вкладку Permissions.



1 ... 105 106 107 [ 108 ] 109 110 111 ... 203

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