Тестирование системы безопасности с помощью программы 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).
Читать дальше