Безопасность Microsoft SQL Server 2000 / 3. Реализация безопасности на уровне сервера |
2. « » 4. |
3.1. Использование
идентификаторов безопасности
(SID)
3. Реализация безопасности на уровне сервера 3.1. Использование идентификаторов безопасности (SID) Вначале SQL Server 2000 проверяет идентификатор
безопасности пользователя или группы (SID), что бы определить,
не был ли он лишён доступа к серверу. Если это так, доступ
пользователю предоставлен не будет. Если доступ не запрещён,
проверяется факт предоставления доступа, как непосредственно
пользователю, так и через его членство в группах. Если доступ
предоставлен, осуществляется подключение к SQL Server 2000.
После этого, пользователь подключается к заданной ему по
умолчанию базе данных (где он также должен иметь доступ).
Будут проверены его права доступа на любые объекты, к которым
он попытается обратиться. Если в доступе было отказано для
какого-нибудь набора прав логина, подключение к серверу будет
закончено. 3.2. Отказ от Server User Identification Numbers (SUIDs) Столбца SUID больше нет в SQL Server 2000. В SQL Server 6.5 и ранних версиях, защита была основана на использовании значения идентификационного номера пользователя сервера (SUID), который хранился в системной таблице sysxlogins в базе данных master. Этот столбец также существовал в нескольких системных таблицах SQL Server 7.0 Столбец <name> был удалён из следующих системных таблиц: · Sysdatabases Также, было полностью удалено представление sysalternates. Функции SUSER_ID() и SUSER_NAME() были выведены из обращения, и теперь всегда возвращают null. 3.3. Генерация GUID для не доверительных подключений пользователей Для не доверительных (Non-Trusted) подключений, например, когда SQL Server 2000 установлен на операционной системе Windows 98, Windows SID - не доступен. В этом случае, SQL Server 2000 генерирует 16 байтный уникальный, глобальный идентификатор (GUID). Сгенерированный GUID может используется таким же образом, как Windows SID используется для пользователей и групп Windows. Таким образом, безопасность может функционировать одинаково хорошо при доверительном и не доверительном подключении. 3.4. Переименование пользователя Windows или учётной записи группы Когда переименовывается пользователь или группа Windows
средствами User Manager for Domains из состава Windows NT 4.0
или с помощью утилиты Active Directory Users, SQL Server 2000
не будет знать ничего об этой операции. SQL Server 2000
поддерживает полностью квалифицированные имена пользователей
или групп, которые он хранит таблице sysxlogins для
обеспечения высокой эффективности, и отнюдь не часто делает
запросы к контроллеру домена для обновления этой информации.
Это будет так, если выполняется много выборок или контроллер
домена доступен по медленному каналу. Фактические имена
пользователей и групп Windows могут отличаться от хранящихся в
SQL Server 2000, и это не вызовет проблем безопасности. Набор
разрешений для пользователя или группы будет функционировать
правильно, поскольку SQL Server полагается только на свой
внутренний SID. 3.5. Системная таблица sysxlogins Системная таблица sysxlogins содержит права логина (или
отказ в них) для каждого пользователя. Эта системная таблица
существует только в базе данных master. · Представление syslogins обеспечивает обратную
совместимость, хотя анализ значений столбца status даёт более
понятные и лёгкие в использовании результаты. Столбец xstatus хранит параметры состояния, включая членство в серверных ролях. Возможные состояния перечислены в таблице: Назначение Значение Описание ------------------------------------------------------------ Denylogin 1 -- Hasaccess 2 -- Isntname 3 Not "ISN'T", but "IS WINDOWS" :) Isntgroup 3 Only if status bit 4 is not set Isntuser 4 Must also have status bit 3 set Sysadmin 5 Server role Securityadmin 6 Server role Serveradmin 7 Server role Setupadmin 8 Server role Processadmin 9 Server role Diskadmin 10 Server role Dbcreator 11 Server role Bulkadmin 12 Server role Часто можно встретить неправильное толкование того, как
пользователь получает заданную по умолчанию базу данных и
заданные по умолчанию параметры настройки языка. Когда
пользователь подсоединяется к SQL Server 2000, сервер ищет в
таблице sysxlogins строку, содержащую конкретный SID
пользователя (или GUID в случае не доверительных подключений).
Если идентификатор найден, заданная по умолчанию база данных и
заданные по умолчанию параметры настройки языка берутся из
найденной строки. Если идентификатор пользователя не найден,
сервер ищет SID, которые принадлежат группам, членом которых
этот пользователь является. Заданная по умолчанию база данных
и язык берутся от первой группы, которая будет найдена. Этот
алгоритм применяется для каждого значения по
умолчанию. Колонка состояния hasaccess в системной таблице sysxlogins
используется для фиксации параметров по умолчанию, заданных
пользователю, и не предоставляет даже неявно никакого доступа.
Как правило, таблица sysxlogins используется для
предоставления прав логинам пользователей или группам. Если
состояние hasaccess установлено в ноль, логину пользователя
явно доступ не предоставляется. Однако, если пользователь
подключается через предоставленный членством в группы доступ,
значения по умолчанию будут установлены. Состояние denylogin используется для явного лишения доступа к SQL Server 2000 пользователя или группы. Например, если определенному пользователю (или группе) необходимо запретить доступ к SQL Server, может быть выполнена следующая инструкция Transact-SQL: Exec sp_denylogin 'REDMOND\Bob' Это не то же самое, что: Exec sp_revokelogin 'REDMOND\Bob' Различие между этими двумя инструкциями в том, что первая
запрещает доступ к SQL Server, а вторая отменяет
предоставленный доступ. Если пользователь был членом группы
MARKETING, которая доступ имеет, исполнение второй инструкции
не отменило бы Бобу возможность обращения к серверу на
основании членства в группе MARKETING. Первая инструкция
запрещает доступ независимо от членства в любых группах,
которые могут предоставлять доступ. 3.10. Представление sysremotelogins Представление sysremotelogins обеспечивает обратную совместимость с SQL Server 6.5 и более ранними версиями и отображает внешние логины. 3.11. Представление sysoledbuser Когда пользователь хочет выполнить запрос на удалённом
сервере, локальный сервер должен подключится к прилинкованному
серверу от имени какого-нибудь пользователя. |
Перевод: Александра Гладченко 2003г. |
2. « » 4. |