Чтение онлайн

ЖАНРЫ

Обработка баз данных на Visual Basic®.NET

Прайс Кевин Т.

Шрифт:
СОВЕТ

В 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.

USE Novelty

GO

sp_adduser 'Frances', 'Frannie'

GO
 

Для

отображения списка всех учетных записей и баз данных, связанных с ними по умолчанию, в используемой вами версии SQL Server с помощью программы SQL Query Analyzer выполните приведенную ниже команду.

USE Novelty

GO

SELECT name, dbname

FROM syslogins

Для включения нового пользователя в состав группы пользователей с ролью базы данных db_datawriter выполните хранимую процедуру sp_addrolemember.

USE Novelty

GO

sp_addrolemember 'db_datawriter', 'Frannie'

Для отображения списка всех ролей базы данных выполните хранимую процедуру sp_helprole.

Чтобы выдать и отменить разрешения для любого объекта базы данных, используйте команды SQL GRANT и REVOKE соответственно. Команда GRANT разрешает пользователю выполнять указанную роль, а команда REVOKE отменяет разрешение. Например, для выдачи членам роли public разрешения на полный доступ к таблице Customer воспользуйтесь следующей командой SQL:

GRANT ALL

ON tblCustomer

TO public

А для выдачи членам роли public разрешения только на выборку данных из таблицы tblCustomer воспользуйтесь командой SQL

GRANT SELECT

ON tblCustomer

TO public

Для отмены разрешения на полный доступ к таблице tblCustomer со стороны членов роли public используйте команду SQL REVOKE.

REVOKE ALL

ON tblCustomer

TO public

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

Определение подключенных пользователей

Для того чтобы определить пользователей, подключенных к базе данных, можно использовать хранимую процедуру sp_who. При выполнении эта процедура возвращает список пользователей, которые в настоящий момент подключены к базе данных (рис. 3.27).

РИС. 3.27. Результат выполнения хранимой процедуры sp_who

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

Завершение процесса с помощью команды KILL

В SQL Server администратор может удалить процесс, например пользовательское подключение или блокировку базы данных, с помощью команды KILL. Обычно эта команда применяется для чрезвычайного прекращения пользовательского сеанса, устранения зависшего сеанса или удаления установленной пользователем блокировки данных и продолжения работы с ними. (Эти ситуации хотя и крайне редко, но все же встречаются, особенно в процессе создания приложения.)

Поделиться с друзьями: