Поделиться через


Модель безопасности агента репликации

Область применения: SQL Server

Модель безопасности агента репликации предоставляет возможность точного управления учетными записями, под которыми агенты репликации выполняются и устанавливают соединения: для каждого агента может быть задана своя учетная запись. Дополнительные сведения об указании учетных записей см. в статье Идентификатор и управление доступом для репликации.

Модель безопасности агента репликации для Управляемого экземпляра SQL Azure немного отличается, так как отсутствуют учетные записи Windows для запуска агентов. Вместо этого все выполняется через проверку подлинности SQL Server.

Внимание

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

Агенты репликации, как и все исполняемые объекты, запускаются в контексте учетной записи Windows. Агенты выполняют соединения встроенной безопасности Windows, используя эту учетную запись. Учетная запись, под которой выполняется агент, зависит от того, как он был запущен:

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

  • Запуск агента из командной строки MS-DOS или непосредственно, или с помощью скрипта: агент выполняется в контексте учетной записи пользователя, запустившего его из командной строки.

  • Запуск агента из приложения, использующего объекты RMO или элемент управления ActiveX: агент выполняется в контексте приложения, которое вызывает объект RMO или элемент управления ActiveX.

    Примечание.

    Элементы управления ActiveX являются устаревшими.

Рекомендуется выполнять соединение в контексте встроенной безопасности Windows. Для обратной совместимости также можно использовать безопасность SQL Server. Дополнительные сведения о рекомендуемых подходах см. в разделе Replication Security Best Practices.

Разрешения, необходимые для агентов

Учетные записи, под которыми выполняются и устанавливают соединения агенты, требуют различных разрешений. Описание этих разрешений приводится в следующей таблице. Рекомендуется выполнять каждый агент под отдельной учетной записью Windows, которым следует предоставлять только необходимые разрешения. Сведения о списке доступа к публикации (PAL), относящемся к нескольким агентам, см. в разделе Защита издателя.

Примечание.

В некоторых операционных системах Windows с помощью средства «Контроль учетных записей» можно запретить административный доступ к хранилищу моментального снимка. Поэтому необходимо явно предоставить разрешения на доступ к хранилищу моментального снимка учетным записям Windows, которые используются агентом моментальных снимков, агентом распространителя и агентом слияния. Это необходимо делать даже в том случае, если эти учетные записи Windows являются членами группы «Администраторы». Дополнительные сведения см. в статье Организация безопасности папки моментальных снимков.

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

Она должна быть как минимум участником предопределенной роли базы данных db_owner в базе данных распространителя.

Она должна обладать разрешениями на чтение, запись и изменение в хранилище моментальных снимков.



Обратите внимание, что учетная запись, используемая для подключения к издателю, должна быть как минимум участником предопределенной роли базы данных db_owner в базе данных публикации.
Агент чтения журнала. При соединении с распространителем используется учетная запись Windows, под которой выполняется агент. Эта учетная запись должна быть как минимум членом предопределенной роли базы данных db_owner распространителя.

Учетная запись, используемая для соединения с издателем, должна быть как минимум членом предопределенной роли базы данных db_owner публикации.

При выборе параметров sync_typereplication support only, initialize with backupили initialize from lsnагент чтения журнала необходимо запустить после выполнения процедуры sp_addsubscription, чтобы скрипты установки были записаны в базу данных распространителя. Агент чтения журнала должен работать под учетной записью, которая является членом предопределенной роли сервера sysadmin . Если параметр sync_type установлен в значение Automatic, никаких специальных действий агента чтения журнала не требуется.
Агент распространителя для принудительной подписки При соединении с распространителем используется учетная запись Windows, под которой выполняется агент. Эта учетная запись должна удовлетворять следующим требованиям:

Она должна быть как минимум участником предопределенной роли базы данных db_owner в базе данных распространителя.

Она должна входить в список доступа к публикации.

Она должна иметь разрешение на чтение хранилища моментальных снимков.

Иметь разрешения на чтение из каталога, в который был установлен поставщик OLE DB для подписчика, если подписка предназначена для подписчика, отличного от подписчика SQL Server.

При репликации бизнес-данных агент распространения должен иметь разрешения на репликацию C:\Program Files\Microsoft SQL Server\XX\COMfolder , где XX — идентификатор экземпляра.



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

Кроме того, при использовании -subscriptionstreams >= 2 в агенте распространителя также необходимо предоставить разрешение View Server State для подписчиков, чтобы обеспечить обнаружение взаимоблокировок.
Агент распространителя для подписки по запросу При соединении с подписчиком используется учетная запись Windows, под которой выполняется агент. Эта учетная запись должна быть как минимум членом предопределенной роли базы данных db_owner подписки. Учетная запись, используемая для соединения с распространителем, должна удовлетворять следующим требованиям:

