Книги, научные публикации Pages:     | 1 |   ...   | 4 | 5 | 6 | 7 | 8 |   ...   | 10 |

MCSA/MCSE, MCDBA Training Kit Exam 70-228 Microsoft SQL Server 2000 System Administration Microsoft-Press курс SA/MCSE, MCDBA ...

-- [ Страница 6 ] --

Откроется окно Restore Progress, отражающее процесс восстановления. После за вершения восстановления откроется окно SQL Server Enterprise Manager, подтвер ждающее успешное окончание процесса восстановления.

7. Щелкните ОК.

Обратите внимание, что в дереве консоли база SSEMDB помечена как загружае мая (Loading). Вы не можете просматривать ее объекты.

8. В дереве консоли SQL Server Enterprise Manager правой кнопкой щелкните SSEMDB, выберите All Tasks, затем Ч Restore Database.

Обратите внимание, что вы можете восстановить дополнительные файлы журнала транзакций, но не можете обратиться к дифференциальной резервной копии, не восстановив полную резервную копию.

9. В списке наборов резервных копий отмените выбор, сделанный SQL Server Enter prise Manager, и установите флажок Full SSEMDB Database Backup #1. Проверьте, что другие наборы не выбраны.

10. Перейдите на вкладку Options.

11. Установите переключатель Leave Database Read-Only And Able To Restore Additional Transaction Logs и щелкните ОК.

Откроется окно Restore Progress, в котором будет отражаться ход процесса восста новления. После завершения восстановления откроется окно SQL Server Enterprise Manager, подтверждающее успешное окончание процесса восстановления БД SSEMDB.

12. Щелкните ОК.

Обратите внимание, что в дереве консоли БД SSEMDB помечена как доступная только для чтения (read-only).

13. В дереве консоли щелкните Tables.

14. В правой панели щелкните Customer правой кнопкой и выберите Open Table\Re turn All Rows.

В окне Data In Table 'Customer' In 'SSEMDB' On 'SelfPacedCPU' будет показано содержимое таблицы Customer после восстановления. Обратите внимание, что вос становлена только 21 запись. Закройте окно Data In Table 'Customer' In 'SSEMDB' On'SelfPacedCPU'.

15. В дереве консоли щелкните SSEMDB правой кнопкой и выберите All Tasks\Resiore Database.

Обратите внимание, что SQL Server Enterprise Manager выбрал оставшиеся журна лы записи транзакций.

16. В списке наборов резервных копий отмените выбор, сделанный SQL Server Enter prise Manager и пометьте флажок SSEMDB Transaction Log Backup #1. Проверьте, что другие наборы не выбраны.

17. Перейдите на вкладку Options.

18. Установите переключатель в положение Leave Database Read-Only And Able To Restore Additional Transaction Logs и щелкните ОК.

Резервное копирование и восстановление баз данных Глава Откроется окно Restore Progret-s, в котором будет отражаться ход процесса восста новления. После завершения восстановления откроется окно SQL Server Enterprise Manager, подтверждающее успешное окончание процесса восстановления БД SSEMDB.

19. Щелкните ОК.

20. В дереве консоли щелкните Tables.

21. В правой панели щелкните Customer правой кнопкой и выберите Open Table\Re turn All Rows.

В окне Data In Table 'Customer' In 'SSEMDB' On 'SelfPacedCPU' будет показано содержимое таблицы Customer после восстановления.

22. Обратите внимание, что восстановлено только 23 записи (добавлено 2 записи).

Закройте окно Data In Table 'Customer' In 'SSEMDB' On 'SelfPacedCPU'.

23. В дереве консоли правой кнопкой щелкните SSEMDB, выберите All Tasks, затем Ч Restore Database.

Обратите внимание, что SQL Server Enterprise Manager выбрал оставшиеся журна лы записи транзакций.

24. В списке наборов резервных копий отмените выбор, сделанный SQL Server Enter prise Manager и пометьте флажок SSEMDB Transaction Log Backup #2. Проверьте, что другие наборы не выбраны.

25. Перейдите на вкладку Options.

26. Установите переключатель в положение Leave Database Read-Only And Able To Restore Additional Transaction Logs и щелкните ОК.

Откроется окно Restore Progress, в котором будет отражаться ход процесса восста новления. После завершения восстановления откроется окно SQL Server Enterprise Manager, подтверждающее успешное окончание процесса восстановления БД SSEMDB.

27. Щелкните ОК.

28. В дереве консоли щелкните Tables.

29. В правой панели щелкните Customer правой кнопкой и выберите Open Table\Re turn All Rows.

В окне Data In Table 'Customer' In 'SSEMDB' On 'SelfPacedCPU' будет показано содержимое таблицы Customer после восстановления.

30. Обратите внимание, что восстановлена только 31 запись (добавлено 8 записей).

Закройте окно Data In Table 'Customer' In 'SSEMDB' On 'SelfPacedCPU'.

31. В дереве консоли правой кнопкой щелкните SSEMDB, выберите All Tasks, затем Ч Restore Database. Обратите внимание, что SQL Server Enterprise Manager выбрал оставшиеся журналы записи транзакций.

32. Расширьте поле Backup Set Date, чтобы увидеть дату и время.

33. Пометьте флажок Point In Tims Restore.

Откроется окно Point In Time Restore.

34. Выберите время на 15 секунд позже времени создания третьей резервной копии журнала транзакций и щелкните ОК.

35. Щелкните ОК, чтобы восстановить базу к определенному моменту времени.

Откроется окно Restore Progress, отражающее ход процесса восстановления. Пос ле завершения восстановления откроется окно SQL Server Enterprise Manager, под тверждающее успешное окончание процесса восстановления БД SSEMDB.

36. Щелкните ОК.

Занятие 3 Восстановление пользовательских баз данных Так как мы работаем с небольшими объемами данных, БД, используемая в этом упражнении, не может отразить эту особенность. Выбор интервала в 15 секунд произволен и не показывает разницу в сравнении с восстановлением Transaction Log Backup #3. Однако, в реальных системах это будет заметно.

37. В дереве консоли щелкните Tables.

38. В правой панели щелкните Customer правой кнопкой и выберите Open Table\Re turn Ail Rows. В окне Data In Table 'Customer' In 'SSEMDB' On 'SelfPacedCPU' будет показано содержимое таблицы Customer после восстановления.

39. Обратите внимание, что восстановлены только 32 записи. Закройте окно Data In Table 'Customer' In 'SSEMDB' On 'SelfPacedCPU'. 33 записи не добавлены 40. Закройте SQL Server Enterprise Manager.

Восстановление с использованием Transact-SQL Восстанавливать БД и журналы транзакций можно также с помощью команд BASE и RESTORE LOG Transact-SQL. Их синтаксис и необязательные параметры описаны в SQL Server Books Online. В командах резервного копирования Transact-SQL требует ся указывать ту же информацию, что и при использовании SQL Server Enterprise Manager, но для понимания синтаксиса операторов Transact-SQL необходимо попрак тиковаться в их использовании. Кроме того, в Transact-SQL есть ряд дополнительных параметров, предоставляющих дополнительные возможности для управления рабо той с резервными копиями. Большинство из них связано с записью на ленточный накопитель, но перечисленные ниже параметры могут быть использованы с любым типом носителей;

доступны же они только в Transact-SQL.

Х Вы можете ограничить доступ к только что восстановленной БД.

Х Вы можете переместить БД на новое место, используя необязательный параметр MOVE.

Х Вы можете установить пароль.

Х Вы можете заново начать прерванное восстановление Х Вы можете восстановить состояние БД до именованной метки.

Как и команды BACKUP, команды RESTORE DATABASE и RESTORE LOG ка жутся достаточно сложными. С помощью следующих примеров вы научитесь их ис пользовать. Вероятно, главное отличие от ситуации, когда вы используете SQL Server Enterprise Manager при восстановлении, состоит в том, что при использовании Tran sact-SQL вы должны верно и в правильном порядке указать наборы резервных копий, в том числе номер набора резервных копий на наборе носителей.

Полное восстановление базы данных Команды RESTORE DATABASE и RESTORE LOG могут быть как очень простыми, так и очень сложными.

В следующем примере происходит восстановление БД Northwind из дискового файла C:\SQLBackups\Temp.bak:

RESTORE DATABASE Northwind FROM DISK = 'C:\SQLBackups\Teinp.bak В следующем примере восстанавливается полная резервная копия БД Northwind с устройства NorthwindFullBackup, затем восстанавливается дифференциальная резер вная копия (набор резервных копий 2 на устройстве) и две копии журнала транзак ций (наборы 4 и 5 на устройстве). Восстановление происходит после завершения вос становления второго журнала.

Глава Резервное копирование и вссстаковление баз данных RESTORE DATABASE Northwind FROM NorthwindFullBackup WITH NORECOVERY RESTORE DATABASE Northwind FROM NorthwindDiffBackup WITH FILE = 2, NORECOVERY RESTORE LOG Northwind FROM NorthwindTLogBackup WITH FILE = 4, NORECOVERY RESTORE LOG Northwind FROM NorthwindTLogBackup2 WITH FILE = Восстановление файла данных или группы файлов В следующем примере восстанавливается дополнительный файл данных БД North wind с устройства File_Backup. БД остается в режиме NO RECOVERY, а после вы полнения каждых 25% процесса восстановления выводится сообщение. Далее вос станавливается журнал транзакций (набор 2 на устройстве), по завершении этого БД является восстановленной полностью. После восстановления доступ к БД имеют только администраторы, RESTORE DATABASE Northwind FILE = 'Second_Data_File' FROM File_Backup WITH RESTRICTEI)_USER, HORECOVERY, STATS = RESTORE LOG Northwind FROM NorthwindTLogBackup WITH FILE = Восстановление с использованием необязательного параметра Move В следующем примере восстанавливается полная резервная копия БД Northwind и журнал транзакций. Файл данных перемещается в D:\SQLDATA\NwindNew.mdf, а файл журнала транзакций Ч в E:\SQLLogs\NwindNewLog.ldf. Кроме того, носитель резервной копии должен включать имя набора носителей (NorthwindBackups).

RESTORE DATABASE Northwind FROM NorthwindFullBackup WITH NORECOVERY, MEDIANAME = 'NorthwindBackups', MEDIAPASSWORD = 'my_password', MOVE = 'Northwind' TO 'D:\SQLOATA\NwindNew.mdf, MOVE = 'NorthwindLog 1 TO 'E:\SOLLogs\NwindNewLog.Idf, RESTORE LOG Northwind FROM NorthwindTLogBackup Восстановление до резервного состояния В следующем примере восстанавливается полная резервная копия БД Northwind с устройства NorthwindFullBackup и копии журнала транзакций (наборы резервных копий 4 и 5), БД является восстановленной в резервном состоянии после окончания восстановления второго журнала транзакций.

RESTORE DATABASE Northwind FROM NorthwindFullBackup WITH NORECOVERY RESTORE LOG Northwind FROM NorthwindTLogBackup WITH FILE = 4, NORECOVERY RESTORE LOG Northwind FROM NorthwindTLogBackup WITH FILE = 5, STANDBY - TO ' D:\SQL\UNDO.trnp' Восстановление на определенный момент времени В следующем примере полная резервная копия БД Northwind восстанавливается с устройства NorthwindFullBackup;

также восстанавливаются и копии журнала транзак Занятие 3 Восстановление пользовательских баз данных ций (наборы резервных копий 4 и 5). Восстановленная на 2 октября 2000 г. 17:08: БД находится в резервном состоянии после окончания восстановления второго жур нала транзакций.

RESTORE DATABASE Northwind FROM NorthwindFullBackup WITH NORECOVERY RESTORE LOG Northwind FROM NorthwindTLogBackup WITH FILE = 4, NORECOVERY RESTORE LOG Northwind FROM NorthwindTLogBackup WITH FILE = 5, RECOVERY, STOPAT = 'Oct 2, 2000 5 : 0 8 : 3 2 PM' Упражнение 8. Восстановление базы данных средствами Transact-SQL В этом упражнении вы с помощью нескольких сценариев Transact-SQL вос становите полную и дифференциальную резервные копии БД, а также вос становите две резервные копии журнала транзакций БД SSEMDB.

> Чтобы восстановить БД с помощью Transact-SQL 1. Убедитесь, что вы зарегистрировались на контроллере домена SelfPacedSQL.MSFT под учетной записью Administrator.

2. Раскройте окно SQL Server Query Analyzer.

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

Откроется окно Open Query File.

4. Откройте файл SSEMDB_Restorel.sql из папки C:\SelfPacedSQL\CH_9.

Откроется сценарий Transact-SQL, восстанавливающий полную резервную копию БД, дифференциальную резервную копию БД и затем две резервные копии жур нала транзакций. БД останется в резервном состоянии, используя файл отката.

Сценарий также содержит оператор SELECT, который выводит результаты вос становления.

5. Чтобы выполнить сценарий SSEMDB_Restore I.sql щелкните кнопку Execute Query.

Обратите внимание, что в области результатов отображаются 32 восстановленные записи о клиентах. Обратите внимание на восстановление каждого набора резер вных копий (см. вкладку Messages).

6. Откройте SQL Server Enterprise Manager.

7. В дереве консоли раскройте контейнер SQL Server Group, затем Ч контейнер эк земпляра сервера по умолчанию и выберите Databases. Обратите внимание, что БД SSEMDB находится в резервном состоянии и доступна только для чтения.

8. Раскройте окно SQL Query Analyzer.

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

Откроется окно Open Query File.

10. Откройте файл SSEMDB_Restore2.sql из папки C:\SelfPacedSQL\CH_9.

Откроется сценарий Transact-SQL, восстанавливающий последнюю резервную копию журнала транзакций и затем восстанавливающий БД. Сценарий также со держит оператор SELECT, чтобы вывести результаты восстановления.

11. Чтобы выполнить сценарий SSEMDB_Restore2.sql щелкните кнопку Execute Query.

Обратите внимание, что в области результатов восстановлено 33 записи о клиен тах. Также обратите внимание на восстановление каждого набора резервных ко пий (см. вкладку Messages).

