Обработка баз данных на Visual Basic®.NET - Джеффри Мак-Манус
Шрифт:
Интервал:
Закладка:
Для регистрации пользователя нужно сначала создать его учетную запись, выполнив приведенные ниже действия.
1. В программе SQL Server Enterprise Manager откройте папку Security для используемого сервера SQL Server.
2. Щелкните правой кнопкой мыши на объекте Logins и выберите команду Action→New Login (Действие→Новая учетная запись).
3. Появится диалоговое окно SQL Server Login Properties — New Login (рис. 3.22).
4. Для создания новой учетной записи установите переключатель SQL Server Authentication (Аутентификация на сервере SQL Server) и введите имя пользователя в поле Name. По желанию введите пароль в поле Password.
НА ЗАМЕТКУПри использовании аутентификации Windows нужно предусмотреть процедуру в клиентском приложении, с помощью которой пользователь мог бы изменить свой пароль. Эту процедуру можно реализовать с помощью sp_password. Учтите, что при использовании интегрированной системы безопасности это необязательно, потому что в таком случае используются механизмы аутентификации и изменения паролей системы Windows NT/2000.
РИС. 3.22. Диалоговое окно SQL Server Login Properties, предназначенное для создания новой учетной записи
5. При отображении учетной записи Windows NT/2000 на учетную запись SQL Server установите переключатель Windows Authentication (Аутентификация Windows), а затем щелкните на кнопке с многоточием для выбора существующей учетной записи Windows NT/2000.
6. Укажите используемую по умолчанию базу данных, выбрав Novelty в списке баз данных Database.
7. Укажите базы данных, к которым осуществляется доступ с помощью этой учетной записи, воспользовавшись вкладкой Database Access (Доступ к базе данных) в диалоговом окне SQL Server Login Properties (рис. 3.23).
8. Щелкните на кнопке по окончании присвоения учетной записи. После создания такой учетной записи связанный с ней пользователь может осуществлять доступ к указанной базе данных. Новая учетная запись сразу же отображается в консольном окне Microsoft SQL Servers программы SQL Server Enterprise Manager (рис. 3.24).
РИС. 3.23. Создание новой учетной записи для доступа к базе данных
Управление ролями с помощью программы SQL Server Enterprise Manager
В SQL Server 2000 роли используются для группирования пользователей с одинаковыми разрешениями. Любой пользователь отдельной роли наследует все разрешения данной роли, а изменения разрешений роли изменяют разрешения всех пользователей данной роли. Поэтому, чтобы одновременно изменить разрешения для большого количества пользователей, следует изменить разрешения их роли.
В SQL Server 2000 используются два типа ролей: серверные и роли базы данных. Серверные роли управляют доступом к операциям, которые влияют на сервер SQL Server, например запуск и остановка сервера, конфигурирование таких усовершенствованных компонентов, как репликация, управление системой безопасности и создание баз данных. Роли баз данных управляют операциями и доступом к данным указанной базы данных.
Для добавления пользователя с серверной ролью в программе SQL Server Enterprise Manager выполните перечисленные ниже действия.
1. В окне Microsoft SQL Servers программы SQL Server Enterprise Manager откройте папку Security используемого сервера и выберите папку Server Roles для отображения фиксированного набора серверных ролей.
РИС. 3.24. Новая учетная запись отображается в консольном окне Microsoft SQL Servers программы SQL Server Enterprise Manager
2. Щелкните правой кнопкой мыши на изменяемой роли и выберите команду Properties из контекстного меню или щелкните дважды на изменяемой роли. При этом на экране появится диалоговое окно Server Role Properties (Свойства серверной роли), показанное на рис. 3.25.
3. Чтобы указать учетную запись для данной роли, щелкните на кнопке Add и выберите учетную запись из списка доступных учетных записей.
4. Для удаления учетной записи из роли выберите нужную запись (или несколько записей) из списка учетных записей, которые в данный момент являются членами роли, а затем щелкните на кнопке Remove (Удалить).
5. Щелкните на кнопке OK, чтобы закрыть диалоговое окно Server Role Properties.
СОВЕТДля включения или удаления учетной записи из серверной роли можно использовать вкладку Server Roles (Серверные роли) диалогового окна SQL Server Login Properties, которое рассматривалось выше в главе.
РИС. 3.25. Диалоговое окно Server Role Properties с примером использования учетной записи для роли Process Administrators (Администраторы процессов)
Дня создания учетной записи с ролью базы данных в программе SQL Server Enterprise Manager выполните ряд действий.
1. В окне Microsoft SQL Servers программы SQL Server Enterprise Manager откройте папку Roles (Роли) для той базы данных, в которой необходимо создать новую роль. После этого на экране будут показаны все имеющиеся роли базы данных.
2. Щелкните правой кнопкой мыши на нужной роли и выберите команду Properties в контекстном меню или щелкните дважды на изменяемой роли. При этом на экране появится диалоговое окно Database Role Properties (Свойства роли базы данных), показанное на рис. 3.26.
3. Для добавления новой роли к базе данных щелкните на кнопке Add и выберите одного или нескольких пользователей из списка всех пользователей этой базы данных.
4. Для удаления пользователя из роли выберите одного или нескольких пользователей из списка всех пользователей роли и щелкните на кнопке Remove.
5. Щелкните на кнопке OK, чтобы закрыть диалоговое окно Database Role Properties.
РИС. 3.26. Диалоговое окно Database Role Properties с примером добавления роли db_accessadmin
СОВЕТВ SQL Server 2000, помимо предварительно заданных ролей базы данных, предусмотрено использование определенных пользователем ролей базы данных. Эти роли позволяют настроить способ доступа к данным и выполняемым операциям с базой данных (на этом этапе станет активной кнопка Permissions). Более информацию о ролях базы данных можно найти в справочных руководствах SQL Server Books Online.
Тестирование системы безопасности с помощью программы SQL Query Analyzer
Здесь у читателя может возникнуть вопрос: а что произойдет, если "обычный" пользователь попытается получить доступ к объектам базы данных, не имея разрешения. Поскольку программа SQL Query Analyzer разрешает регистрироваться под любым именем, то ответ на этот вопрос можно получить, выполнив приведенные ниже действия с помощью диалогового окна Query.
1. Убедитесь в том, что для проверяемой учетной записи снят флажок роли db_owner для базы данных Novelty, который показан на рис. 3.23.
2. Отключитесь от используемого сервера, выбрав команду File→Disconnect (Файл→Отключиться) или команду File→Disconnect All (Файл→Отключиться от всех) в меню программы SQL Query Analyzer.
3. Теперь выберите команду File→Connect (Файл→Подключиться). В появившемся диалоговом окне Connect to SQL Server введите имя пользователя и пароль, созданные в предыдущем разделе для подключения к базе данных Novelty.
4. Теперь попробуйте выполнить запрос к таблице, доступ к которой этому пользователю запрещен. Например, выполните запрос
SELECT *
FROM tblCustomer
SQL Server вернет следующую строку:
Server: Msg 229, Level 14, State 5, Line 1
SELECT permission denied on object database 'Novelty', owner 'dbo'.
НА ЗАМЕТКУВ этом примере (особенно в п. 5) предполагается, что используется база данных Novelty, а не какая-то другая.
5. Попытаемся теперь выполнить следующую хранимую процедуру:
LastNameLookup' smith'
В ответ SQL Server извлечет из таблицы tblCustomer все имена, созвучные имени Smith.
Применение ограничений безопасности в программе SQL Query Analyzer
Параметры системы безопасности можно контролировать с помощью программы SQL Query Analyzer. Обычно для этого используется тот же пакет команд SQL, что и для создания базы данных. Такой порядок позволяет разработчику учесть и применить все необходимые ограничения безопасности для вновь созданных объектов базы данных.
Для создания новой учетной записи со средствами аутентификации SQL Server с помощью программы SQL Query Analyzer следует использовать хранимую процедуру sp_addlogin. Например, чтобы создать учетную запись Frances, выполните такую команду:
sp_addlogin 'Frances'
А чтобы создать пароль stairmaster для учетной записи Frances, выполните команду
sp_addlogin 'Frances', 'stairmaster'
Если вместо создания учетной записи SQL Server требуется добавить уже существующую учетную запись Windows, то для этого нужно аналогичным образом использовать хранимую процедуру sp_grantlogin. Учтите, однако, что в таком случае нельзя указать пароль, так как в SQL Server пароли не являются отдельной частью определения учетной записи Windows (потому что они поддерживаются системой безопасности Windows).
Чтобы пользователь с учетной записью Frances мог работать с базой данных Novelty, используйте хранимую процедуру sp_adduser.