Главная » Microsoft SQL Server, Базы данных » Безопасность сервера

0

SQL Server использует двухэтапную схему аутентификации. Вначале пользователь аутентифицируется сервером. Как только он будет “находиться внутри сервера”, права доступа ему предоставляются отдельными базами данных.

SQL Server хранит всю информацию о регистрационных записях в базе данных master.

Режимы аутентификации в SQL Server

При установке SQL Server одним из решений, которые следует принять, является выбор используемого метода аутентификации.

?               В режиме аутентификации Windows SQL Server полностью доверяет аутентификацию операционной системе.

?               В смешанном режиме аутентификация Windows и самого сервера сосуществуют независимо друг от друга.

Установленный при инсталляции режим аутентификации можно изменить на странице Security диалогового окна SQL Server Properties в утилите Management Studio (рис. 40.2).

В программном коде установленный режим аутентификации можно проверить с помощью системной хранимой процедуры xp_loginconf ig следующим образом:

ЕХЕС xp_loginconfig ‘login mode’

Вот пример результата этой процедуры: name   config_value

login mode Mixed

Рис. 40.2. Система безопасности уровня сервера конфигурируется во вкладке Security диаюгового окна SQL Server Properties

Обратите внимание на то, что хранимая процедура, выводящая отчет об установленном режиме аутентификации, является расширенной. Это связано с тем, что режим аутентификации хранится в реестре Windows в следующем ключе: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\

MicrosoftSQhServer\<имя_экзeмпляpa>\MSSQhServer\hoginMode

Значением этого ключа является 0 для режима аутентификации Windows и 1 — для смешанного режима.

Установить режим аутентификации можно либо в Management Studio, либо с помощью редактора реестра Windows regedit. ехе.

Аутентификация Windows

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

Использование аутентификации Windows означает, что пользователю для доступа к SQL Server достаточно иметь учетную запись Windows. Идентификатор безопасности Windows (SID) передается из операционной системы на сервер баз данных.

Аутентификация Windows очень устойчивая — она распознает не только пользователей Windows, но и их группы.

Когда имя группы Windows передается в SQL Server в качестве регистрационной записи, любой член этой группы может быть аутентифицирован сервером баз данных. Права доступа, роли и разрешения могут назначаться группе Windows, после чего они будут применены ко всем пользователям в этой группе.

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

Если пользователи Windows уже организованы в группы по функции или уровню доступа, то использование этих групп в качестве пользователей SQL Server повышает целостность системы и снижает затраты на ее администрирование.

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

В разных версиях Windows пользователи и группы создаются и управляются различным образом. В классическом представлении Windows ХР для управления пользователями нужно выбрать в системном меню Start пункт Control Panels Administrative Tools^Computer Management (рис. 40.3).

Puc. 40.3. Учетные записи пользователей Windows создаются и назначаются группам с помощью консоли Computer Management

Если учетная запись пользователя уже существует в списке пользователей компьютера или домена Windows, то SQL Server может его распознать. Чтобы добавить новую учетную запись для SQL Server с помощью Object Explorer, выполните следующие действия.

1.              Откройте узел Security^Logins сервера и выберите в контекстном меню пункт New Login.

2.              На странице General диалогового окна Login-New (рис. 40.4) с помощью кнопки Search найдите пользователя Windows.

3.              Вы также имеете возможность ввести имя пользователя или группы вручную или воспользоваться кнопкой Advanced для выполнения расширенного поиска.

Пользователю может быть назначена база данных, к которой он подключается по умолчанию. Ее имя выбирается в раскрывающемся списке Default Database в нижней части окна. Следует отметить, что назначение базы данных по умолчанию никак не связано с назначением для доступа к ней определенных прав. Права доступа к базам данных назначаются во вкладке Database Access. (О доступе к базам данных мы поговорим в следующем разделе.)

Puc. 40.4. Страница General диалогового окна Login-New используется для создания и редактирования регистрационной записи пользователя на уровне сервера

