Введение в дисциплину «Безопасность систем баз данных». Теоретические основы построения реляционных баз данных. Верификация баз данных и проведение аудита в СБД. Распределенные базы данных, страница 47

Учетные записи SQL Server хранятся в системной базе данных Master, в таблице syslogins. Каждая строка таблицы соответствует одной учетной записи. Вместо паролей в таблицу записываются соответствующие хешированные значения. При прохождении идентификации и аутентификации стандартными средствами SQL Server 2005 система получает имя и пароль текущего пользователя, преобразует пароль в хешированное значение и ищет запись в таблице syslogins, где поля name и password совпадают с текущим именем и хешированным паролем соответственно. Если поиск дает положительный результат, идентификация и аутентификация считаются пройденными.

Помимо указанного способа, SQL Server поддерживает аутентификацию с использованием учетной записи домена Windows NT. Непосредственная аутентификация пользователя происходит в домене Windows NT при входе в систему, после чего можно в любое время устанавливать так называемое доверительное соединение с сервером СУБД – соединение без дополнительных проверок имени и пароля.

Учетные записи Windows NT находятся в специальном хранилище системы безопасности домена, отдельно от SQL Server. Каждая учетная запись имеет уникальный идентификатор (login ID), он же идентификатор безопасности (SID). Во время регистрации в домене операционная система по введенным имени и паролю находит SID учетной записи и с его помощью организует доступ пользователя ко всем ресурсам компьютера и сети. Чтобы пользователь домена мог соединяться с SQL Server, его SID должен быть предварительно сохранен в системной таблице syslogins. При этом сохраняется именно SID: имя, пароль и прочие сведения не копируются из хранилища учетных записей домена. Во время установки соединения серверу СУБД передается только SID текущей учетной записи Windows NT с клиентской рабочей станции; сервер ищет соответствующую строку в таблице syslogins, и, если находит, устанавливает соединение.

Применение доверительного соединения обладает рядом преимуществ по сравнению с использованием внутренних учетных записей SQL Server. Во-первых, пользователю достаточно запомнить только одну пару «имя-пароль», чтобы свободно заходить как в домен Windows, так и в СУБД. Во-вторых, повышается уровень защищенности паролей: при аутентификации в режиме Windows NT пароли по сети не передаются, что исключает возможность их перехвата. И наконец, хеш-образы паролей Windows NT вскрываются гораздо труднее, чем хеши паролей SQL Server.

Однако аутентификация с использованием учетных записей SQL Server может оказаться полезной и даже неизбежной, если администрированием домена и СУБД занимаются разные люди, которые испытывают трудности при согласовании своих действий. Внутренняя аутентификация SQL Server – это возможность разделить эти задачи, сделать администрирование СУБД независимым от администрирования операционной системы. Кроме того, аутентификация в режиме Windows NT невозможна для пользователей, работающих под управлением операционных систем Unix, Novell NetWare. Невозможна она и при подключении к SQL Server через Интернет.

Перечисленные способы аутентификации не следует путать с режимами аутентификации, которых в СУБД SQL Server тоже два.

1. Режим смешанной аутентификации.

Работая в этом режиме, SQL Server поддерживает оба метода аутентификации.

2. Режим аутентификации Windows.

В этом режиме доступ предоставляется только пользователям, зарегистрированным в домене. Этот режим не удобен для пользователей операционных систем, несовместимых с Windows NT. В то же время, он более защищен по сравнению с предыдущим.

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

Создание учетной записи

Для создания учетных записей в SQL Server 2005 используется SQL-команда CREATE LOGIN, имеющая следующий синтаксис:

CREATE LOGIN имя_учетной_записи

            {WITH опции | FROM источник}

Секция WITH используется для создания внутренней учетной записи SQL Server, ее полный синтаксис имеет вид:

WITH PASSWORD = ‘пароль’ [HASHED] [MUST_CHANGE]

            [, SID = sid