Настройка безопасности для доставки журналов SQL Server

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

Оригинальная версия продукта: SQL Server
Исходный номер базы знаний: 321247

Сводка

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

Учетная запись домена

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

Учетная запись локальной сети

Вы можете использовать SQL Server для запуска с локально созданной сетевой учетной записью. В ситуации, когда для SQL Server процесса требуется сетевой доступ, в том случае, если вы настроили SQL Server для использования доставки журналов, можно использовать безопасность сквозной сети. Благодаря безопасности сквозной передачи все компьютеры, к которым будет обращаться SQL Server, должны иметь одну и ту же сетевую учетную запись с одинаковым паролем и соответствующими разрешениями, настроенные локально. Кроме того, когда процесс SQL Server запрашивает ресурсы со второго компьютера, традиционная сетевая безопасность обходится, если та же учетная запись (под которой запущена запрашивающая SQL Server служба) с тем же паролем. Если учетная запись на втором компьютере настроена с достаточным разрешением для выполнения задачи, запрошенной путем вызова SQL Server, задача будет успешной.

Учетная запись локальной системы

Вы также можете настроить SQL Server для запуска с учетной записью локальной системы. Изменение пароля для учетной записи LocalSystem может привести к сбою некоторых служб, критически важных для стабильности системы. Эта учетная запись является локальной для компьютера, на котором она находится. Это означает, что контекст безопасности, который используется SQL Server службами, является локальным. Как указано в разделе Учетная запись локальной сети, при запуске SQL Server под учетной записью LocalSystem нельзя использовать сквозную безопасность сети, так как пароли учетной записи LocalSystem на разных компьютерах отличаются. Запуск SQL Server под этой учетной записью, когда требуется доступ к сетевым ресурсам, скорее всего, приведет к неудачном выполнению задач.

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

Общие сведения о модели безопасности SQL Server

Чтобы полностью понять последствия для безопасности, важно понимать модель безопасности, реализованную корпорацией Майкрософт в SQL Server 2000 году. При создании имени входа оно добавляется в таблицу syslogins в базе данных MASTER. Для каждой базы данных, к которым этому добавленному имени входа предоставляется доступ, она добавляется в таблицу sysusers в этой базе данных. Сопоставление между syslogins таблицей и sysusers таблицей находится в поле SID.

Если пользовательская база данных перемещается на другой сервер, значения идентификатора безопасности переносятся с предыдущего сервера. Безопасность базы данных прерывается, если имена входа на втором сервере не создаются с теми же значениями идентификатора безопасности или если безопасность неправильно настроена из-за несоответствия значений идентификаторов безопасности.

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

Требования безопасности

  • Резервная папка

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

    Сетевая папка, настроенная для хранения резервных копий журналов транзакций, должна быть настроена на наличие разрешений на чтение и изменение для учетной записи, под которой запускаются службы SQL Server на сервере-получателе, настроенном для доставки журналов. Доступ к этой общей папке осуществляется с помощью задания копирования на сервере-получателе для копирования резервных копий журнала транзакций в локальную папку на соответствующем сервере-получателе. Затем задание загрузки загружает эти резервные копии из локальной папки.

  • Доставка журналов между доменами

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

  • Выбор режима проверки подлинности для подключения к серверу мониторинга

    Для подключения к серверу мониторинга и обновления таблиц монитора можно выбрать проверка подлинности Windows или проверку подлинности SQL (на основном и вторичном серверах). Этот параметр можно выбрать при настройке доставки журналов или после настройки доставки журналов, и она будет работать. По умолчанию SQL Server использует проверка подлинности Windows, однако при выборе проверки подлинности SQL на серверах-источниках, дополнительных серверах и серверах мониторинга создается новый log_shipping_monitor_probe входа SQL. Если для этой цели выбрана проверка подлинности SQL, настройте SQL Server для использования параметра SQL и проверка подлинности Windows.

Конфигурация безопасности на сервере-получателе для резервных баз данных

Если база данных-получатель настроена в режиме ожидания, доступ к ней можно получить в состоянии только для чтения. Восстановление базы данных-получателя в этом режиме позволяет выполнять автономные отчеты, тем самым выгружая часть работы из рабочей системы. Однако для поддержки функций только для чтения резервной базы данных может потребоваться применить те же параметры безопасности на сервере-получателе. Так как база данных находится в режиме ожидания, вы даже не можете вносить какие-либо изменения в целях настройки безопасности. В этом случае необходимо создать все SQL Server имена входа с одинаковыми значениями идентификаторов безопасности на сервере-получателе. Имена входа Windows автоматически сохраняют одни и те же идентификаторы БЕЗОПАСНОСТИ, так как идентификатор GUID Windows является глобально уникальным даже при использовании нескольких доменов.

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

Конфигурация безопасности при изменении роли

Процедура изменения ролей для доставки журналов включает в себя повышение роли сервера-получателя в качестве основного сервера. Это можно сделать с сервером-источником или без подключения к сети. В рамках изменения роли выполняется до четырех хранимых процедур. Одна из этих хранимых процедур, , помогает исправить значения идентификаторов безопасности для имен входа, которые находятся в резервной базе данных непосредственно перед тем, sp_resolve_logins как она будет доступна для использования в качестве базы данных-источника.

В рамках этой хранимой .bcp процедуры файл syslogins таблицы с бывшего сервера-источника загружается во временную таблицу. Затем каждое имя входа, которое присутствует в этой временной таблице, сравнивается с таблицей syslogins в базе данных MASTER сервера-получателя и sysusers таблицей базы данных-получателя. Для каждого имени входа во временной таблице с тем же именем входа в syslogins таблице и тем же идентификатором безопасности, что и в sysusers таблице базы данных-получателя, идентификатор безопасности исправляется (в базе данных-получателе) с помощью sp_change_users_login в соответствии с идентификатором, который находится в syslogins таблице.

Для настройки безопасности с помощью этой хранимой процедуры требуется следующее:

  • Имена входа SQL уже должны быть созданы на сервере-получателе. Для этого используйте задачу DTS "Передача учетных записей для входа", описанную в разделе электронной документации по SQL Server. Настройка и изменение роли доставки журналов.

  • Необходимо предоставить .bcp файл syslogins таблицы с сервера-источника. Этот файл должен быть текущим, так как устаревший файл может привести sp_resolve_logins к сбою при исправлении имен входа.

Прежде чем sp_resolve_logins можно будет исправить имена входа в базе данных-получателе, необходимо выполнить следующие три условия:

  1. Имя входа из .bcp файла syslogins таблицы должно совпадать с именем в syslogins таблице с сервера-источника.

  2. Значение sid должно совпадать между именем входа в .bcp файл и таблицу sysusers в базе данных-получателе.

  3. Значение идентификатора безопасности базы данных-получателя должно отличаться от значения идентификатора безопасности в syslogins таблице базы данных MASTER на сервере-получателе.

Если вы создаете SQL Server имена входа, как описано в Q303722, эта хранимая процедура не требуется, так как все имена входа уже представлены с одинаковым значением идентификатора безопасности в syslogins таблице (в базе данных MASTER на сервере-получателе) и sysusers в таблице (в базе данных-получателе).

Вопросы и ответы

  • Вопрос. Распространяет ли доставка журналов изменения, связанные с безопасностью, на сервер-получатель автоматически?

    Ответ. Да. Так как все изменения в системных таблицах регистрируются в журнале, они автоматически распространяются на сервер-получатель (или серверы).

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

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