Резервное копирование и восстановление бзз данных Глава 12. Раскройте окно SQL Server Enterprise Manager.

13. В дереве консоли выберите экземпляр сервера по умолчанию, щелкните Databases правой кнопкой и выберите Refresh.

Обратите внимание, что БД SSEMDB уже не находится в резервном состоянии и доступна не только для чтения.

14. Закройте SQL Server Enterprise Manager и SQL Query Analyzer.

Резюме Вы можете восстанавливать БД с помощью SQL Server Enterprise Manager или Tran sact-SQL. SQL Server Enterprise Manager помогает определить оптимальную последо вательность файлов резервных копий, при использовании Transact-SQL вы должны это делать сами. И в SQL Server Enterprise Manager, и в Transact-SQL есть возмож ность определять содержимое носителя резервной копии.

Восстановление и повторное создание системных баз данных Занятие Занятие 4. Восстановление и повторное создание системных баз данных Если БД master повреждена или экземпляр SQL Server 2000 перестал работать, необ ходимо либо восстановить БД master из резервной копии, либо повторно создать ее.

На этом занятии вы научитесь восстанавливать и заново создавать БД master.

Изучив материал этого занятия, вы сможете:

s восстановить БД master из резервной копии;

Х/ заново создавать системные БД.

Продолжительность занятия Ч около 15 минут Восстановление базы данных master Если БД master работает, но повреждена (например, если удалены все учетные запи си), вы можете восстановить ее из последней полной резервной копии. Однако все изменения, сделанные после создания копии, которую вы восстановили, будут уте ряны. Поэтому, когда вы создаете различные объекты в этой БД, следует создавать и сохранять сценарии. Также при возможности надо создавать зеркальные копии сис темных БД, используя RAID 1.

Чтобы восстановить БД master, запустите SQL Server 2000 в однопользовательском (single-user) режиме с параметром Чт из командной строки. Воспользуйтесь для это го окном сеанса MS-DOS или диалоговым окном Run.

Sqlservr -m При этом запустится SQL Server 2000 как приложение из окна консоли. Текст, кото рый вы увидите, совпадает с текстом журнала ошибок SQL Server 2000 (рис. 9-27).

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

MI <,.Й ":>.Х> -i 'I Х Рис. 9-27. Запуск SQL Server 2000 как приложения из окна консоли Гл В следующем примере БД master восстанавливается с устройства Master Full Backup (рис. 9.28);

RESTORE DATABASE master FROM MasterFullBackup i! та.тш "ми i Хмигиг.чгс.гшпш" -"ХХЧХ "Х""-Х Х"""т"-"""ЩЧ"Х"""т1" """ "~г^^ Щ Cnmran A j Cmfigmaor Fundit >1 Ш CUIDI Fund :-.;

.!. Gj Dae and TIM Fund.

- LJ MjUwmalitJl :unclo Funcuns * Ш SЩt)i Fmdmnt V j SlrwigFunctnni Рис. 9-28. Восстановление БД master После завершения восстановления БД master приложение SQL Server 2000, запу щенное в однопользовательском режиме, прекратит свою работу. Теперь вы можете запустить SQL Server 2000 в обычном режиме. Если ваша резервная копия БД создана недавно и содержит все важные изменения, вы снова можете работать. Если нет, надо будет заново создавать нужные объекты и, возможно, повторно подключить пользо вательские БД. В зависимости от причины, по которой вы восстанавливали БД master, вам также может понадобиться восстановить другие системные БД.

Воссоздание системных баз данных Если ваша БД master больше не работает, восстановить ее сложнее. Вам придется повторно создать системные БД из временных файлов (или заново установить SQL Server 2000). Чтобы перестроить системные БД, воспользуйтесь утилитой Rebuildm.exe из папки C:\Program Files\Microsoft SQL Server\80\Tools\Binn. При этом вы исполь зуете оригинальные файлы данных системных БД для того, чтобы перестроить каж дую базу в ее первоначальное состояние работая в диалоговом окне Rebuild Master.

Вы должны иметь доступ к исходным файлам программы установки SQL Server на сетевом или локальном диске (рис. 9-29).

Примечание Снимите в окнах свойств исходных файлов данных флажок только для чтения, иначе при работе программы Rebuildm.exe произойдет сбой.

Щелкните кнопку Rebuild. Появится окно Rebuild Master, предупреждающее, что вы собираетесь повторно создать и перезаписать системные БД (рис. 9-30).

После окончания повторного создания БД, необходимо восстановить БД master, как было описано ранее. Затем восстановите все системные БД (обязательно восста новите БД msdb). Если вам нужна БД model, восстановите ее. Если вы используете репликацию, восстановите БД distribution. О репликации рассказывается в главе 15.

И наконец, вам может потребоваться восстановить или повторно подключить пользо вательские БД, на которые повлиял сбой системных БД.

Занятие 4 Восстановление и повторное создание системных баз данных Рис. 9-29. Воссоздание базы данных master Рис. 9-30. Окно Rebuild Master Резюме При повреждении БД master вам понадобится восстановить ее или создать заново.

Восстановление требует, чтобы SQL Server 2000 работал в однопользовательском ре жиме. Процесс построения БД master требует построения всех системных БД с ис пользованием исходных файлов программы установки SQL Server для системных баз.

Если вам надо перестроить системные БД, восстановите их из самых последних ко пий. Все изменения, сделанные после создания последних резервных копий, вам при дется выполнять вручную. Кроме того, может потребоваться подключить заново пользовательские БД. Зто займет меньше времени, чем полное восстановление.

Резервное копирование и восстановление баз данных 278 Глава Закрепление материала Приведенные ниже вопросы помогут вам лучше усвоить основные темы дан ной главы. Если вы не сумеете ответить на вопрос, повторите материал соот ветствующего занятия. Правильные ответы приведены в приложении Воп росы и ответы в конце книги.

1. Вы регулярно проводите полное дифференциальное резервное копирование и ко пирование журнала транзакций на диск. Что еще следует периодически делать во избежание потери данных?

2. Вы Ч начинающий администратор БД и хотите создать сценарий Transact-SQL для автоматизации резервного копирования. Но его синтаксис кажется вам слож ным. Какие средства могут облегчить понимание синтаксиса Transact-SQL и па раметров резервного копирования?

3. Какое важное преимущество имеет SQL Server Enterprise Manager перед Transact SQL при восстановлении БД?

4. Каково главное отличие процесса восстановления БД master от процесса восста новления других БД?

ГЛАВА Управление доступом к SQL Server, Проверка подлинности Занятие 2> Авторизация Занятие 3. Создание и управление учетными записями В этой главе Прежде чем развернуть БД SQL Server 2000 в организации, необходимо решить воп росы их защиты и назначить пользователям и администраторам соответствующие разрешения доступа. В этой главе вы узнаете, как SQL Server 2000 управляет досту пом к серверу и БД, включая назначение разрешений на уровне сервера и на уровне БД. Также вы научитесь создавать учетные записи для пользователей при помощи средств проверки подлинности Windows и SQL Server.

Прежде всего Для изучения материалов этой главы вам потребуются:

Х компьютер, соответствующий минимальным аппаратным требованиям, перечис ленным в главе 2;

Х ОС Microsoft Windows 2000 Server, установленная на разделе диска с файловой системой NTFS;

Х компьютер с сетевым именем SelfPacedCPU, сконфигурированный как контрол лер домена SelfPacedSQL.MSFT;

Х один установленный по умолчанию и по крайней мере один именованный экзем пляр SQL Server 2000;

Х БД SSEMDB, созданная при помощи сценария CreateDB.sql.

Управление доступом к SOL Server 2000 Глава Занятие 1, Проверка подлинности Чтобы пользователь мог работать с БД или выполнять задания на уровне сервера, SQL Server 2000 должен проверить его подлинность. На этом занятии вы узнаете о двух режимах проверки подлинности, используемых SQL Server 2000. Вы научитесь ис пользовать их и познакомитесь с параметрами защиты, которые они предоставляют учетным записям. И наконец, вы узнаете, как передается информация между систе мами SQL Server 2000 при выполнении запросов и доступе к файловой системе.

Изучив материал этого занятия, вы сможете:

рассказать, как SQL Server 2000 проверяет подлинность пользователей;

S выбрать режим проверки подлинности в SQL Server 2000;

s изменить режим проверки подлинности в SQL Server 2000;

S разрешить делегирование учетной записи пользователя S между экземплярами SQL Server 2000.

Продолжительность занятия Ч около 15 минут Проверка подлинности в SQL Server Чтобы пользователь мог выполнять какие-либо действия или получить доступ к БД в системе SQL Server 2000, администратор должен создать регистрационную запись, которая предоставит пользователю доступ к SQL Server 2000, и назначить ей соответ ствующие разрешения. Регистрационная запись может быть связана с определенной группой или пользователем Windows NT 4.0/2000 или с записью пользователя SQL Server 2000 (учетная запись SQL Server 2000). Подробнее о создании регистрацион ных записей, связанных с учетными записями SQL Server 2000 или пользователями и группами Windows NT 4.0/2000 Ч в главе 3. О назначении и управлении разрешени ями учетной записи Ч в главе 11.

Подключаясь к SQL Server 2000, пользователь выбирает вид проверки подлиннос ти (проверка средствами Windows или средствами SQL Server 2000) и вводит имя и пароль. Чтобы пользователь мог войти в систему, SQL Server 2000 должен проверить, является ли он зарегистрированным пользователем и имеет ли право устанавливать соединение с SQL Server, т. е. должны быть проверены регистрационные реквизиты пользователя.

Проверка подлинности средствами Windows Если пользователь прошел проверку подлинности в домене и является зарегистри рованным пользователем Windows;

, ОС предложит SQL Server 2000 доверять результа там этой проверки и предоставить доступ на основании указанных имени и пароля.

При этом для подтверждения личности пользователя передается билет Kerberos (в Windows 2000) или маркер доступа (в Windows NT 4.0). SQL Server 2000 проверяет аутентичность билета Kerberos или маркера доступа, и сравнивает полученные дан ные со списком пользователей и групп, которым разрешен доступ. На основе этой информации SQL Server 2000 предоставляет или отказывает в доступе.

Примечание Подключение, использующее средства проверки подлинности Windows, называется доверенным (trusted connection).

Занятие 1 Проверка подлинности Проверка подлинности средствами SQL Server Если подключающийся пользователь не прошел проверку подлинности в домене Windows или подключается при помощи регистрационной записи SQL Server 2000, он может предложить SQL Server 2000 проверить его подлинность средствами SQL Server на основе указанных имени и пароля (если SQL Server 2000 допускает такой вид проверки подлинности). При проверке подлинности собственными средствами SQL Server 2000 сравнивает переданное имя пользователя со списком зарегистриро ванных пользователей. Если SQL Server находит имя пользователя в таблице sysxlogins, он зашифровывает пароль и сравнивает его с зашифрованным паролем в таблице. По результатам проверки SQL Server 2000 предоставляет доступ или отказывает в нем, Примечание Если клиентские и серверные сетевые библиотеки не используют для всего сеанса SSL-шифрование, имя и пароль пользователя передаются SQL Server открытым текстом.

Сравнение типов проверки подлинности В табл. 10-1 перечислены различные возможности зашиты, предоставляемые при про верке подлинности средствами Windows и средствами SQL Server 2000.

Табл. 10-1. Возможности защиты при проверке подлинности средствами Windows и SQL Server Проверка подлинности Проверка подлинности средствами Windows средствами SQL Server Windows не проверяет подлинность Имя и пароль, указываемые пользователем пользователя для входа в домен, передаются контроллеру домена Windows в зашифрованном виде Имя и пароль, которые вводит Когда пользователь, прошедший проверку пользователь, передаются подлинности, передает имя и пароль SQL Server 2000, билет Kerberos или маркер в незашифрованном виде (если не включен протокол SSL) доступа зашифровываются Политики пароля нет: он может В Windows NT 4.0/2000 действует политика быть любой длины и сложности, паролей (требуется сложный пароль, его время действия не ограничено срок действия пароля ограничен) В Windows NT 4.0/2000 действует политика SQL Server 2000 не блокирует блокировки учетных записей (при нескольких учетные записи: пароль можно вводить сколько угодно раз попытках ввода неправильного пароля) Клиентские сетевые библиотеки и проверка подлинности Чтобы подключиться к серверной сетевой'библиотеке, клиенты SQL Server 2000 ис пользуют аналогичную клиентскую библиотеку. Для поддержки нужного сетевого протокола соответствующая пара сетевых библиотек должна быть активна на клиенте и на сервере. На компьютерах с Windows NT 4.0/2000 клиентскими библиотеками по умолчанию являются TCP/IP Sockets и Named Pipes;

они используются в той очеред ности, в какой перечислены здесь. В большинстве случаев вам не придется изменять настройки сетевых библиотек. Однако если возникают проблемы с подключением к SQL Server 2000, необходимо проверить настройки сетевых библиотек. Подключить Управление доступом к SOL Server 2000 Глава новые сетевые библиотеки, задать для них нестандартные параметры соединения и определить очередность использования библиотек на клиентском компьютере мож но с помощью утилиты SQL Server Client Network Utility.

Запустить утилиту SQL Server Client Network Utility можно из меню Start\Prog rams\Microsoft SQL Server.

Рис. 10-1. Утилита SQL Server Client Network UtUity Примечание Можно реализовать принудительное SSL-шифрование. Если вы поме тите соответствующий флажок, система SQL Server 2000, к которой вы подключаетесь, также должна будет использовать шифрование. С помощью SQL Server Client Network Utility вы можете установить шифрование в серверных библиотеках Net-Libraries.

При использовании сетевых библиотек Named Pipes и Multiprotocol требуется, что бы пользователь прошел проверку подлинности в домене Windows, и только потом он может подключиться к SQL Server 2000, используя средства проверки подлиннос ти Windows или SQL Server 2000. Это не создает проблем, если вы используете Win dows-клиент и уже зарегистрировались в том же самом домене (или доверенном до мене), к которому принадлежит компьютер с SQL Server 2000. Если же вы пытаетесь подключиться к SQL Server 2000 с компьютера, не имеющего доверенного соедине ния с доменом, то при использовании библиотек Named Pipes и Multiprotocol вы не сможете этого сделать (однако, используя библиотеку TCP/IP Sockets, вы можете под ключиться, если введете правильное имя и пароль).