Для создания учетной записи пользователя или группы Windows в SQL Server в программном коде используется системная хранимая процедура sp_grantlogin. Обязательно передавайте ей в качестве аргумента полное имя пользователя, включающее имя домена, как в следующем примере:

ЕХЕС sp_grantlogin ‘XPS\Den’

Для просмотра учетных записей Windows из программного кода выполните запрос к представлению каталога sysserver_principals.

Окно Login-New также используется для управления существующими пользователями. Для открытия версии этого окна, регулирующего разрешения существующего пользователя, дважды щелкните на его имени в узле Security ^Logins или щелкните правой кнопкой мыши и выберите в контекстном меню пункт Properties.

Удаление учетной записи Windows

Удаление учетной записи Windows из SQL Server достаточно просто выполняется в Management Studio. Выберите эту учетную запись в Object Browser и с помощью контекстного меню удалите ее (т.е. выполните команду Delete).

Для удаления учетной записи или группы Windows из SQL Server программным путем используется системная хранимая процедура sp_revokelogin:

ЕХЕС sp_revokelogin ‘XPS\Den’

Разумеется, эта операция не удаляет данную учетную запись из операционной системы — только из сервера баз данных.

Запрет учетной записи Windows

С помощью системной хранимой процедуры sp_denylogin доступ любого пользователя в SQL Server может быть закрыт. Это полностью запрещает доступ пользователя к SQL Server, даже если он открыт с помощью другого метода. Если заданная в аргументе группа или пользователь не существует в SQL Server, то вначале создается такая запись, а затем ей запрещается доступ:

ЕХЕС sp_denylogin ‘XPS\Den’

Для примера предположим, что группе Accounting открыт доступ к серверу, а группе Probation — закрыт. Пусть некий Den является членом обеих этих групп. В данной ситуации запрет ему доступа к группе Probation аннулирует также и возможность его доступа к серверу как члена группы Accounting, так как операция deny имеет превосходство над grant.

Для восстановления доступа после его запрета нужно предоставить доступ с помощью хранимой процедуры sp_grant login.

Отозвать доступ можно только программным путем с помощью Т-SQL. Эта функция не поддерживается в Management Studio.

Установка базы данных по умолчанию

Установка базы данных, используемой по умолчанию, выполняется в разделе Login Properties страницы General. В программном коде для этого используется системная хранимая процедура sp_def aultdb:

ЕХЕС sp_defaultdb ‘Sam’, ‘OBXKites1

“Осиротевшие” пользователи Windows

Если пользователь Windows был добавлен в SQL Server, а затем был удален из домена Windows, он продолжает существовать как пользователь в севере баз данных, но считается уже осиротевшим. Это значит, что, несмотря на то что пользователь формально имеет доступ к серверу, он не имеет доступа к ресурсам сети и, следовательно, ко всему комплексу средств SQL Server.

Системная хранимая процедура sp_validatelogins позволяет найти “осиротевших” пользователей и возвращает их идентификаторы системы безопасности Windows NT и имена учетных записей. В следующем примере пользователю Den был открыт доступ к SQL Server, после чего его учетная запись была удалена из Windows:

ЕХЕС sp_validatelogins

SID                                                                                            NT Login

0x01050000000000051500000 0 FCE 31531A9 31. . .           XPS\Joe

Это нельзя считать брешью в системе безопасности. Не имея учетной записи Windows с таким идентификатором, пользователь не сможет подключиться к SQL Server.

Для разрешения проблемы “осиротевших” пользователей можно использовать следующую процедуру.

1.              Отзовите права доступа пользователя ко всем базам данных с помощью хранимой процедуры sp_revokedbaccess.

2.              Отзовите право доступа данного пользователя к серверу с помощью sp_revokelogin.

3.              Создайте для пользователя новую учетную запись.

Делегирование полномочий