Она должна входить в список доступа к публикации.

Она должна иметь разрешение на чтение хранилища моментальных снимков.

При репликации бизнес-данных агент распространения должен иметь разрешения на репликацию C:\Program Files\Microsoft SQL Server\XX\COMfolder , где XX — идентификатор экземпляра.



Обратите внимание, что при использовании -subscriptionstreams >= 2 в агенте распространителя также необходимо предоставить разрешение View Server State для подписчиков, чтобы обеспечить обнаружение взаимоблокировок.
Агент слияния для принудительной подписки При подключениях к издателю и распространителю используется та учетная запись Windows, под которой выполняется агент. Эта учетная запись должна удовлетворять следующим требованиям:

Она должна быть как минимум участником предопределенной роли базы данных db_owner в базе данных распространителя.

Она должна входить в список доступа к публикации.

Она должна иметь имя для входа, связанное с пользователем в базе данных публикации, и иметь разрешения на чтение и запись.

Она должна иметь разрешение на чтение хранилища моментальных снимков.



Обратите внимание, что учетная запись, используемая для подключения к подписчику, должна быть как минимум участником предопределенной роли базы данных db_owner в базе данных подписки.
Агент слияния для подписки по запросу При соединении с подписчиком используется учетная запись Windows, под которой выполняется агент. Эта учетная запись должна быть как минимум членом предопределенной роли базы данных db_owner подписки. Учетная запись, используемая для соединения с издателем и распространителем, должна удовлетворять следующим требованиям:

Она должна входить в список доступа к публикации.

Она должна иметь имя для входа, связанное с пользователем в базе данных публикации, и иметь разрешения на чтение и запись.

Она должна иметь имя для входа, связанное с пользователем в базе данных распространителя. Пользователь может иметь учетную запись Guest .

Она должна иметь разрешение на чтение хранилища моментальных снимков.
Агент чтения очереди. При соединении с распространителем используется учетная запись Windows, под которой выполняется агент. Эта учетная запись должна быть как минимум членом предопределенной роли базы данных db_owner распространителя.

Учетная запись, используемая для соединения с издателем, должна быть как минимум членом предопределенной роли базы данных db_owner публикации.

Учетная запись, используемая для соединения с подписчиком, должна быть как минимум членом предопределенной роли базы данных db_owner публикации.

Безопасность агентов под управлением агента SQL Server

При настройке репликации с помощью SQL Server Management Studio, процедур Transact-SQL или RMO задание агент SQL Server создается по умолчанию для каждого агента. Затем агенты выполняются в контексте соответствующего шага задания, вне зависимости от того, выполняются ли они постоянно, по расписанию или по запросу. Эти задания можно просмотреть в папке "Задания " в SQL Server Management Studio. В следующей таблице перечислены имена заданий.

Агент Имя задания
агент моментальных снимков <Publisher-PublicationDatabase-Publication-Integer><><><>
Агент моментальных снимков для секции публикации слиянием <Dyn_Publisher-PublicationDatabase-Publication-GUID<><>><>
Агент чтения журнала. <Publisher-PublicationDatabase-integer><><>
Агент слияния для подписок по запросу <Publisher-PublicationDatabase-Publication-Subscription-SubscriptionDatabase-integer><><><><><>
Агент слияния для принудительных подписок <Publisher-PublicationDatabase-Publication-Subscriber-integer><><><><>
Агент распространителя для принудительных подписок <Publisher-PublicationDatabase-Publication-Subscriber-integer><><><><>
Агент распространителя для подписок по запросу <Publisher-PublicationDatabase-Publication-Subscription-SubscriptionDatabase-GUID><><><><><>
Агент распространителя для принудительных подписок подписчиков серверов, отличных от подписчиков SQL Server <Publisher-PublicationDatabase-Publication-Subscriber-integer><><><><>
Агент чтения очереди. [<распространитель>].<целое число>

*Для отправки подписок на публикации Oracle имя задания — Publisher-Publisher<> вместо< Publisher-PublicationDatabase<>>>.<

**Для подписок на вытягивание в публикации Oracle имя задания — <Publisher-DistributionDatabase>> вместо< Publisher-PublicationDatabase><><.

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

  • Учетная запись сначала сопоставляется с учетными данными с помощью инструкции Transact-SQL CREATE CREDENTIAL . агент SQL Server прокси-серверы используют учетные данные для хранения сведений об учетных записях пользователей Windows.

  • Вызывается хранимая процедура sp_add_proxy , а учетные данные используются для создания учетной записи-посредника.

Примечание.

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