Примечание Легче всего установить аутентифицированное соединение (не входя в домен), подключившись к раздел)' домена, к которому открыт общий доступ.

Ни библиотека TCP/IP Sockets, ни любая другая не требует начальной проверки подлинности в домене Windows. Пользователь (или приложение) может попытаться подключиться к SQL Server 2000, используя сетевой протокол TCP/IP и библиотеку TCP/IP Sockets, с любого компьютера, который может установить соединение с SQL Server 2000. Поэтому вам необходимо знать, как обезопасить домен Windows и свой экземпляр SQL Server 2000, чтобы защитить данные.

Проверка подлинности Занятие Выбор режима проверки подлинности для SQL Server При установке SQL Server 2000 вы выбираете режим проверки подлинности, который будет использовать ваша система: режим проверки подлинности Windows или сме шанный Примечание Если ваш экземпляр SQL Server 2000 работает под управлением Windows 98/Ме, вы можете использовать только проверку подлинности средствами SQL Server 2000.

Проверка подлинности Windows Если установлен режим проверки подлинности Windows (Windows Authentication Mode), пользователь может подключиться к SQL Server 2000 только с помощью средств про верки подлинности Windows (такое соединение называется доверенным). Windows NT 4.0/2000 обеспечивает различные методы для зашиты среды Windows, которые невоз можно перечислить в этой книге, но которые очень важны для зашиты вашего экзем пляра SQL Server 2000. К ним относятся политики учетных записей и групп, прокси серверы, брандмауэры, маршрутизаторы и протокол IPSec (Internet Protocol Security).

Благодаря этим механизмам использование режима проверки подлинности Windows (доверенного соединения) обеспечивает лучшую защиту, чем проверка подлинности средствами SQL Server 2000.

Смешанный режим проверки подлинности При смешанном режиме проверки подлинности (Mixed Authentication Mode) пользова тель может подключиться к SQL Server 2000 с помощью средств проверки подлинно сти Windows или SQL Server 2000. Этот режим необходим для прямого подключения к SQL Server 2000 клиентов Novell NetWare, Apple Macintosh, Banyan Vines, UNIX и Linux. Однако при использовании этого режима данные защищены меньше, чем при режиме проверки подлинности Windows, и поэтому его следует использовать только в случае крайней необходимости.

Смена режимов проверки подлинности Для смены режимов после установки используйте SQL Server Enterprise Manager.

В дереве консоли щелкните правой кнопкой свой экземпляр сервера и выберите Properties. На вкладке Security диалогового окна SQL Server Properties установите пе реключатель SQL Server And Windows или Windows Only, чтобы изменить режим про верки подлинности, и щелкните ОК {рис. 10-2).

Теперь выйдите из системы и перезапустите SQL Server, чтобы установить ноный режим проверки. SQL Server Enterprise Manager запросит, нужно ли перезагрузить сервер сейчас (рис. 10-3).

Примечание Если запушена служба SQL Server Agent, SQL Server Enterprise Manager выдаст сообщение с вопросом, следует ли остановить и перезапустить также и ее, од нако сам не выполнит перезапуск. Вам придется сделать это вручную.

Глава Управление доступом к SQL Server Рис. 10-2. Переключение режимов проверки подлинности Рис. 10-3. SQL Server Enterprise Manager запрашивает подтверждение на остановку и перезапуск SQL Server Упражнение 1. Выбор режима проверки подлинности для SQL Server В этом упражнении вы сиените режим проверки подлинности Windows на смешанный режим.

*Х Чтобы выбрать режим проверки подлинности для SQL Server 1. В дереве консоли SQL Server Enterprise Manager последовательно раскройте кон тейнеры Microsoft SQL Servers и Microsoft SQL Group.

2. Щелкните правой кнопкой экземпляр по умолчанию и выберите Properties.

3. Откроется окно SQL Server Properties (Configure) Ч SelfPacedCPU.

4. Перейдите на вкладку Security.

5. Установите переключатель SQL Server And Windows и щелкните ОК.

Система выдаст вопрос, хотите ли вы перезапустить сервер SeifPacedCPU.

6. Щелкните Yes.

Система запросит, требуется ли остановить службу MSSQLServer и все связанные с нею службы.

Занятие Проверка подлинности Делегирование учетной записи пользователя Служба SQL Server может заимствовать регистрационные реквизиты пользователя, чтобы предоставить ему доступ к ресурсам, не относящимся к данному экземпляру SQL Server (например к файловой системе или к другому серверу). Благодаря этому доступ к ресурсам предоставляется по имени и паролю прошедшего проверку под линности пользователя, а не доменной учетной записи, используемой службой SQL Server. Чтобы служба SQL Server могла передать другому серверу имя и пароль пользо вателя, прошедшего проверку подлинности Windows, следует разрешить делегирова ние учетной записи Windows 2000 на обоих серверах.

При делегировании учетной записи пользователя требуется, чтобы на всех уча ствующих серверах была установлена ОС Windows 2000, поддерживался протокол Kerberos и использовалась служба Active Directory. При использовании Active Directory для передачи соответствующих разрешений пользователь должен иметь право деле гирования. Чтобы предоставить пользователю эти разрешения, пометьте соответству ющий флажок в диалоговом окне свойств учетной записи, доступном из оснастки Active Directory Users And Computers (рис. 10-4).

Рис. 10-4. Выбор компьютера, которому будет доверено делегирование Кроме того, на компьютере, где работает система SQL Server 2000, должно быть разрешено делегирование. Для выполнения распределенных запросов на двух SQL Server 2000 на различных компьютерах оба компьютера должны использовать делеги рование. Это свойство учетной записи устанавливается в диалоговом окне Properties, доступном из Active Directory Users And Computers (рис. 10-5).

И наконец, чтобы использовать делегирование учетной записи пользователя, у системы SQL Server 2000 должно быть основное имя службы (Service Principal Name, SPN). SPN определяется с помощью утилиты Setspn из состава Windows 2000 Resource Kit. Чтобы задать постоянное имя SPN, назначаемое администратором домена Win dows учетной записи, используемой службой SQL Server, воспользуйтесь утилитой Setspn. Постоянное имя SPN назначается на основании номера используемого порта.

Разным экземплярам SQL Server и разным портам присваиваются разные SPN. Что Глава Управление доступом к SQL Server 2QOO бы разрешить делегирование, используйте сетевую библиотеку TCP/IP, а не Named Pipes, поскольку SPN соответствует определенному сокету TCP/IP (TCP/IP socket).

Рис. 10-5. Определение параметров учетных записей компьютеров, которым будет доверено делегирование В следующем примере SPN назначается для экземпляра SQL Server 2000 с именем SelfPacedCPU.SelfPacedSQL.MSFT, использующего порт 1433 и учетную запись поль зователя домена SelfPacedSQL\ SQLService:

Setspn -a MSSQLSvc/SelfPacedCPU.SelfPacedSQL.msft: sqlservice Также вы можете задать временное SPN-имя, назначаемое службой SQL Server 2000, работающей под учетной записью локальной системы. При этом SQL Server ав томатически регистрирует SPN при запуске системы. Срок действия временного SPN имени заканчивается при остановке службы SQL Server. Если вы хотите изменить по стоянное имя на временное, удалите зарегистрированное ранее SPN-имя.

В следующем примере удаляется SPN для экземпляра SQL Server 2000 с именем SelfPacedCPU.SelfPacedSQL.MSFr, использующего порт 1433 и учетную запись поль зователя домена SelfPacedSQL\ SQLService:

Setspn -d MSSQLSvc/SelfPacedCPU.SelfPacedSQL.msft:1433 sqlservice Примечание Если вы хотите изменить учетную запись службы SQL Server, удалите все существующие и создайте новые SPN-имена.

Проверка подлинности Занятие Резюме Чтобы разрешить пользователям доступ к SQL Server 2000, администратор БД должен определить права существующих учетных записей пользователей и групп Windows или создать новые регистрационные записи SQL Server. Пользователь может подключить ся к SQL Server 2000, используя свое имя и пароль в Windows или SQL Server. Послед ний способ менее безопасен и не используется по умолчанию. Чтобы разрешить ис пользование регистрационных записей SQL Server при подключении пользователей к SQL Server 2000, установите смешанный режим проверки подлинности. Чтобы имя и пароль Windows могли быть переданы другим серверам, необходимо разрешить деле гирование учетной записи пользователя в Windows 2000.

Управление доступом к SQL Server 2000 Глава Занятие 2. Авторизация После проверки подлинности пользователь может выполнять только административ ные задачи и обращаться только к тем БД, для которых ему были предоставлены со ответствующие разрешения доступа. На этом занятии вы узнаете о различных мето дах назначения разрешений пользователям. Вы познакомитесь с ролями сервера (их также называют фиксированными ролями сервера). Вы узнаете, какие разрешения можно определять на уровне БД. В их число входят разрешения владельца БД (database owner), разрешения роли БД (database roles), разрешения на выполнение операторов (statement permissions), разрешения доступа к объектам (object permissions) и роли при ложений (application roles).

Изучив материал этого занятия, вы сможете:

описать роли сервера;

S описать фиксированные роли и пользовательские роли БД;

S рассказать о разрешениях владельца БД;

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

Продолжительность занятия Ч около 15 минут Разрешения уровня сервера В SQL Server 2000 есть несколько предопределенных ролей уровня сервера, обладаю щих правами администратора. Вы не можете удалить роли сервера или изменить их права. Чтобы предоставить эти права пользователю, добавьте его учетную запись в состав роли сервера. При помощи Transact-SQL вы можете добавлять к роли сервера пользователей или группы Windows, не создавая предварительно учетную запись (SQL Server 2000 создаст ее автоматически).

Примечание Концепция ролей сервера совпадает с концепцией встроенных групп Windows 2000.

В табл. 10-2 перечислены 8 ролей сервера SQL Server 2000.

Табл. 10-2. Роли сервера в SQL Server Роль сервера Член роли может Sysadmin Выполнять любую шлачу в любой БД SQL Server 2000. По умолчанию учетная запись SQL Server sa и все члены группы Windows Administrators являются членами данной роли Serveradmin Конфигурировать SQL Server 2000 с помощью системной хранимой процедуры sp_configure и останавливать службы SQL Server 2000.

Рекомендуется добавить сюда членов встроенной группы Windows Server Operators setupadmin Устанавливать и изменять параметры конфигурации удаленных и связанных серверов, а также параметры репликации. Кроме того, пользователи могу] также включать некоторые хранимые процедуры, например sp_serveroption, в число процедур, выполняемых при запуске системы. Рекомендуется добавить сюда членов встроенной группы Windows Server Operators Занятие В табл. 10-4 перечислены фиксированные роли уровня БД в SQL Server 2000.

Табл. 10-4. Фиксированные роли базы данных в SQL Server Роль БД Права участника этой роли db_owner Может выполнять любые задачи в БД SQL Server 2000. Имеет те же права, что владельцы БД и участники роли DBO db_accessadmin Может добавлять в БД и удалять из нее пользователей Windows NT 4.0/2000 или SQL Server (с помощью системной хранимой процедуры sp_grantdbaccess) db_securityadmin Может управлять разрешениями, ролями, записями участников ролей и создателей объектов в БД (используя операторы GRANT, REVOKE и DENY) db_ddladmin Может добавлять, изменять и удалять объекты (используя операторы CREATE, ALTER и DROP) db_backupoperator Может выполнять команды DBCC, инициировать процесс фиксации транзакций, создавать резервные копии (используя операторы DBCC, CHECKPOINT и BACKUP Transact-SQL) db_datareader Может считывать данные из пользовательских таблиц и представ лений в БД (имеет право использовать оператор SELECT) db^datawriter Может изменять или удалять данные из пользовательских таблиц и представлений в БД (имеет право использовать операторы INSERT, UPDATE и DELETE) Не может считывать данные из пользовательских таблиц представ db^denydatareader лений в БД (не имеет права использовать оператор SELECT).

Эта роль может использоваться с ролью db_ddladmin, чтобы предоставить администратору право создавать объекты, принад лежащие роли DBO, и при этом запретить чтение важных или секретных данных, содержащихся в этих объектах db denydatawriter Не может изменять или удалять данные из пользовательских табли ц в БД (не имеет права использовать операторы INSERT, UPDATE и DELETE) Резюме Получив доступ к SQL Server 2000, пользователь должен получить разрешения на выполнение каких-либо действий, При назначении разрешений для выполнения фун кций уровня сервера используются роли сервера. Чтобы предоставить пользователям или группам разрешения на работу с БД, используйте роли БД. Вы также можете пре доставлять разрешения на выполнение операторов или управление объектами. Чтобы предоставить такие разрешения, можно использовать роли, определенные пользова телем. Можно назначить некоторые разрешения пользователю guest и перечислить разрешения, предоставляемые всем прошедшим проверку подлинности пользовате лям, в роли public.

11- Управление доступом к SQL Server 2000 Глава Занятие 3. Создание и управление учетными записями Чтобы пользователь мог выполнять какие-либо действия в системе SQL Server 2000, он должен подключиться к SQL Server 2000, используя учетную запись, и к БД, ис пользуя регистрационную запись. На этом занятии вы научитесь предоставлять права доступа с помощью SQL Server Enterprise Manager и Transact-SQL, а также просмат ривать с их помощью информацию о доступе.

Изучив материал этого занятия, вы сможете:

s создавать учетные записи с использованием SQL Server Enterprise Manager и Transact-SQL;

s просматривать информацию о доступе к SQL Server 2000 и к БД.

Продолжительность занятия - около 45 минут Предоставление доступа с использованием SQL Server Enterprise Manager SQL Server Enterprise Manager позволяет в интерактивном режиме сопоставить учет ную записи пользователя или группы Windows NT 4.0/2000 с регистрационной запи сью, создать регистрационную запись SQL Server 2000 для учетной записи системы защиты SQL Server 2000. Вы можете использовать непосредственно SQL Server Enter prise Manager или же мастер Create Login Wizard.