В корпоративной сети с множеством серверов баз данных и IIS могут возникнуть проблемы подключения к серверу, связанные с тем, что пользователь пытается подключиться к одному из них, а тот, в свою очередь, пытается подключиться к другому. Причиной этой проблемы может быть то, что между этими серверами отсутствуют доверительные отношения. При работе с внутренними серверами компании эту проблему решить просто. Гораздо сложнее дело обстоит, когда один из серверов находится в демилитаризованной зоне Интернета (DMZ), и администратору сети не с руки открывать дополнительную брешь в системе безопасности локальной сети.

Делегирование полномочий представляет собой функцию SQL Server 2005, которая для передачи профилей безопасности между связанными серверами использует протокол Kerberos.

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

Для обеспечения работоспособности протокола Kerberos необходимо выполнение ряда условий.

?               На всех серверах должна быть запущена операционная система Windows 2000 или более поздняя, к тому же в домене или доверительном дереве должна быть установлена служба активных каталогов.

?               В учетной записи пользователя не должен быть установлен параметр запрета делегирования полномочий (Account is sensitive and cannot be delegated).

?               В учетной записи службы SQL Server должен быть установлен параметр доверия к делегированию полномочий (Account is trusted for delegation).

?               На сервере, на котором запускается SQL Server, также должен быть установлен параметр доверия к делегированию полномочий (Computer is trusted for delegation).

?               Экземпляр SQL Server должен иметь строгое имя службы (SPN), созданное с помощью утилиты setspn. ехе, доступной в Windows 2000 Resource Kit.

Делегирование профиля безопасности достаточно тяжело настроить, и это может потребовать привлечения к работе администратора домена сети. В то же время распознавание пользователей, проходящих через сервер IIS, является мощным механизмом системы безопасности.

Регистрационные записи SQL Server

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

При внедрении регистрационных записей SQL Server (т.е. смешанного режима новинка аутентификации) автоматически создается пользователь sa, являющийся чле-

2005    ном фиксированной серверной роли sysadmin и имеющий все права доступа к

серверу. Зачастую ему забывают присвоить пароль, и эти ворота в системе безопасности открывают путь к серверу любому взломщику. Как правило, наличие такой бреши хакеры проверяют в первую очередь. Исходя из этого, прежде всего нужно отключить пользователя sa и назначить административной роли sysadmin какого-то другого пользователя (или создать дополнительные роли с административными привилегиями).

Для управления пользователями SQL Server в Management Studio используется то же диалоговое окно Login-New, что и для управления пользователями Windows, однако в данном случае выбирается режим SQL Server Authentication.

В программном коде для этого используется системная хранимая процедура sp_addlogin. Так как в данном случае требуется настройка пользователя, а не просто выбор его из списка, данная задача более сложная, чем выполнение процедуры sp_grantlogin. Среди передаваемых процедуре аргументов обязательным является только имя регистрационной записи.

sp_addlogin ‘имя’, ‘пароль’, ‘ база_по_умолчанию’ ,

‘ язык_по_умолчанию’ , ‘ идентификатор_пользователя_сервера’ ,

‘ параметр_шифрования1

Например, следующий программный код создает пользователя SQL Server с именем Den и назначает ему в качестве базы данных по умолчанию учебную базу OBXKites:

EXEC sp_addlogin ‘Den’, ‘myoldpassword’, ‘OBXKites’

Параметр шифрования skip_encryption указывает серверу хранить пароль в системной таблице sysxlogins безо всякого шифрования. В то же время SQL Server ожидает, что пароль обязательно будет зашифрован, поэтому он не распознает созданный таким образом пароль. Избегайте использования этого параметра.

Идентификатор пользователя сервера (SED) — это 85-битовое двоичное значение, которое SQL Server использует для идентификации пользователя. Если некоторый пользователь создается на двух серверах как один и тот же, то для второго сервера следует явно задать идентификатор SED, присвоенный первым сервером. Для получения идентификатора SID используется представление каталога sysserver^principals:

SELECT Name, SID

FROM sysserver_principals WHERE Name = ‘Den’

Name SID

Den    0xlEFDC478DEB52 045B52D241B3 3B2CD7E

Обновление пароля

