Опубликован: 29.07.2008 | Доступ: свободный | Студентов: 1879 / 489 | Оценка: 4.31 / 4.13 | Длительность: 09:00:00
Лекция 2:

Основные принципы обеспечения безопасности базы данных

< Лекция 1 || Лекция 2: 123 || Лекция 3 >
Получаем информацию о принадлежности к серверной роли

Выполнив запрос системной функции IS_SRVROLEMEMBER можно узнать, принадлежит текущий пользователь к одной из серверных ролей. Следующий пример кода Transact SQL возвращает значение 1, если текущее имя входа принадлежит к серверной роли sysadmin, и значение 0 в противном случае.

SELECT IS_SRVROLEMEMBER ('sysadmin');

Добавляем имя входа к серверной роли.Добавить имя входа к существующей серверной роли можно при помощи системной хранимой процедуры sp_addsrvrolemember. Следующий пример добавляет Mary к серверной роли sysadmin:

EXECUTE sp_addsrvrolemember "Mary", "sysadmin";

Удаляем имя входа из серверной роли.Чтобы удалить имя входа из серверной роли, можно использовать хранимую процедуру sp_dropsrvrolemember. Следующий пример удаляет пользователя Mary из серверной роли sysadmin:

EXECUTE sp_dropsrvrolemember "Mary", "sysadmin";

Предоставляем индивидуальные разрешения.SQL Server 2005 предоставляет более гранулярную структуру разрешений, что позволяет с большей точностью контролировать операции входа. Разрешениями можно манипулировать при помощи операторов GRANT, DENY и REVOKE. Информация о серверных разрешениях доступна из представления каталога sys.server_permissions.

В следующем примере пользователю Mary предоставляются права на создание и выполнение трассировок в SQL Server Profiler:

GRANT ALTER TRACE TO Mary;

Пользователи могут получить информацию о своих разрешениях с помощью функции fn_my_permissions. Следующий пример отображает разрешения пользователя:

SELECT * FROM fn_my_permissions (NULL, 'SERVER');
Дополнительная информация.Со списком серверных разрешений можно ознакомиться в разделе "Предоставление разрешений SQL Server. Инструкция GRANT (T-SQL)" в SQL Server Books Online (Электронная документация по SQL Server).
Запрещаем доступ пользователям

В некоторых ситуациях, например, когда пользователь увольняется из организации, необходимо запретить доступ определенному имени входа. Если этот запрет временный, можно не удалять имя входа из экземпляра, а просто отключить его. При отключении доступа свойства имени входа и его сопоставление пользователям базы данных сохраняются. Повторно включив это имя входа, вы можете работать с прежними свойствами. Чтобы отключить и включить имя входа, выполните следующую инструкцию ALTER:

  • Отключаем имя входа
    ALTER LOGIN Mary DISABLE;
  • Включаем имя входа
    ALTER LOGIN Mary ENABLE;

    Можно проверить, отключены ли имена входа, выполнив запрос к представлению каталога sql_logins, как показано в следующем примере:

  • Отключаем имя входа
    ALTER LOGIN Mary DISABLE; GO
  • Выполняем запрос к системному представлению каталога
    SELECT * FROM sys.sql_logins
       WHERE is_disabled=1; GO
  • Включаем имя входа
    ALTER LOGIN Mary ENABLE;
    Совет. В SQL Server Management Studio отключенные имена входа помечаются красной стрелкой. Эта стрелка отображается в правом нижнем углу значка имени входа, который находится в папке Security/Logins (Безопасность/Имена входа) в панели Object Explorer (Обозревателя объектов). С другой стороны, если необходимо удалить имя входа из данного экземпляра, следует использовать инструкцию DROP LOGIN. Следующий пример удаляет имя входа.
    DROP LOGIN Mary;
    Предупреждение. При удалении имени входа SQL Server 2005 не удаляет пользователей базы данных, сопоставленных этому имени входа.
    Предупреждение. Удаление имени входа, которому сопоставлены пользователи или группы Windows не гарантирует, что эти пользователи или члены групп не смогут получить доступ к SQL Server. Учтите, что такие пользователи могут принадлежать и к какой-либо другой группе Windows с действующим именем входа.
Устанавливаем соединение с SQL Server с использованием проверки подлинности SQL Server

Следующая программа на Microsoft Visual Basic (она имеется в файлах примеров под именем ConnectUsingSQL Auth.vb.txt ) показывает, как установить соединение с SQL Server с использованием проверки подлинности SQL Server:

"Создаем экземпляр объекта SQLConnection
Dim oConn as New SQLClient.SQLConnection
"Определяем строку соединения
"с заданными именем входа и паролем
oConn.ConnectionString="server=localhost; database=AdventureWorks; " + _
                       "user id= Mary; password=34TY$$543"
"Открываем соединение
oConn.Open()
"Выполняем необходимые действия
...
"Закрываем соединение
oConn.Close()
< Лекция 1 || Лекция 2: 123 || Лекция 3 >
Марат Уздемиров
Марат Уздемиров
Ярослав Малащенко
Ярослав Малащенко