Примечание При использовании SQL Server Enterprise Manager за один раз можно создать только одну учетную запись.

Создание учетной записи средствами мастера Create Login Wizard Вы можете вызвать любой мастер SQL Server Enterprise Manager из меню Tools или из панели задач. Любой мастер, в том числе и Create Login Wizard, вызывается из диало гового окна Select Wizard (рис. 10-6).

После запуска Create Login Wizard вам надо будет выбрать режим проверки под линности для создаваемой учетной записи в окне Select Authentication Mode For This Login (рис. 10.7).

Если вы выбрали проверку подлинности средствами Windows, то можете привя зать идентификатор учетной записи к существующему пользователю или группе Windows NT 4.0/2000 в окне Authentication With Windows. Вы также можете предоста вить или запретить доступ к серверу этому пользователю или группе (рис. 10-8).

Если вы выбрали проверку подлинности средствами SQL Server, то в окне Authen tication With SQL Server вы должны создать новую регистрационную запись SQL Server 2000. Задайте имя и пароль нового пользователя. Чтобы запретить доступ, удалите учетную запись из списка Logins в SQL Server Enterprise Manager (или из таблицы sysxlogins БД master). Создание регистрационной записи показано на рис. 10-9.

Создание и управление учетными записями Занятие Fii-TM Indeing Wizard Data TianiiDrmation SCIVKBI Management ' up Wizard Copy DaUbaseWfcisid Create ulMt Wizard Crews Jab Wcard Рис. 10-6. Запуск мастера Create Login Wizard из диалогового окна Select Wizard Select Authentication Mode hv Т hit Login Select ont d the (olrjwng aLrthailication modes Рис. 10-7. Выбор режима проверки подлинности для создаваемой учетной записи Authentication with Window Windows Authentication is deteminM bjJ the Windows Acuju.il ID Рис. 10-8. Предоставление/запрет доступа к серверу для новой учетной записи Управление доступом к SQL Server 2000 Глава Authentication with SQL SWVBI Erte !tie SOL Sever login ID and password Ihel is used W eccett die SQL Server.

Рис. 10-9. Ввод имени регистрационной записи SQL Server После того как вы определили тип учетной записи, сопоставили ее с существую щей регистрационной записью или создали новую, в окне Grant Access To Security Roles выберите для нее роль сервера. Если пользователь не будет обладать правами администратора на уровне сервера, не выбирайте никакую из ролей (рис, 10-10).

Grant ACCBII to Securrt Hotel Seleel the мси*у ic4cs 1я It-it lojri account, if ay Рис. 10-10. Выбор роли сервера для создаваемой учетной записи В окне Grant Access To Databases выберите роль БД (рис. 10-11). Помните, что боль шинство ролей сервера (за исключением роли sysadmin) не дают прав доступа к БД.

Все установленные вами параметры для новой учетной записи до ее создания вы можете посмотреть в окне Completing The Create Login Wizard. Чтобы изменить ка кой-нибудь параметр, щелкните кнопку Back;

чтобы создать учетную запись, щелк ните Finish (рис. 10-12).

Создание и управление учетными записями Занятие Scant Лесе ID Database!

Select (tie databases to which the Рис. 10-11. Предоставление доступа к базам данных Completing the Create Login wizard You have completed the sleps lequifed to ciMte a logr The cuily options JKIU have 3 anted ae sbn below.

Рис. 10-12. Завершение процесса создания учетной записи Упражнение 2. Создание учетной записи с помощью мастера Create Login Wizard В этом упражнении вы используете мастер Create Login Wizard для создания учетной записи.

*Х Чтобы создать учетную запись при помощи мастера Create Login Wizard 1. Убедитесь, что вы зарегистрировались на контроллере домена SelfPacedSQL. M SFT под учетной записью Administrator.

2. Раскройте меню Start\Programs\Microsoft SQL Server и выберите Enterprise Manager.

В окне SQL Server Enterprise Manager будут показаны все деревья Microsoft SQL Server и Event Viewer (Local).

3. В дереве консоли раскройте Microsoft SQL Servers, затем Ч Microsoft SQL Group и щелкните экземпляр сервера по умолчанию.

4. В меню Tools выберите Wizards.

Откроется окно Select Wizard.

Управление доступом к SQL Server 29Q Глава 5. Раскройте контейнер Database и дважды щелкните Create Login Wizard.

Откроется окно Welcome To The Create Login Wizard.

6. Щелкните Next.

Откроется окно Select Authentication Mode For This Login.

7. Установите переключатель SQL Server Login Information That Was Assigned To Me By The System Administrator (SQL Server Authentication) и щелкните Next. Откроет ся окно Authentication With SQL Server.

8. В поле Login ID введите Joe.

9. В полях Password и Confirm Password введите password и щелкните Next.

Откроется окно Grant Access To Security Roles.

10. Щелкните Next. He выбирайте роли, относящиеся к системе безопасности.

Откроется окно Grant Access To Databases.

11. Пометьте флажок SSEMDB, чтобы разрешить доступ только к этой БД, и шелкни те Next.

Откроется окно Completing The Create Login Wizard. Просмотрите параметры учет ной записи, которые вы определили.

12. Щелкните Finish.

После создания учетной записи появится окно системного сообщения Wizard Complete.

13. Щелкните OK, чтобы закрыть окно Wizard Complete.

14. В дереве консоли раскройте контейнер Security и щелкните Logins.

В области просмотра параметров учетная запись Joe будет указана как стандартная.

15. В меню Tools выберите SQL Query Analyzer.

Вы подключены к SQL Server с использованием средств аутентификации Windows.

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

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

37. Пометьте флажок SQL Server Authentication.

18. В поле Login name введите Joe.

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

Вы подключились к экземпляру SQL Server по умолчанию, используя учетную за пись Joe. Обратите внимание, что в заголовке диалогового окна указано, что вы подключены как Joe.

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

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

21. В панели запросов введите SELECT * FROM Customer.

22. Щелкните кнопку Execute Query. Обратите внимание, что, хотя пользователь Joe и имеет доступ к БД, он не имеет права выполнять оператор SELECT в таблице Customer.

23. Закройте SQL Query Analyzer, не сохраняя изменений.

24. Не закрывайте SQL Server Enterprise Manager.

Создание учетной записи с использованием SQL Server Enterprise Manager Чтобы создать учетную запись непосредственно при помощи SQL Server Enterprise Manager, щелкните правой кнопкой объект Logins в контейнере Security и выберите New Login. На вкладках General, Server Roles и Database Access диалогового окна SQL Создание и управление учетными записями Занятие Server Login Properties Ч New Login вы можете указать те же свойства, что и в мастере Create Login Wizard (режим проверки подлинности, доступ к серверу, доступ к БД).

Однако в них содержится и дополнительная информация. Если вы щелкнете кнопку рядом с полем Name на вкладке General, откроется дополнительное окно SQL Server Login Properties Ч New Login, где вы сможете выбрать домен Windows в раскрываю щемся списке и просмотреть список всех входящих в него пользователей и групп (рис.

10-13).

Рис. 10-13. Список учетных записей пользователей, отображаемый при создании новой учетной записи На вкладке General вы также можете выбрать БД и язык, которые будут использо ваться по умолчанию при подключении данного пользователя. Если не определено иное, это будет БД master и язык, используемый данным экземпляром SQL Server 2000.

Примечание Вы можете запретить доступ к SQL Server пользователю или группе Win dows NT 4.0/2000. В этом случае пользователь не сможет подключиться к SQL Server (даже если он состоит в группе, имеющей другую учетную запись).

На вкладке Server Roles вы сможете выбрать роль сервера для новой записи. Для удобства описание каждой роли сервера представлено в группе Description (рис. 10-14).

Если вы выберете роль сервера и щелкнете Properties, на вкладке General диалого вого окна Server Role Properties Ч Sysadmin вы сможете просмотреть список всех уча стников данной роли, добавить или удалить учетные записи из списка (рис, 10-15), Если вы выберете роль сервера System Administrators, то увидите, что ее участни ками являются члены группы Administrator и учетная запись SQL Server sa. На вклад ке Permissions отображаются разрешения роли сервера sysadmin.

На вкладке Database Access диалогового окна SQL Server Login Properties Ч New Login вы можете определить права доступа к БД и роль БД для учетной записи (рис. 10-17).

Обратите внимание: новая учетная запись стала членом роли public всех БД. Вы не можете удалить учетную запись из состава этой роли.

298 Управление доступом к SQL Server 2000 Глава Рис. 10-14. Выбор роли сервера для создаваемой учетной записи Рис. 10-15. Просмотр учетных записей членов роли I udd 4dd member ID IdJ membei la 'Хdd membei to udj meirto lo \dd membsr to Idd тпетЬв to tHupidmri ^dd ntwubv ID to/lrom db..Kcлd(4n Idd/dl ta/fi от *..dalлMdл 00 laS,-T db iW u/fiondb ddbdmr to/from db_dinлiilлe4dB Рис. 10-16. Просмотр разрешений роли сервера Создание и управление учетными записями Занятие Рис. 10-17. Предоставление доступа к БД Упражнение 3. Создание учетной записи с помощью SQL Server Enterprise Manager В этом упражнении вы используете SQL Server Enterprise Manager для сочда ния учетной записи.

> Чтобы создать учетную запись при помощи SQL Server Enterprise Manager 1. Откройте Windows Explorer.

2. Откройте файл Add_AD_Usersl.vbs из папки C:\SelfPacedSQL\CH_10.

В окне Windows Script Host выдается сообщение что вы добавили 1 пользователя в группу объектов Users. Сценарий Windows Script Host добавляет пользователя Bill с паролем Bill в группу объектов Users контроллера домена SelfPacedSQL (об ратите внимание: этот сценарий создает нового пользователя в текущем домене), 3. Щелкните ОК, чтобы закрыть окно Windows Script Host.

4. Разверните окно SQL Server Enterprise Manager.

5. В дереве консоли SQL Server Enterprise Manager раскройте контейнер Security и щелкните контейнер экземпляра сервера по умолчанию.

6. Щелкните правой кнопкой Logins и выберите New Login.

Откроется окно SQL Server Login Properties Ч New Login.

7. На вкладке General щелкните кнопку справа от поля Name.

8. В списке Names для домена SelfPacedSQL выберите Bill.

9. Щелкните Add, затем Ч ОК. Обратите внимание, что в поле Name теперь указа но Bill.

10. В раскрывающемся списке Database выберите БД SSEMDB.

11. Перейдите на вкладку Server Roles.

12. Пометьте флажок Security Administrators.

13. Щелкните кнопку Properties. Откроется окно Server Role Properties Ч Securi tyadmin.

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

Просмотрите, какие команды может выполнять этот участник данной роли сервера.

Управление доступом к SOL Server 2000 Глава 15. Щелкните Cancel и перейдите на вкладку Database Access.

16. Пометьте флажок рядом с именем БД SSEMDB.

17. В списке Database Roles For 'SSEMDB' пометьте флажок рядом с названием роли Db_owner и щелкните ОК.

Обратите внимание, что пользователь с учетной записью SelfPacedSQL\Bill указан в списке Logins как пользователь Windows.

18. Разверните окно Windows Explorer.

19. Откройте файл Rights.cmd из папки C:\SelfPacedSQL\CH_10.

При выполнении пакета Rights.cmd, который предоставит всем пользователям Windows 2000 право подключения к локальному SQL Server, в течение нескольких секунд на экране появляется окно утилиты командной строки.

20. Закройте Windows Explorer и SQL Server Enterprise Manager и завершите пользова тельский сеанс в Windows 21. Зарегистрируйтесь на контроллере домена SelfPacedSQL под именем Bill, указав пароль password.

22. Раскройте меню Start\Programs\Microsoft SQL Server и выберите Query Analyzer.

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

23. Установите переключатель Windows Authentication, чтобы подключиться к домену SelfPacedSQL с использованием средств аутентификации Windows.

24. Щелкните ОК.

Запустится SQL Query Analyzer. Обратите внимание: в заголовке диалогового окна указано, что вы подключены как SelfPacedSQL\Bilf, и текущей БД является SSEMDB.

25. В панели запросов введите SELECT * FROM SSEMDB.dbo.Customer.

26. Щелкните кнопку Execute Query.

Обратите внимание, что Bill имеет право выполнить этот запрос, потому что явля ется участником группы владельцев БД SSEMDB.

27. Закройте SQL Query Analyzer, HI;

сохраняй изменений.

28. Раскройте меню Start\Programs\Microsoft SQL Server и выберите Enterprise Manager.

В окне SQL Server Enterprise Manager будут показаны все серверы Microsoft SQL Server. Event Viewer при этом не отображается. У пользователя Bill свои параметры настройки, поэтому он может сам определять вид консоли SQL Server Enterprise Manager.

29. В дереве консоли последовательно раскройте контейнеры Microsoft SQL Servers, Microsoft SQL Group, экземпляра сервера по умолчанию и Security.

30. Щелкните правой кнопкой Logins и выберите New Login.

Откроется окно SQL Server Login Properties Ч New Login.

31. На вкладке General в поле Name введите Ana, 32. Установите переключатель SQL Server Authentication.

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

34. В диалоговом окне Confirm Password еще раз введите password и щелкните ОК.

В области отображения свойств выбранных объектов Ana будет обозначена как стандартная учетная запись, 35. На вкладке Security щелкните правой кнопкой Linked Servers.

Обратите внимание, что Bill не имеет права создавать связанные серверы, так как не является участником роли сервера setupadmin, но он может создавать учетные записи, потому что является участником роли сервера securityadmin.

3( Создание и управление учетными записями Занятие 36. Закройте SQL Server Enterprise Manager и завершите пользовательский сеанс Windows 2000.

37. Зарегистрируйтесь в Windows 2000, используя учетную запись Administrator и пароль password.

Создание пользовательской роли БД средствами SQL Server Enterprise Manager Чтобы создать пользовательскую роль с помощью SQL Server Enterprise Manager, рас кройте пункт Databases и выберите ту БД, для которой хотите создать роль. Правой кнопкой щелкните Roles и выберите New Database Role. В диалоговом окне Database Role Properties Ч New Database Role щелкните кнопку Add, чтобы просмотреть спи сок пользователей, которых вы можете добавить к этой роли (рис. 10-18).

Рис. 10-18. Создание пользовательской роли БД Чтобы создать новую пользовательскую роль, просто введите ее имя в поле Name.

Вы можете добавить к ней пользователей сейчас или позже, щелкнув кнопку Add. Вы также можете выбрать стандартную роль или роль приложения (подробнее Ч в гла ве 11). Заметьте: кнопка Permissions сейчас недоступна, т. к. назначать разрешения еще не созданной пользовательской роли нельзя. Подробнее о назначении разреше ний пользовательской роли Ч в главе 11.

Предоставление доступа средствами операторов Transact-SQL Вы можете предоставлять доступ к SQL Server 2000 и базам данных, используя сис темные хранимые процедуры Transact-SQL. Их синтаксис относительно прост, кроме того, вы можете создавать несколько учетных записей в одном сценарии. Также в од ном сценарии вы можете добавлять пользователей к роли сервера и к роли БД, созда вать роли БД, определенные пользователем, и добавлять к ним участников.

Учетные записи Windows С помощью системных хранимых процедур, перечисленных в табл. 10-5, вы можете предоставлять или запрещать доступ пользователям и группам Windows. Только участ ники ролей сервера sysadmin и securityadmin могут выполнять эти хранимые процедуры.

Управление доступом к SQL Server 2000 Глаза Табл. 10-5. Системные хранимые процедуры для администрирования учетных записей пользователей и трупп Системная хранимая процедура Описание Sp_grantiogin 'учетная_запись' Создает учетную запись для пользователя или группы Windows NT 4.0/ Sp_revokelogin 'учетная_запись' Удаляет учетную запись пользователя или группы Wmdows NT 4.0/2000 с SQL Server. Однако это не может полностью запретить доступ к SQL Server.

Например, если удаленный пользователь Ч член группы Windows NT 4.0/2000, имеющей доступ к SQL Server, то он также может подключаться к SQL Server Sp_denylogin <учетная_запись Запрещает пользователям и членам групп Windows NT 4.0/2000 подключаться к SQL Server. Пользователь или гр)тша, которой запретили вход, не может подключить ся к SQL Server с помощью Другой учетной записи, связанной с пользователем или группой Windows Изменяет БД, установленную по умолчанию для данной Sp_defaultdb 'учетная^запись' учетной записи 'база_данных' Изменяет язык, установленный по умолчанию для Sp_defaultlanguage ' унетная_запись', 'язык' данной учетной записи В следующем примере пользователю Bill домена SelfPacedSQL предоставляется доступ к SQL Server 2000;

Sp_graritlogin 'SelfPacedSQL\Bill' Учетные записи SQL Server В табл. 10-6 перечислены системные хранимые процедуры, которые используются для предоставления и запрешения доступа и для изменения прав доступа учетной записи, связанной с регистрационной записью SQL Server 2000. Только участники ролей сер вера sysadmin и securityadmin могут выполнять эти хранимые процедуры.

Табл. 10-6. Системные хранимые процедуры для администрирования учетных записей зашиты Системная хранимая процедура Описание Sp_addlogin 'унетная_запись', Создает новую учетную запись SQL Server. Если не заданы пароль и БД, они определяются как NULL, ['пароль', 'база_данных', 'язык', 'sid', если не задана БД по умолчанию, ею становится master.

'опция_шифрования'] По умолчанию перед сохранением в таблице sysxlogins БД master пароль шифруется Sp_droplogin 'учетнаязапись' Удаляет учетную запись SQL Server Sp_password 'старый_пароль', Добавляет или изменяет пароль учетной записи 'новый_пароль' Учетная_запис Sp_defaultdb 'учетная^запись', Изменяет БД, установленную по умолчанию для данной учетной записи 'база_данных' Spdefaultlanguage Изменяет язык, установленный по умолчанию для 'учетная^запись', 'язык' данной учетной записи Занятие 3 Создание и управление учетными записями В следующем примере создается новая учетная запись Joe с паролем Joel23 и БД по умолчанию Northwind:

Sp_addlogin 'Joe', 'Joel23', 'Northwind' Роли сервера В табл. 10-7 перечислены системные хранимые процедуры, которые используются для добавления и удаления участника роли сервера. Только участники роли sysadmin мо гут добавлять учетные записи к любой роли. Участники какой-либо роли сервера могут добавлять участников к своей роли.

Гибл, 10-7. Системные хранимые процедуры для добавления и удаления учетных записей роли сервера Системная хранимая процедура Описание Sp_ addsrvrolemember Добавляет учетную запись как участника роли сервера 'учетная_записъ', 'роль' Sp_dropsrvrolemember Удаляет учетную запись как участника роли сервера * учетная_запись', 'роль' В следующем примере участник Joe добавляется к роли сервера Security Admi nistrator:

Sp_addsrvrolemember 'Joe', 'securityadmin' Доступ к базе данных В табл. 10-8 перечислены системные хранимые процедуры, которые используются для добавления или удаления учетной записи или пользователя или группы Windows как зарегистрированного пользователя к текущей БД. Вы можете предоставить дос туп группе Windows NT 4.0/2000, не создавая явно учетную запись в таблице sysxlogins (в отличие от SQL Server Enterprise Manager). Только участники роли сервера sysadmin и постоянных ролей БД db_accessadmin и db_owner могут использовать эти хранимые процедуры.

Табл. 10-8. Системные хранимые процедуры для добавления и удаления учетных записей, пользователей или групп зарегистрированных пользователей Системная хранимая процедура Описание Sp_grantdbaccess Добавляет учетную запись в качестве пользователя ' учетная_запись', 'имя_в_БД' текущей БД. Хотя имя в БД может отличаться от имени учетной записи, это делать не рекомендуется (чтобы избежать путаницы) Sp_revokedbaccess 'имя' Удаляет учетную запись как пользователя БД В следующем примере учетной записи Joe предоставляется доступ к текущей БД с использованием имени пользователя Joe БД Northwind.

USE Northwind EXEC Sp_grantdbaccess 'Joe' Управление доступом к SQL Server 2000 Глава Роли базы данных В табл. 10-9 перечислены системные хранимые процедуры, которые используются для изменения владельца БД, добавления или удаления записи пользователя, создания или удаления роли БД, определенной пользователем.

Табл. 10-9. Системные хранимые процедуры для изменения владельца БД, добавления н удаления регистрационных записей и создания роли БД, определенной пользователем Системная хранимая процедура Описание Sp_changedbowner Изменяет владельца пользовательской БД. Только ' учетная^запись', участники роли сервера sysadmin или настоящие владельцы БД могут менять ее владельца remap_alias_Jlag Sp_addrolemember 'роль', Добавляет регистрационную запись к роли БД текущей базы. Вы можете добавить роль, определенную пользо 'регистрационная_записъ' вателем, к роли определенной пользователем или к постоянной роли БД. Только участники ролей sysadmin, db_pwner и db_security могут добавить участника к любой роли. Участники роли БД могут добавлять участников только к своей роли Sp_droprolemember 'роль', Уд;

шяет регистрационную запись из роли БД текущей базы. Только участники ролей sysadmin, db_owner 'регистрационная^запись' и db_security могут удалить участника из любой роли.

Участники роли БД могут удалять участников только из своей роли Sp_addrole 'роль', 'владелец Создает новую роль, определенную пользователем, в текущей БД. Хотя вы можете определить владельца, рекомендуется использовать значение по умолчанию (dbo). Роли, определенные пользователем, могут создавать участники роли сервера sysadmin и ролей БД dbjiecurityadmin и db_owner Sp^droprole 'роль' Удаляет роль, определенную пользователем, из текущей БД. Роли, определенные пользователем, могут удалять участники роли сервера sysadmin и ролей БД db_securityadmin и db_owner В следующем примере к роли dbsecurityadmm БД Northwind добавляется запись пользователя SelfPacedSQL\BJH.

Use Northwind EXEC Sp_addrolemernber 'db_securityadmin', 'SelfPacedSQL\BUl' Упражнение 4. Предоставление доступа к SQL Server и базам данных средствами Transact-SQL В этом упражнении вы с помощью системных хранимых процедур Transact SQL предоставите доступ пользователям и группам Windows 2000 к SQL Server 2000 и базам данных.

Занятие 3 Создание и управление учетными записями Чтобы предоставить доступ к SQL Server 2000 и базам данных при помощи > Transact-SQL 1. Откройте Windows Explorer.

2. Откройте файл Add_AD_Users2.vbs из папки C:\SenTacedSQL\CH10.

3. В окне Windows Script Host вы увидите сообщение, что процесс завершен.

Сценарий Windows Script Host добавляет новое организационное подразделение (Organization Unit, OU) в раздел Active Directory SQL Server. В созданное органи зационное подразделение будут включены учетные записи пользователей и три группы с разграничением прав доступа: SQL Server Users, SQL Server Administrators и Accounting Users. В группу SQL Server Users будут добавлены 15 новых пользова телей Windows 2000. В группу SQL Server Administrators будут добавлены только из этих 15 пользователей. В группу Accounting Users будут добавлены 3 из этих пользователей. Чтобы закрыть окно Windows Script Host, щелкните ОК.

4. Раскройте меню Start\Programs\Microsoft SQL Server и выберите Query Analyzer, Откроется окно Connect To SQL Server.

5. Установите переключатель Windows Authentication, чтобы подключиться к домену SelfPacedSQL с использованием средств аутентификации Windows.

6. Щелкните ОК.

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

Откроется окно Open Query File.

8. Откройте файл SQL_Access.sql из папки C:\SelfPacedSQL\CH_10.

Откроется сценарий Transact-SQL, который создаст новую БД Accounting и новую таблицу Customer. В эту таблицу с помощью оператора BULK INSERT из файла NewCustomerDatal.txt он занесет записи о 21 клиенте и предоставит группе пользо вателей Windows SQL Server Users право подключиться к SQL Server 2000. Затем он добавит группу пользователей Windows SQL Server Administrators к роли серве ра sysadimn, а группе Accounting Users предоставит доступ к БД Accounting. И на конец, он создаст определяемую пользователем роль Data Entry Managers и доба вит к ней пользователя Windows с именем Elba.

9. Чтобы выполнить сценарий SQL_Access.sql щелкните кнопку Execute Query.

Обратите внимание, что в области результатов отображается запись о том, что со здана БД Accounting и в нее добавлена 21 строка. Группе SQL Server Users предо ставлено право подключения к SQL Server 2000. Группа SQL Server Administrators добавлена к роли сервера sysadmin. Участники роли Accounting Users имею! дос туп к БД Accounting. Создана роль Data Entry Managers и к ней добавлен пользова тель Elba.

10. Закройте SQL Query Analyzer.

Просмотр информации о правах доступа Как администратору БД, вам понадобится просматривать пользователей и группы, определенные для вашего экземпляра SQL Server, и роли сервера, к которым они принадлежат. Вам также понадобится просматривать БД, к которым эти пользовате ли и группы имеют доступ, и роли БД, участниками которых они являются. Вам мо жет понадобиться расширить или ограничить их права доступа. Для просмотра ин формации о правах доступа к SQL Server 2000 и к БД вы можете использовать SQL Server Enterprise Manager и системные хранимые процедуры Transact-SQL.

Управление доступом к SQL Server 2000 Глава Просмотр информации о правах доступа с помощью SQL Server Enterprise Manager Если вы используете SQL Server Enterprise Manager, в дереве консоли раскройте кон тейнер Security. Здесь содержатся контейнеры Logins и Server Roles. В Logins включе ны все пользователи, которые имеют право подключаться к этому экземпляру SQL Server 2000 (рис. 10-19).

Рис. 10-19. Просмотр списка всех зарегистрированных пользователей SQL Server Обратите внимание, что перечислены учетные записи SQL Server 2000, а также пользователи и группы Windows 2000. Кроме того, все пользователи, входящие в груп пу SeIfPacedSQL\SQL Server Administrators, имеют только те права доступа, которые определены для данной группы. Эта группа имеет отдельную учетную запись, так как является участником роли сервера sysadmin. Вы можете удалить любую учетную за пись, выбрав ее и нажав клавишу Delete. Чтобы просмотреть или изменить парамет ры учетной записи, в том числе роли сервера и доступ к БД, дважды щелкните ее Ч откроется окно SQL Server Login Properties (рис. 10-20).

Рис. 10-20. Просмотр свойств учетной записи Примечание Системный администратор может изменить пароль любой учетной за писи SQL Server.

Создание и управление учетными записями Занятие 3 Роли сервера перечислены в группе объектов Server Roles (рис.10-21).

Рис. 10-21. Просмотр ролей сервера Дважды щелкните роль сервера, чтобы добавить или удалить ее члена (рис. 10-22).

SELFPACEDSQIASQLSeiverAdmnisKeto Рис. 10-22. Изменение списка участников роли сервера Чтобы просмотреть права доступа к БД, вы можете открыть либо список пользова телей, либо список БД. В дереве консоли раскройте нужную БД, затем раскройте Users, чтобы просмотреть список пользователей, которые имеют к ней доступ (рис. 10-23).

...

Х ХХ!

ш i Peri-itf Y4 yjif membership User feJPe^ F j Рис. 10-23. Просмотр списка пользователей, имеющих доступ к БД На рис. 10-23 показано, что члены группы Windows SelfPacedSQL\Accounting Users и пользователь Windows SelfPacedSQL\Elba имеют доступ к БД Accounting (кроме них Управление доступом к SQL Server 308 Глава доступ к этой БД имеют участники роли dbo). Пользователь SelfPacedSQL\Elba имеет только право доступа, определенное для группы, в которую он входит. Чтобы узнать, к какой группе принадлежит Elba, дважды щелкните SelfPacedSQL\Elba. Откроется окно Database User Properties Ч SelfPacedSQL\EIba (рис. 10-24), где вы увидите, что пользователь Elba имеет доступ в качестве участника определенной пользователем роли БД Data Entry Managers. Щелкните кнопку Permissions, чтобы посмотреть права пользователя. Чтобы посмотреть параметры роли БД, ее участников и права, щелк ните кнопку Properties. Подробнее о правах пользователей Ч в главе 11.

Рис. 10-24. Выбор роли для пользователя Чтобы еще раз проверить все роли БД, в дереве консоли раскройте Roles (рис. 10-25). Дважды щелкните роль, чтобы просмотреть, добавить или удалить учет ные записи ее членов (рис. 10-26).

Рис. 10-25. Просмотр ролей БД Создание и управление учетными записями Занятие Рис. 10-26. Просмотр, добавление и удаление членов роли Просмотр информации о правах доступа с помощью Transact-SQL Вы также можете просматривать информацию о правах доступа к SQL Server 2000, используя системные хранимые процедуры Transact-SQL. С помощью системных хра нимых процедур, перечисленных в табл. 10-10, вы можете узнать параметры учетных записей, ролей сервера и БД и доступа к БД. Выполнять системную хранимую проце дуру sp_helplogins могут только участники ролей сервера sysadmin и securityadmin;

все остальные процедуры из этого списка доступны также участникам роли public, Примечание Пользователь Windows может иметь доступ к SQL Server 2000 в качестве участника одной группы Windows, а к БД Ч в качестве участника другой группы Win dows.

Табл. 10-10. Системные хранимые процедуры, возвращающие информацию о правах доступа Системная или расширенная Описание хранимая процедура Sp Jielplogins [ учетная_запись'} Выводит информацию обо всех или об определенной учетной записи: к каким БД она имеет доступ и каким ролям принадлежит Выводит информацию обо всех или об Sp_helpsrvrolemember [ 'роль' ] определенной роли сервера и ее участниках Sp_helpuser [ 'регистрационнаязаписъ Выводит информацию обо всех или об определенном пользователе БД, включая список ролей, участником которых он является Выводит информацию обо всех ролях или о*:ю Sp^helprolemember [ 'роль' ] всех участниках определенной роли текущей БД Sp Jielpntgroup [ 'имя' ] Выводит информацию обо всех или об опреде ленной группе Windows NT 4.0/2000 текущей БД Управление доступом к SQL Server 2000 Глава Упражнение 5. Просмотр информации о правах доступа к SQL Server В этом упражнении вы используете SQL Server Enterprise Manager и-систем ные хранимые процедуры Transact-SQL для просмотра информации о правах доступа.

*Х Чтобы просмотреть информацию о правах доступа к SQL Server 1. Убедитесь, что вы зарегистрировались на контроллере домена SelfPacedSQL.MSFT под учетной записью Administrator.

2. Раскройте меню Start\Programs\Microsoft SQL Server и выберите Enterprise Manager.

3. В дереве консоли последовательно раскройте контейнеры Microsoft SQL Servers, Microsoft SQL Group, экземпляра сервера по умолчанию, Security и Logins.

В области отображения содержимого и свойств выбранных объектов вы увидите всех пользователей и группы Windows 2000 и учетные записи SQL Server 2000, ко торые могут подключаться к SQL Server 2000. Только члены групп SelfPacedSQL SQL Server Users и SQL Server Administrators могут устанавливать соединение с дан ным экземпляром SQL Server 2000.

4. В правой панели дважды щелкните SelfPacedSQL\SQL Server Users.

Откроется окно SQL Server Login Properties Ч SelfPacedSQL\SQL Server Users.

5. Перейдите на вкладку Server Roles.

Обратите внимание, что данная группа Windows не является членом ни одной роли сервера.

6. Перейдите на вкладку Database Access.

Обратите внимание, что данная группа Windows не имеет доступа ни к одной БД.

7. Щелкните Cancel.

8. Из меню Tools вызовите SQL Query Analyzer.

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

Откроется окно Open Query File.

10. Откройте файл Logins.sql из папки C:\SelfPacedSQL\CH_10.

Откроется сценарий Transact-SQL, содержащий системную хранимую процедуру sp_helplogins.

11. Чтобы выполнить сценарий Logins.sql щелкните кнопку Execute Query.

Обратите внимание, что в области результатов запроса отображаются две строки результата. В первом перечислены учетные записи пользователей, которые могут устанавливать соединение с SQL Server 2000. Во втором Ч БД, к которым эти пользователи имеют доступ, Обратите внимание, что для групп SelfPacedSQL\SQL Server Users и SelfPacedSQL\SQL Server не указано право доступа к БД.

12. Разверните окно SQL Server Enterprise Manager.

13. В области просмотра объектов и их свойств дважды щелкните SelfPacedSQL\SQL Server Administrators.

Откроется окно SQL Server Login Properties Ч SelfPacedSQL\SQL Server Administ rators. На вкладке General указано, что данная группа имеет доступ, определяемый для всей группы (она является участником роли сервера sysadmin).

14. Перейдите на вкладку Server Roles.

Обратите внимание, что данная группа Windows является участником роли серве ра System Administrators.

Занятие 3 Создание и управление учетными записями g-j -| 15. Перейдите на вкладку Database Access.

Обратите внимание, что в список прав данной группы Windows не включены пра ва доступа ни к одной БД. Эта информация не указана, потому что участники дан ной группы имеют доступ ко всем БД по определению.

16. Щелкните Cancel.

17. Разверните окно SQL Query Analyzer.

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

19. Откройте файл ServerRoleMembers.sql из папки C:\SelfPacedSQL\CH_10.

Откроется сценарий Transact-SQL, содержащий системную хранимую процедуру sp_helpsrvrolemember, которая определяет роль сервера sysadmin.

20. Чтобы выполнить сценарий ServerRoleMembers.sql щелкните кнопку Execute Que ry. Обратите внимание, что в области результата указаны три участника роли sysadmin: два участника по умолчанию и группа SelfPacedSQL\SQL Server Administ rators.

21. Разверните окно SQL Server Enterprise Manager.

22. В дереве консоли щелкните правой кнопкой Databases и выберите Refresh.

23. В дереве консоли раскройте Databases, затем Ч Accounting и щелкните Users.

В области, отображающей свойства и состав объектов, указано, что только одна группа SelfPacedSQL и один пользователь SelfPacedSQL имеют доступ к этой БД.

Обратите внимание, что ни пользователь, ни группа не имеют явно определенно го доступа к данному экземпляру SQL Server 2000. Чтобы подключиться к системе SQL Server 2000, пользователь или группа должны быть членами роли SQL Server Users. Хотя можно предоставить им право доступа, лучше сохранить эту структу ру. Подробнее об использовании групп учетных записей, групп доступа к данным и правах Ч в главе 11.

24. В области отображения свойств и состава объектов дважды щелкните SelfPaced SQL\Elba.

Откроется окно SQL Server Login Properties Ч SelfPacedSQL\Elba. Обратите вни мание, что пользователь Elba является участником ролей public и Data Entry Managers и что у него нет имени учетной записи, позволяющей подключиться к SQL Server, и для подключения к SQL Server он должен использовать учетную за пись группы.

25. Щелкните кнопку Permissions.

Обратите внимание, что для пользователя Elba не определено никаких прав. В гла ве 11 вы установите соответствующие права для роли public и Data Entry Managers.

26. Щелкните Cancel.

27. Щелкните Cancel, чтобы закрыть окно Database User Properties Ч SelfPaced SQL\E1ba.

28. Разверните окно SQL Query Analyzer.

29. На панели инструментов щелкните кнопку Load SQL Script.

Откроется окно Open Query File.

30. Откройте файл Database Ace ess. sql из папки C:\SelfPacedSQL\CH_10.

Откроется сценарий Transact-SQL, который содержит 3 системные хранимые про цедуры, выполняющие запросы к БД Accounting. Системная хранимая процедура spjielpuser запрашивает информацию о группах SelfPacedSQL\Accounting Users, sp_helprolemember Ч об определенной пользователем роли Data Entry Managers, sp Jielpntgroup Ч обо всех группах Windows, имеющих доступ к текущей БД.

Управление доступом к SOL Server 2000 Глава 31. Чтобы выполнить сценарий Database Access, sql, щелкните кнопку Execute Query.

Обратите внимание, что в области результата запроса указано, что группа Self PacedSQL\Accounting Users является участником роли public этой БД. Кроме того, SelfPacedSQL\EIba является участником группы Data Entry Managers, а группа SelfPacedSQL\Accounting является единственной группой, имеющей доступ к БД.

Резюме Вы можете предоставить пользователям доступ SQL Server 2000, используя SQL Server Enterprise Manager. При этом вы также можете определить их права на выполнение различных задач на уровне сервера, предоставить им доступ к БД и сделать их участ никами какой-либо роли БД. Однако за один раз вы можете определить права только одного пользователя. С помощью хранимых процедур вы можете предоставить дос туп нескольким пользователям, при этом потребуется только один сценарий Transact SQL. Вы можете просмотреть права доступа к SQL Server 2000 и БД с помощью SQL Server Enterprise Manager и Transact-SQL.

Закрепление материала _? J Приведенные ниже вопросы помогут вам лучше усвоить основные темы дан ной главы. Если вы не сумеете ответить на вопрос, повторите материал соот ветствующего занятия. Правильные ответы приведены в приложении Воп росы и ответы в конце книги.

1. Вы хотите надежно защитить информацию БД SQL Server 2000. Все пользователи, которые имеют к ним доступ, являются пользователями Windows 2000. Нужно ли разрешить проверку подлинности средствами SQL Server? Почему?

2. Сотрудница службы поддержки сообщила, что она может зарегистрироваться в SQL Server 2000 и имеет доступ к БД Northwind и Pubs, однако не видит БД Northwind Reports. Возможно ли это, если да, почему?

3. Вы устанавливаете новый экземпляр SQL Server 2000. Вам нужно предоставить доступ к различным БД сотням пользователей. Что вы будете использовать для создания учетных записей и записей пользователей Ч SQL Server Enterprise Mana ger или системные хранимые процедуры Transact-SQL? Почему?

ГЛАВА Управление разрешениями SQL Server Занятие 1. Предоставление разрешений уровня базы данных Занятие 2. Использование ролей приложения Занятие 3. Разработка стратегии предоставления доступа и назначения разрешений В этой главе После того как вы предоставили доступ к SQL Server 2000 и его БД пользователям и группам Windows 2000, а также, при необходимости, пользователям SQL Server 2000, вы должны назначить им соответствующие разрешения. В этой главе вы узнаете, как сконфигурировать разрешения доступа к определенным БД для пользователей, групп Windows и пользовательских ролей БД. Также вы узнаете, как использовать роли при ложения. В заключение, вы научитесь разрабатывать стратегии для создания сцена риев, реализующих средства защиты. При создании этих сценариев вы будете исполь зовать все перечисленные выше средства.

Прежде всего Для изучения материалов этой главы вам потребуются:

Х компьютер, соответствующий минимальным аппаратным требованиям, перечис ленным в главе 2;

Х ОС Microsoft Windows 2000 Server, установленная на разделе диска с файловой системой NTFS;

Х компьютер с сетевым именем SelfPacedCPU, сконфигурированный как контрол лер домена SelfPacedSQL.MSFT;

Х один установленный по умолчанию и по крайней мере один именованный экзем пляр SQL Server 2000;

Х БД SSEMDB, созданная при помощи сценария CreateDB.sql;

Х результаты упражнений главы 10.

Управление разрешениями ;

5QL Server Глава Занятие 1. Предоставление разрешений уровня базы данных Независимо от способа проверки подлинности, с помощью которого пользователь получает доступ к SQL Server 2000, он должен иметь разрешения на выполнение оп ределенных действий в пользовательской БД. Из главы 10 вы узнали о том, как пре доставить разрешения пользователю с помощью ролей сервера и фиксированных ро лей БД, На этом занятии вы узнаете о различии между использованием фиксирован ных ролей и предоставлением разрешений на выполнение отдельных операторов и работу с объектами для пользователей, групп и пользовательских ролей БД. Также вы узнаете, как предоставлять разрешения на выполнение операторов и работу с объек тами, используя SQL Server Enterprise Manager, операторы Transact-SQL и системные хранимые процедуры.

Изучив материал этого занятия, вы сможете:

описать типы разрешений уровня БД;

Х/ ^ предоставлять, блокировать и отзывать разрешения на выполнение операторов;

^ предоставлять, блокировать и отзывать разрешения на работу с объектами;

^ определять и просматривать действующие разрешения.

Продолжительность занятия - около 45 минут Способы получения разрешений Пользователям БД необходимы разрешения на работу с данными, выполнение хра нимых процедур, создание объектов БД и выполнение административных задач.

Пользователи получают полные или ограниченные разрешения доступа к БД следую щими способами:

Х членство в серверной роли sysadmin;

Х право собственности на БД;

Х право собственности на объект БД, полученное в результате членства в роли БД или группе Windows NT 4.0/2000;

Х членство в фиксированной роли БД;

Х получение отдельных разрешений доступа в результате членства в роли БД или группе Windows NT 4.0/2000;

Х наследование разрешений роли public пользователем, который обладает доступом к БД;

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

Наследуемые разрешения Владелец БД, а также члены серверной роли sysadmin и фиксированной роди db_owner наследуют все разрешения, необходимые для выполнения любых действий в БД. К тому же пользователи, которым назначена постоянная роль БД db_owner, наследуют достаточно широкие разрешения доступа для выполнения различных действий в этой БД. Например, члены фиксированной роли БД db_securityadmin могут выполнять опе раторы GRANT, REVOKE или DENY над всеми объектами БД, но не могут выполнять Занятие 1 Предоставление разрешений уровня базы данных операторы CREATE или BACKUP. И наоборот, члены фиксированной роли БД db_ddladmin могут выполнять операторы CREATE или BACKUP, но не GRANT, REVOKE или DENY. Более того, члены роли db_datareader могут считывать данные из любой таблицы или представления в БД, а члены роли db_datawriter Ч записывать и изменять данные во всех таблицах и представлениях в БД.

Владелец объекта (пользователю нужно предоставить разрешение на создание объекта) наследует все связанные с объектом разрешения доступа, включая право предоставлять разрешения на работу с данным объектом. Члены роли сервера sysad min, а также члены фиксированных ролей БД db_ddladmin и db_secuntyadmin могут менять владельца любого объекта БД (и отзывать все назначенные объекту разре шения).

Действие разрешений и результирующие конфликты Группам Windows, пользовательским ролям и отдельным пользователям можно на значать и блокировать наборы разрешений, связанные с ролями сервера и фиксиро ванными ролями БД, а также конкретные разрешения на выполнение операторе и работу с объектами. Разрешения, предоставленные группе или роли, наследуются все ми пользователями этой группы или роли. Действующие разрешения доступа пользо вателя, входящего в состав нескольких групп или ролей Ч это совокупность разреше ний соответствующих ролей и групп.

Можно также отзывать и блокировать разрешения отдельных ролей, групп или пользователей. Как и в Windows 2000, блокировка разрешения имеет более высокий приоритет по отношению ко всем другим разрешениям. Например, если вы предос тавляете пользователю разрешение на просмотр таблицы, но он входит в состав груп пы или роли, для которых данное разрешение заблокировано, пользователь не смо жет просмотреть таблицу.

Примечание Если соединение устанавливается с использованием учетной записи поль зователя SQL Server 2000, блокировка и предоставление разрешений пользователям и группам Windows не работают. В этом случае SQL Server 2000 не определяет, какой именно пользователь Windows работает с сервером. Используется только конкретная учетная запись SQL Server 2000 и назначенные ей разрешения.

Упражнение 1. Создание и выявление конфликтов с разрешениями доступа В этом упражнении вы создадите конфликт разрешений доступа и затем уст раните его.

>Х Чтобы создать и выявить конфликт разрешений доступа 1. Убедитесь, что вы зарегистрировались на контроллере домена SelfPacedSQL.MSFT под учетной записью Administrator.

2. Раскройте меню Start\Programs\Microsoft SQL Server и выберите Enterprise Manager.

Откроется окно SQL Server Enterprise Manager, в левой области которого отобра жаются деревья консоли Microsoft SQL Servers и Event Viewer (Local).

3. В дереве консоли последовательно раскройте контейнеры Microsoft SQL Servers, SQL Server Group, экземпляра SQL Server по умолчанию, Databases, SSEMDB и Users.

316 Управление разрешениями SQL Server Глава 4. В правой панели дважды щелкните Joe.

Откроется окно Database User Properties Ч Joe.

5. В группе Database Role Membership пометьте флажок Db_owner и щелкните Apply.

6. Раскройте меню Start\Programs\Microsoft SQL Server и выберите Query Analyzer.

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

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

8. В поле Login Name введите Joe.

9. В поле Password введите password и щелкните OK Обратите внимание, что вы подключились к БД master под именем пользователя Joe.

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

11. В панели запросов введите SELECT * FROM Customer.

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

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

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

14. В группе Database Role Membership пометьте флажок Db_denydatareader и щелк ните Apply.

Не закрывайте окно Database User Properties Ч Joe. Оно понадобится вам в следу ющем упражнении.

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

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

Заметьте: у пользователя Joe теперь нет разрешений на просмотр записей таблицы Customer. Возник конфликт разрешений Ч блокировка разрешения (DENY) при останавливает действие всех предоставленных разрешений доступа.

17. Не закрывайте окна SQL Server Enterprise Manager и SQL Query Analyzer.

Управление разрешениями на выполнение операторов Разрешения на выполнение операторов (statement permissions) Ч это разрешения на выполнение отдельных операторов Transact-SQL, используемых для создания БД и их объектов, например таблиц, представлений и хранимых процедур. В табл. 11- перечислены разрешения доступа, связанные с этими операторами. Разрешения на вы полнение каждого из этих операторов можно предоставить, отозвать или блокировать.

Табл. 11-1. Разрешения на выполнение операторов Оператор Transact-SQL Разрешения на выполнение оператора Transact-SQL CREATE DATABASE Данные разрешения наследуются членами ролей сервера sysadmin и dbcreator. Хотя участники ролей sysadmin и securityadmin могут предоставлять разрешения на выполнение этого опера тора пользователям, обладающим расширенными разрешениями в рамках защиты данных, но в основном, соответствующие разрешения все эти пользователи получают через роль сервера dbcreator, если системный администратор делегирует разреше ния доступа. Эти разрешения доступа существуют только в БД master Предоставление разрешений уровня базы данных Занятие Табл. 11-1. (окончание) Оператор Transact-SQL Разрешения на выполнение оператора Transact-SQL BACKUP DATABASE Данные разрешения наследуются членами роли сервера sysadmin, а также фиксированных ролей БД db_owner BACKUP LOG и db_backupoperator. Хотя вы можете предоставлять разрешения на выполнение этих операторов отдельным пользователям, но главным образом, вы будете использовать для этого постоянную роль БД db_backupoperator CREATE TABLE Эти разрешения наследуются членами роли сервера sy&admin CREATE VIEW и фиксированных ролей БД db_owner и db_ddladmin.

CREATE PROCEDURE В процессе разработки БД разрешения на создание данных CREATE DEFAULT объектов иногда предоставляются непосредственно програм мистам (либо группе программистов или соответствующей CREATE RULE CREATE FUNCTION роли). По умолчанию объекты принадлежат их создателю (хотя объекты, созданные пользователями Ч участниками роли сервера sysadmin, принадлежат dbo). Пользователи, входящие в состав постоянных ролей БД db_owner и db_ddladmin, могут указывать роль dbo в качестве владельца создаваемых ими объектов. К тому же члены роли сервера sysadmin или постоян ной роли БД db_ddladmin могут указать любого пользователя как владельца созданного ими объекта. Однако пользователи, не являющиеся участниками ни одной из этих ролей, не могут указывать другого пользователя или роль dbo в качестве владельца созданного ими объекта Данные разрешения доступа наследуются владельцем таблицы, CREATE TRIGGER в которой определен триггер, а также членами роли сервера sysadmin и фиксированных ролей БД db_owner и db ddlad-min, Они не могут предоставлять разрешения доступа на запуск этого оператора другим учетным записям Проблемы с созданием объектов, вызываемые цепочкой владельцев Когда пользователь создает объект БД, например таблицу или представление, он ста новится владельцем этого объекта, пока другой пользователь, группа или роль не бу дут определены в качестве владельца. Доступ пользователя к своим объектам может быть полезен в процессе разработки БД, однако в процессе реальной эксплуатации БД могут возникнуть проблемы, и вам следует опасаться этого по нескольким причинам (об этом Ч далее). Полезно предоставить роли dbo разрешения владельца над всеми объектами производственной БД.

Когда пользователь обращается к какому-либо объекту в сценарии, в имени этого объекта может быть указано или не указано имя владельца. Если имя владельца объек та не указано, SQL Server 2000 ищет в БД объект, принадлежащий пользователю, со здавшему сценарий, или принадлежащий члену роли dbo, Если объект не принадле жит ни одному из этих двух пользователей, SQL Server 2000 возвращает сообщение об ошибке.

Следующий запрос выводит все данные таблицы Customer при условии, что таб лица принадлежит либо роли dbo, либо пользователю, выполняющему сценарий:

SELECT * FROM Customer Управление разрешениями SQL. Server Глава Следующий запрос выводит данные таблицы Customer, принадлежащей Joe. Если в БД есть другая таблица Customer, принадлежащая роли dbo, данные не выводятся.

Если в БД имеется несколько таблиц с одинаковыми именами, то при указании име ни, отличного от dbo, может возникнуть ошибка.

SELECT * FROM Joe.Customer Представления и хранимые процедуры могут быть созданы в таблицах. Когда пользователь пытается выполнить запрос на выборку нужной информации через представление или процедуру, SQ>L Server 2000 должен проверить, имеет ли пользова тель разрешение просматривать данные. Если представление или процедура принад лежит одному пользователю, а базовая таблица Ч другому, тогда SQL Server 2000 дол жен проверить разрешения на каждый объект в цепочке. Поскольку цепочка владель цев удлиняется, это может повлиять на производительность системы. Однако более важным является тот факт, что проследить и отладить возможные конфликты разре шений доступа администратору будет совсем не просто.

Когда члены ролей БД db_owner и db_ddladmin создают объекты БД, лучше ука зать роль dbo в качестве владельца создаваемых объектов. Если владелец не будет явно указан, право собственности на этот объект по умолчанию будет предоставлено пользователю Windows или учетной записи SQL Server 2000, под именем которой со здавался объект.

В следующем примере показано создание таблицы с предоставлением права соб ственности на эту таблицу роли dbo. Только члены роли сервера sysadmin и ролей БД db_owner или db_ddladmin имеют разрешение выполнять этот оператор:

CREATE TABLE Northwind.dbo.CustomerTable ( CustID nchar (5), CustomerName nvarchar (40) ) Смена владельца объекта Если владельцем некоторого объекта БД является не dbo, вам может понадобиться изменить права собственности на этот объект. Члены ролей БД db_owner, db_ddladmin или db_securityadmin, либо роли сервера sysadmin могут менять права собственности на любой объект БД при помощи системной хранимой процедуры sp_changeobject owner.

В следующем примере меняется владелец таблицы Customer. Вместо пользователя SelfPacedSQL\Bill владельцем таблицы становится роль dbo: :

sp_changeob]ectowner 'SelfPacedSOL\Bill.Customer*, 'dbo Примечание Смена владельца объекта удаляет все существующие разрешения на этот объект. Если нужно сохранить разрешения доступа, составьте сценарий, включив в него существующие разрешения доступа перед запуском системной хранимой процедуры sp_changeobjectowner. Тогда вы сможете впоследствии установить соответствующие раз решения доступа пугем изменения владельца объекта выполнив созданный и сохранен ный вами сценарий.

Предоставление, блокирование и отзыв разрешений на выполнение операторов средствами SQL Server Enterprise Manager SQL Server Enterprise Manager предоставляет простой графический интерфейс для просмотра существующих разрешений доступа на выполнение операторов, а также для Занятие 1 Предоставление разрешений уровня базы данных предоставления, блокирования и отзыва этих разрешений. Чтобы просмотреть в БД существующие разрешения на выполнение операторов, щелкните правой кнопкой БД и выберите Properties. На вкладке Permissions диалогового окна Properties вы можете выполнить все перечисленные операции над разрешениями доступа (рис. П-1).

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

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

320 Управление разрешениями SQL Server Глава В следующем примере пользователю Joe (имя учетной записи SQL Server), роли SalesManagers (определяемая пользователем роль БД) и группе SelfPacedSQL\SQLSer verAdmins (группа Windows) предоставляется разрешение на выполнение оператора CREATE TABLE:

GRANT CREATE TABLE TO Joe, SalesManagers, [SelfPacedSQL\SGLServerAdiTiins] Примечание При ссылке на локальную встроенную группу Windows, например BUIL TIN\Backup Operators, лучше указывать BUILTIN, а не имя домена или локального компьютера.

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

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

REVOKE ALL FROM Joe Просмотр разрешений на выполнение операторов средствами Transact-SQL Вы можете просмотреть существующие разрешения на выполнение операторов в БД, используя системную хранимую процедуру sphelprotect. Все пользователи БД имеют разрешения на выполнение этой процедуры.

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

's' EXEC sp.helprotect NULL, NULL, NULL, Упражнение 2. Предоставление и проверка разрешений на выполнение операторов В этом упражнении вы предоставите разрешения на выполнение операторов и затем проверите их.

** Чтобы предоставить и проверить разрешения на выполнение операторов 1. Переключитесь в SQL Query Analyzer.

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

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

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

4. Щелкните No.

Откроется окно Open Query File.

5. Откройте файл CreateTestTablel.sql из папки C:\SelfPacedSQL\CH_ll.

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

Предоставление разрешений уровня базы данных Занятие 6. В панели инструментов щелкните Execute Query, Обратите внимание, что таблица успешно создана и в нее добавлена одна запись.

Пользователь Joe может создавать таблицы, так как он относится к членам роли db_owner. Однако 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! не будет найден, если в качестве a'ia дельца объекта TestTable 1 неуказан пользователь с учетной записью sa. Причина в том, что SQL Server 2000 ищет этот объект только как объект, принадлежащий или пользователю sa, или роли dbo. А так как он принадлежит пользователю Joe, он не будет найден.

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

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

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

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

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

Однако заметьте, что данные были добавлены в объект Joe.TestTablel, а не в dbo.TestTablel.

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

20. В диалоговом окне Database User Properties Ч Joe снимите флажок рядом с Db_o\vner и щелкните ОК.

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

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

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

Управление разрешениями SQL Server Глава 23. Для пользователя Joe пометьте флажки в полях Create Table, Create View и Create SP и щелкните ОК.

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

25. Проверьте, что вы подключены к SQL Server под именем Joe.

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

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

27. Щелкните No.

Откроется окно Open Query File.

28. Откройте файл CreateTestTable2_Proc2View2.sql из папки C:\SelfPacedSQL\CH_ll.

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

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

Обратите внимание, что и таблица, и процедура, и представление успешно созда ны. Пользователь с именем Joe имеет явно определенные разрешения на создание таблиц, хранимых процедур и представлений. Он может выполнять запросы, ото бражающие содержимое таблицы и представления, а также выполнять хранимую процедуру, потому что он владелец этих объектов.

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

31. В дереве консоли, расположенном ниже объекта SSEMDB, щелкните Stored Proce dures.

32. Правой кнопкой щелкните Stored Procedures и выберите Refresh.

Обратите внимание, что в области отображения информации о файлах указано, что пользователь Joe является владельцем хранимой процедуры TestTable2_Pro cedure2.

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

34. Проверьте, что вы подключились к SQ LServer под именем Joe.

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

36. Выделите весь текст оператора CREATE TABLE (но не другие операторы в сцена рии) и в панели инструментов щелкните Execute Query.

Обратите внимание, что пользователь под именем Joe не может создавать таблицу, в качестве владельца которой указана роль dbo. разрешения на выполнение операто ра CREATE TABLE не позволяют этого делать (в отличие от членов постоянной роли БД db_owner).

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

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

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

39. Щелкните No.

Откроется окно Open Query File.

40. Откройте файл TestTable2_ChangeOwner.sql из папки C:\SelfPacedSQL\CH_l 1.

Занятие 1 Предоставление разрешений уровня базы данных Откроется сценарий Transact-SQL, который изменит разрешения владельца для TestTable2, TestTable2_Procedure2 и TestTable2View2, предоставив это разрешение роли dbo. Затем сценарий проверит выполненные изменения.

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

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

42. Завершите все пользовательские сессии в окне приложения SQL Query Analyzer, Не сохраняйте изменения.

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

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

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

45. В поле Login Name введите Joe.

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

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

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

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

Обратите внимание, что пользователь Joe не может просмотреть какие-либо запи си в таблице TestTable2. Теперь разрешение владельца таблицы принадлежит роли dbo. Пользователь Joe не имеет никаких разрешений на выполнение оператора SELECT для каких-либо объектов, владельцем которых он не является.

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

50. В панели запросов введите EXEC spjielprotect NULL, NULL, NULL, 's' и в панели инструментов щелкните Execute Query.

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

51. Закройте все активные соединения в окне SQL Query Analyzer, но пока не закры вайте само окно приложения SQL Query Analyzer.

Управление разрешениями доступа к объектам Разрешения доступа к объектам Ч это разрешения на выполнение определенных опе раций с таблицами, представлениями, функциями и хранимыми процедурами. В табл. 11-2 указаны различные виды разрешений доступа к объектам, связанными с объектами БД. Предоставление, блокировка или отзыв разрешений доступа для каж дого из этих операторов может выполняться членами роли сервера sysadmin и фикси рованных ролей БД db_owner и db_securityadmin (а также владельцами соответствую щего объекта БД).

Табл. 11-2. Разрешения доступа к объектам БД Разрешение Допустимые действия SELECT Просмотр данных в таблице, представлении или поле табл ицы или на определенные пользовательские функции. Наследуется членами роли сервера sysadmin и постоянных ролей БД db_owner и db_datareader, В этом разрешении отказано всем членам фиксированной роли db_denydatareader 12- Управление разрешениями SQL Server Глава Табл. 11-2. (окончание) Разрешение Допустимые действия INSERT Добавление новых данных в таблицу или представление.

Наследуется членами роли сервера sysadmin и фиксированных ролей БД db_owner и db_datawriter. В этих разрешениях отказано всем членам фиксированной роли db_denydatawriter UPDATE Обновление данных в таблице, поле или представлении.

Наследуются членами роли сервера sysadmin и фиксированных ролей БД db_owner и db_datawriter. В этом разрешении отказано всем членам фиксированной роли db_denydatawriter DELETE Удаление данных из таблицы или представления. Наследуются членами роли сервера sysadmin и фиксированных ролей БД db_owner и db_datawriter. В этом разрешении отказано всем членам фиксированной роли db_denydatawriter EXECUTE Выполнение хранимых процедур и пользовательских функций.

Наследуются членами роли сервера sysadmin и фиксированной роли БД db_owner REFERENCES Обращение к таблице с ограничением FOREIGN KEY при отсутствии разрешений SELECT на таблицу. Наследуются членами роли сервера sysadmin и постоянных ролей БД db_owner и db_datareader. В этом разрешении отказано всем членам в фиксированной роли db_denydatareader Обратите внимание, что вы можете использовать фиксированные роли БД db_data reader и db_denydatareader для предоставления или отмены разрешений на выполнение операторов SELECT и REFERENCES no отношению ко всем объектам в БД. Также вы можете использовать постоянные роли db_datawriter и db_denydatawriter для предо ставления или запрета на выполнение операторов INSERT, UPDATE и DELETE no отношению ко всем объектам БД. Для предоставления пользователю разрешений на выполнение оператора EXECUTE объект следует предоставлять это разрешение отдель но (пользователю, группе или роли), так как роль БД, не являющаяся постоянной (в отличие от постоянной роли владельца БД db_owner) не предоставляет такого разре шения. Кроме того, если вам нужно предоставить или отказать в разрешениях на объект, расположенный в некотором подмножестве объектов в БД, вы можете сде лать это в частном порядке, то есть предоставить или отказать в разрешениях доступа именно к этим объектам. Вы можете предоставлять разрешения доступа, запрещать доступ к этим объектам или отменять разрешения доступа по отношению к опреде ляемой пользователем роли БД, группе Windows, имени учетной записи пользователя SQL Server или пользователю Windows.

В заключение скажем, что пользователю или роли можно непосредственно запре тить просмотр или обновление таблицы, но при этом у них могут быть разрешения на работу с таблицей через представление или хранимую процедуру. Например, пред ставление может создаваться таким образом, что в него будут включены только от дельные поля или записи таблицы. Пользователю в дальнейшем будет разрешено об новлять данные в таком представлении (допустим, обновлять информацию об опре деленном служащем без просмотра информации обо всех служащих). Хранимая про цедура может быть создана и так, что при ее выполнении будут отображаться только имена всех служащих, без какой-либо дополнительной информации.

Предоставление разрешений уровня базы данных Занятие Использование SQL Server Enterprise Manager SQL Server Enterprise Manager предоставляет простой графический интерфейс для просмотра, предоставления, блокирования и отзыва разрешений доступа к объектам.

Чтобы просмотреть разрешения доступа к таблице, представлению или хранимой процедуре, щелкните нужный объект в правой панели правой кнопкой и выберите Properties. Щелкните Permissions Ч откроется окно Object Properties, где можно вы полнить все перечисленные действия (рис. 11-2).

Рис. 11-2. Просмотр и изменение разрешений доступа к объектам Как и в окне, где отображаются разрешения на выполнение операторов, здесь так же отображается список пользователей, которым разрешен доступ к объектам, и пользовательская роль БД отображается вместе с назначенными им разрешениями доступа к объекту. Обратите внимание, что вы можете изменить свойства списка пользователей так, чтобы отображались только те пользователи или роли, которые действительно имеют разрешения доступа к этому объекту (рис. 11-3).

Рис. 11-3. Просмотр списка пользователей и ролей, обладающих разрешениями доступа к конкретному объекту 326 Управление разрешениями SOL Server Глава Вы можете также щелкнуть отдельного пользователя или роль, а затем Ч кнопку Columns. Появится окно Column Permissions, где можно просмотреть или изменить разрешения доступа на уровне полей таблицы. Например, можно ограничить разре шения доступа на выполнение операций SELECT или UPDATE на отдельное поле таблицы, которой вы уже назначили такие разрешения (рис. 11-4).

Рис. 11-4. Ограничение разрешений доступа к определенному полю Кроме того, из диалогового окна Object Properties, открытого для любой таблицы, представления или хранимой процедуры, вы можете перейти к любому другому объек ту, выбрав нужный в списке Object (рис. 13-5).

Рис. 11-5. Выбор другого объекта для просмотра разрешений доступа Обратите внимание, что теперь в окне на рис. 11-5 отображается хранимая проце дура. Единственное разрешение, которое можно для нее определить, Ч это EXECUTE.

Итак, можно не только просматривать разрешения доступа к объекту, выбрав его в списке, но еще можно просматривать и управлять разрешениями этого объекта, выб рав вид отображения разрешений по пользователям или ролям. В области диалогового Предоставление разрешений уровня базы данных Занятие окна Enterprise Manager, где отображается информация о файлах, щелкните правой кнопкой определяемую пользователем роль БД или имя пользователя, которому разре шен доступ, затем перейдите на вкладку Properties и щелкните Permissions (рис. 11-6).

'Х Щ л.ч, ' E | :Cusiomei_Pr.

5 dbo Stf iCuslomw_View1 ci Щ CuJomsii dbo S? ЗГ Slf Х Ш 'б а"Т"сГ Га"" 3al Empioyms dbo п ц " а !b Ш Pioducts cjbo b :t а !п ИЭ Suppl" !* :

"^Э EdLaddtfeoui.^. =lbo" Рис. 11-6. Просмотр разрешений доступа на объект для пользователя или роли Обратите внимание, что вы можете выбрать либо список объектов с разрешения ми доступа для данной роли, либо список всех объектов, для которых вы можете из менять разрешения доступа. Такой интерфейс облегчает задачу просмотра и измене ния разрешений доступа из окна разрешений доступа, где отображаются разрешения роли или пользователя.

После того как вы установили соответствующие разрешения доступа для объектов БД с помощью утилиты SQL Server Enterprise Manager, воспользуйтесь ее воз можностью создавать сценарии для соответствующих объектов, Сгенерируйте сценарии Transact-SQL, позволяющие восстановить эти разрешения доступа в случае необходи мости.

Предоставление, блокирование и отзыв разрешений доступа к объектам средствами Transact-SQL Вы можете использовать операторы GRANT, DENY и REVOKE для управления раз решениями доступа к объекту, используя сценарии Transact-SQL.

Следующий оператор предоставляет пользователю Joe (имя пользователя SQL Ser ver), роли SalesUsers (пользовательская роль БД) и группе SelfPacedSQL\SQLServer Users (группа Windows) разрешение выполнять оператор SELECT к таблице Customer.

GRANT SELECT ON Customer TO Joe, SalesUsers, [SelfPacedSQL\SQLServerUsers] В следующем примере пользователю Joe будет запрещено выполнять операторы INSERT, UPDATE и DELETE к объекту:

DENY INSERT, UPDATE, DELETE TO Joe 328 Управление разрешениями SQL Server Глава Когда разрешения доступа на работу с объектами предоставляются с использова нием операторов Transact-SQL, вы также можете использовать необязательный пара метр WITH GRANT OPTION. С помощью этого параметра вы можете предоставлять пользователю, роли или группе определенные разрешения доступа для работы с объектом, а также разрешить им передавать эти разрешения любым другим зарегист рированным в БД пользователям, роли или группе.

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

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

GRANT SELECT ON Customer TO Joe AS SalesManagers Чтобы отменить действие оператора 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 SalesManagers Примечание Используйте оператор WITH GRANT OPTION осторожно. Единствен ный контроль над учетными записями, которые получают разрешения доступа, будет состоять в запрете доступа или отмене разрешений на работу с объектами после того, как они будут установлены (и, возможно, после повреждения данных).

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

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

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

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

EXEC spjielprotect NULL, NULL, 'SalesManagers' Упражнение З. Предоставление и проверка разрешений доступа к объектам В этом упражнении вы предоставите пользователям разрешения на работу с объектами и выполните проверку предоставленных разрешений.

*Х Чтобы предоставить и проверить разрешения доступа к объектам 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\CFM 1.

Откроется сценарий Transact-SQL, который создаст новую хранимую процедуру с именем Customer_Procedure, предоставит разрешение на выполнение операции EXECUTE на эту процедуру для роли guest, создаст новое представление с име нем CustomerJViewl и предоставит разрешение на выполнение оператора SELECT в данном представлении для роли public.

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

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

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

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

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

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

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

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

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

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

Управление разрешениями SQL Server Глава 14. В панели запросов введите EXEC SSEMDB.dbo.Customer_Procedure и в панели ин струментов щелкните Execute Query.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Занятие 1 Предоставление разрешений уровня базы данных 33. Щелкните ОК.

В правой панели появится SSEMDB_CustomRole.

34. Дважды щелкните SSEMDBCustomRoIe.

Откроется окно Database Role Properties Ч SSEMDB_CustomRole. Обратите вни мание, что список пользователей, которым назначена эта определяемая пользова телем роль БД, пуст.

35. Щелкните Add.

Откроется окно Add Role Members.

36. Выберите Ana, а затем щелкните ОК.

Обратите внимание, что пользователь Ana теперь отображается в списке членов роли SSEMDB_CustomRole.

37. Щелкните Apply.

38. Щелкните Permissions.

Откроется окно Database Role Properties Ч SSEMDB. Обратите внимание, что этой роли не предоставлены действующие разрешения.

39. Для объекта Customer_Viewl щелкните в полях-индикаторах Select., Insert, Update и Delete.

Обратите внимание, что при этом рядом с соответствующими действиями появля ется зеленый значок, свидетельствующий о том, что этой роли предоставлены раз решения на выполнение операторов SELECT, INSERT, UPDATE и DELETE к дан ному объекту.

40. Для объекта CustomerJView 1 снова щелкните в полях-индикаторах Select, Insert, Update и Delete.

Обратите внимание, что при этом рядом с соответствующими действиями пояьля ется красный значок, свидетельствующий о том, что этой роли будет запрещено выполнение операторов SELECT, INSERT, UPDATE и DELETE к данному объе кту.

41. Щелкните ОК.

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

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

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

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

45. В диалоговом окне Database Role Properties Ч SSEMDB_CustomRole выберите Ana и щелкните Remove.

46. Щелкните ОК.

47. В дереве консоли раскройте Stored Procedures.

48. В правой панели дважды щелкните Customer_Procedure.

Откроется окно Stored Procedure Properties Ч Customer_Procedure.

49. Щелкните Permissions.

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

50. Для пользователя БД с именем Ana пометьте флажок рядом с Exec и щелкните ОК.

51. В диалоговом окне Stored Procedure Properties Ч Customer_Procedure щелкните OK.

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

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

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

Управление разрешениями SQL Server Глава 54. Переключитесь в SQL Server Enterprise Manager.

55. Щелкните контейнер Tables.

56. В правой панели дважды щелкните Customer.

Откроется окно Table Properties Ч Customer.

57. Щелкните Permissions.

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

58. Для пользователя Ana дважды щелкните флажок Select, чтобы запретить выполне ние оператора SELECT к БД Customer, и затем щелкните ОК.

59. В диалоговом окне Table Properties Ч Customer щелкните ОК.

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

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

Pages:     | 1 |   ...   | 4 | 5 | 6 | 7 | 8 |   ...   | 10 |    Книги, научные публикации