Пароль может быть изменен с помощью системной хранимой процедуры sp_pas sword, например:

EXEC sp_password ‘myoldpassword’, ‘mynewpassword’, ‘Den’

Если пароль пуст, то в хранимую процедуру вместо пустой строки (‘ ‘) передается ключевое слово NULL.

Удаление регистрационной записи

Для удаления регистрационной записи SQL Server используется системная хранимая процедура sp_droplogin, например:

EXEC sp_droplogin ‘Joe’

Удаление учетной записи приводит к удалению и всех ее настроек безопасности.

Установка базы данных, используемой по умолчанию

База данных, используемая по умолчанию, задается на странице General диалогового окна Login Properties так же, как и для пользователя Windows. В программном коде для этого используется системная хранимая процедура sp_def aultdb:

EXEC sp_defaultdb ‘Den’, ‘OBXKites’

Серверные роли

SQL Server содержит только фиксированные, предопределенные серверные роли. В основном эти роли открывают доступ к административным задачам, связанным с сервером баз данных. Один пользователь может принадлежать к нескольким ролям.

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

?               Члены роли Bulk admin могут выполнять операции массовой вставки.

?               Члены роли Dbcreators могут создавать, изменять, удалять и восстанавливать базы данных.

?               Члены роли Diskadmin могут создавать, изменять и удалять файлы на диске.

?               Члены роли Processadmin могут прерывать запущенный процесс SQL Server.

?               Члены роли Securityadmin могут управлять регистрационными записями сервера.

?               Члены роли Serveradmin могут конфигурировать параметры сервера, включая настройки полнотекстового поиска и останов сервера.

?               Члены роли Setupadmin могут конфигурировать связанные серверы, расширенные хранимые процедуры и процедуры автозапуска.

?               Члены роли Sysadmin могут осуществлять любую деятельность в инсталляции SQL Server, независимо от наличия других разрешений. Права роли sysadmin даже замещают собой запрет доступа к отдельным объектам.

SQL Server автоматически создает пользователя BUILTINS/Administrators, который включает всех пользователей Windows в группу Windows Admins и назначает этой группе роль на сервере баз данных sysadmin. Пользователя BUILTINS/Administrators лучше удалить или изменить по своему усмотрению.

Если в SQL Server устанавливается смешанный режим аутентификации, то автоматически создается пользователь sa, принадлежащий роли sysadmin. Этот пользователь оставлен в SQL Server 2005 только из соображений обратной совместимости с предыдущими версиями сервера.

Отключите или переименуйте пользователя sa или по крайней мере назначьте ему пароль, однако не используйте его при работе администраторов и разработчиков баз данных. К тому же удалите пользователя BUILTINS/Administrors. Вместо этого лучше использовать аутентификацию Windows и назначить всех разработчиков и администраторов серверной роли sysadmin.

Чтобы все доступные возможности, предоставляемые ролью sysadmin, вступили в силу, пользователь должен повторно зайти на сервер.

Серверные роли настраиваются в Management Studio на странице Server Roles диалогового окна Login Properties (рис. 40.5).

В программном коде серверная роль назначается пользователю с помощью следующей системной хранимой процедуры: sp_adds rvrо1emember

[ @loginame = ] ‘регистрационная_запись1,

[ @rolename = ] ‘роль’

Например, в следующем программном коде роль sysadmin назначается регистрационной записи XPS\ Lauren:

EXEC sp_addsrvrolemember 1XPS\Lauren1, ‘sysadmin’

Рис. 40.5. Страница Server Roles используется для назначения пользователям прав администрирования сервера.

В данном примере группе Windows Admin назначена роль sysadmin

Для удаления членства учетной записи в некоторой серверной фиксированной роли используется следующая процедура

EXEC sp_dropsrvrolemember ‘XPS\Lauren1, ‘sysadmin’

Источник: Нильсен, Пол. Microsoft SQL Server 2005. Библия пользователя. : Пер. с англ. — М. : ООО “И.Д. Вильямс”, 2008. — 1232 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии