Sicherheitsmodell des Replikations-AgentsReplication Agent Security Model

Gilt für: JaSQL Server NeinAzure SQL-Datenbank NeinAzure Synapse Analytics (SQL DW) NeinParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Das Sicherheitsmodell des Replikations-Agents ermöglicht die präzise Steuerung der Konten, unter denen Replikations-Agents ausgeführt werden und Verbindungen herstellen: Für jeden Agent kann ein anderes Konto angegeben werden.The replication agent security model allows for fine-grained control over the accounts under which replication agents run and make connections: A different account can be specified for each agent. Weitere Informationen zum Angeben von Konten finden Sie unter Identität und Zugriffssteuerung (Replikation).For more information about how to specify accounts, see Identity and access control for replication.

Das Sicherheitsmodell des Replikations-Agents ist für verwaltete Azure SQL-Datenbank-Instanzen etwas anders, da keine Windows-Konten vorhanden sind, unter denen die Agents ausgeführt werden.The replication agent security model is a little bit different for Azure SQL Database managed instances, as there are no Windows accounts under which the agents will run. Stattdessen muss alles über SQL Server-Authentifizierung erfolgen.Instead, everything must be done through SQL Server authentication.

Wichtig

Wenn ein Mitglied der festen Serverrolle sysadmin die Replikation konfiguriert, kann es die Replikations-Agents so konfigurieren, dass sie die Identität des SQL ServerSQL Server -Agentkontos annehmen.When a member of the sysadmin fixed server role configures replication, replication agents can be configured to impersonate the SQL ServerSQL Server Agent account. Dies geschieht, indem für den Replikations-Agent kein Anmeldename oder Kennwort angegeben wird. Dieser Ansatz ist jedoch nicht empfehlenswert.This is done by not specifying a login and password for a replication agent; however, we do not recommend this approach. Sie sollten besser als bewährte Methode in Bezug auf die Sicherheit für jeden Agent ein Konto mit den im Abschnitt zu den für Agents erforderlichen Berechtigungen beschriebenen minimalen Privilegien angeben.Instead, as a security best practice, we recommend that you specify an account for each agent that has the minimum permissions that are described in the section "Permissions That Are Required by Agents" later in this topic.

Replikations-Agents werden wie alle ausführbaren Dateien im Kontext eines Windows-Kontos ausgeführt.Replication agents, like all executables, run under the context of a Windows account. Die Agents stellen mithilfe dieses Kontos Verbindungen über die integrierte Sicherheit von Windows her.The agents make Windows Integrated Security connections by using this account. Unter welchem Konto der Agent ausgeführt wird, ist davon abhängig, wie er gestartet wird:The account under which the agent runs depends on how the agent is started:

  • Starten des Agents über einen SQL ServerSQL Server-Agent-Auftrag (Standardeinstellung): Wenn ein SQL ServerSQL Server-Agent-Auftrag zum Starten eines Replikations-Agents verwendet wird, wird dieser Agent im Kontext eines Kontos ausgeführt, das Sie während der Replikationskonfiguration angeben.Starting the agent from a SQL ServerSQL Server Agent job, the default: When a SQL ServerSQL Server Agent job is used to start a replication agent, the agent runs under the context of an account that you specify when you configure replication. Weitere Informationen zum SQL ServerSQL Server -Agent und der Replikation finden Sie im Abschnitt "Agentsicherheit mit SQL Server-Agent" weiter unten in diesem Thema.For more information about SQL ServerSQL Server Agent and replication, see the section "Agent Security under SQL Server Agent" later in this topic. Informationen zu den Berechtigungen, die für das Konto erforderlich sind, unter dem der SQL ServerSQL Server-Agent ausgeführt wird, finden Sie unter Konfigurieren des SQL Server Agents.For information about the permissions that are required for the account under which SQL ServerSQL Server Agent runs, see Configure SQL Server Agent.

  • Starten des Agents über eine MS-DOS-Befehlszeile (direkt oder über ein Skript): Der Agent wird im Kontext des Kontos des Benutzers ausgeführt, der den Agent über die Befehlszeile ausführt.Starting the agent from an MS-DOS command line, either directly or through a script: The agent runs under the context of the account of the user that is running the agent at the command line.

  • Starten des Agents über eine Anwendung, die Replikationsverwaltungsobjekte (Replication Management Objects, RMO) oder ein ActiveX-Steuerelement verwendet: Der Agent wird im Kontext der Anwendung ausgeführt, die RMOs oder ActiveX-Steuerelemente aufruft.Starting the agent from an application that uses Replication Management Objects (RMO) or an ActiveX control: The agent runs under the context of the application that is calling RMO or the ActiveX control.

    Hinweis

    ActiveX-Steuerelemente sind als veraltet markiert.ActiveX controls are deprecated.

Es empfiehlt sich, Verbindungen im Kontext der integrierten Sicherheit von Windows herzustellen.We recommend that connections be made under the context of Windows Integrated Security. Aus Gründen der Abwärtskompatibilität kann auch die SQL ServerSQL Server -Sicherheit verwendet werden.For backward compatibility, SQL ServerSQL Server Security can also be used. Weitere Informationen zu bewährten Methoden finden Sie unter Replication Security Best Practices.For more information about best practices, see Replication Security Best Practices.

Für Agents erforderliche BerechtigungenPermissions That Are Required by Agents

Die Konten, unter denen Agents ausgeführt werden und über die sie Verbindungen herstellen, erfordern verschiedene Berechtigungen.The accounts under which agents run and make connections require a variety of permissions. Eine Beschreibung zu diesen Berechtigungen finden Sie in der folgenden Tabelle.These permissions are described in the following table. Es empfiehlt sich, jeden Agent unter einem gesonderten Windows-Konto auszuführen. Außerdem sollten den einzelnen Konten lediglich die erforderlichen Berechtigungen erteilt werden.We recommend that each agent run under a different Windows account and the account should be granted only the required permissions. Weitere Informationen zur Veröffentlichungszugriffsliste (Publication Access List oder PAL), die für eine Reihe von Agents relevant ist, finden Sie unter Sichern des Verlegers.For information about the publication access list (PAL), which is relevant for a number of agents, see Secure the Publisher.

Hinweis

Durch die Benutzerkontensteuerung (User Account Control, UAC) in einigen Windows-Betriebssystemen kann der Administratorzugriff auf die Momentaufnahmefreigabe verhindert werden.User Account Control (UAC) in some Windows operating systems can prevent administrative access to the snapshot share. Sie müssen daher den vom Momentaufnahme-Agent, Verteilungs-Agent und Merge-Agent verwendeten Windows-Konten explizit Berechtigungen für die Momentaufnahmefreigabe erteilen.You must therefore explicitly grant snapshot share permissions to the Windows accounts that are used by the Snapshot Agent, Distribution Agent, and Merge Agent. Dies ist auch dann erforderlich, wenn die Windows-Konten Mitglieder der Administratorengruppe sind.You must do this even if the Windows accounts are members of the Administrators group. Weitere Informationen finden Sie unter Schützen des Momentaufnahmeordners.For more information, see Secure the Snapshot Folder.

AgentAgent BerechtigungenPermissions
Momentaufnahme-AgentSnapshot Agent Das Windows-Konto, unter dem der Agent ausgeführt wird, wird verwendet, wenn er Verbindungen mit dem Verteiler herstellt.The Windows account under which the agent runs is used when it makes connections to the Distributor. Für dieses Konto ist Folgendes erforderlich:This account must:

– Es muss mindestens Mitglied der festen Datenbankrolle db_owner in der Verteilungsdatenbank sein.-At minimum, be a member of the db_owner fixed database role in the distribution database.

– Es muss über Lese-, Schreib- und Änderungsberechtigungen für die Momentaufnahmefreigabe verfügen.-Have read, write, and modify permissions on the snapshot share.



Beachten Sie, dass das zum Herstellen der Verbindung mit dem Verleger verwendete Konto zumindest Mitglied der festen Datenbankrolle db_owner in der Veröffentlichungsdatenbank sein muss.Note that the account that is used to connect to the Publisher must at minimum be a member of the db_owner fixed database role in the publication database.
Protokolllese-AgentLog Reader Agent Das Windows-Konto, unter dem der Agent ausgeführt wird, wird verwendet, wenn er Verbindungen mit dem Verteiler herstellt.The Windows account under which the agent runs is used when it makes connections to the Distributor. Dieses Konto muss zumindest Mitglied der festen Datenbankrolle db_owner in der Verteilungsdatenbank sein.This account must at minimum be a member of the db_owner fixed database role in the distribution database.

Das zum Herstellen der Verbindung mit dem Verleger verwendete Konto muss zumindest Mitglied der festen Datenbankrolle db_owner in der Veröffentlichungsdatenbank sein.The account that is used to connect to the Publisher must at minimum be a member of the db_owner fixed database role in the publication database.

Bei Auswahl der sync_type -Optionen replication support only, initialize with backupoder initialize from lsnmuss der Protokolllese-Agent ausgeführt werden, nachdem sp_addsubscriptionausgeführt wurde, damit die festgelegten Skripts in die Verteilungsdatenbank geschrieben werden.When selecting the sync_type options replication support only, initialize with backup, or initialize from lsn, the log reader agent must run after executing sp_addsubscription, so that the set-up scripts are written to the distribution database. Der Protokolllese-Agent muss unter einem Konto ausgeführt werden, das Mitglied der festen Serverrolle sysadmin ist.The log reader agent must be running under an account that is a member of the sysadmin fixed server role. Wenn die sync_type -Option auf Automaticfestgelegt wird, sind keine speziellen Aktionen für den Protokollleser-Agent erforderlich.When the sync_type option is set to Automatic, no special log reader agent actions are required.
Verteilungs-Agent für PushabonnementsDistribution Agent for a push subscription Das Windows-Konto, unter dem der Agent ausgeführt wird, wird verwendet, wenn er Verbindungen mit dem Verteiler herstellt.The Windows account under which the agent runs is used when it makes connections to the Distributor. Für dieses Konto ist Folgendes erforderlich:This account must:

– Es muss mindestens Mitglied der festen Datenbankrolle db_owner in der Verteilungsdatenbank sein.-At minimum be a member of the db_owner fixed database role in the distribution database.

– Es muss Mitglied der PAL sein.-Be a member of the PAL.

– Es muss über Leseberechtigungen für die Momentaufnahmefreigabe verfügen.-Have read permissions on the snapshot share.

– Es muss über die Leseberechtigung für das Installationsverzeichnis des OLE DB-Anbieters für den Abonnenten verfügen, wenn das Abonnement für einen Nicht-SQL Server-Abonnenten vorgesehen ist.-Have read permissions on the installation directory of the OLE DB provider for the Subscriber if the subscription is for a non-SQL Server Subscriber.

– Bei der Replikation von LOB-Daten muss der Verteilungs-Agent über Schreibberechtigungen auf dem Replikationsordner C:\Programme\Microsoft SQL Server\XX\COMfolder verfügen, wobei „XX“ für die Instanz-ID steht.-When replicating LOB data, the distribution agent must have write permissions on the replication C:\Program Files\Microsoft SQL Server\XX\COMfolder where XX represents the instanceID.



Beachten Sie, dass das zum Herstellen der Verbindung mit dem Abonnenten verwendete Konto mindestens Mitglied der festen Datenbankrolle db_owner in der Abonnementdatenbank sein oder über vergleichbare Berechtigungen verfügen muss, wenn das Abonnement nicht SQL Server betrifft.Note that the account that is used to connect to the Subscriber must at minimum be a member of the db_owner fixed database role in the subscription database, or have equivalent permissions if the subscription is for a non-SQL Server Subscriber.

Beachten Sie außerdem, dass Sie bei Verwendung von -subscriptionstreams >= 2 für den Verteilungs-Agent den Abonnenten auch die View Server State -Berechtigung erteilen müssen, damit Deadlocks erkannt werden können.Also note that when using -subscriptionstreams >= 2 on the distribution agent you must also grant the View Server State permission on the subscribers to detect deadlocks.
Verteilungs-Agent für PullabonnementsDistribution Agent for a pull subscription Das Windows-Konto, unter dem der Agent ausgeführt wird, wird verwendet, wenn er Verbindungen mit dem Abonnenten herstellt.The Windows account under which the agent runs is used when it makes connections to the Subscriber. Dieses Konto muss zumindest Mitglied der festen Datenbankrolle db_owner in der Abonnementdatenbank sein.This account must at minimum be a member of the db_owner fixed database role in the subscription database. Für das zum Herstellen der Verbindung mit dem Verteiler verwendete Konto ist Folgendes erforderlich:The account that is used to connect to the Distributor must:

– Es muss Mitglied der PAL sein.-Be a member of the PAL.

– Es muss über Leseberechtigungen für die Momentaufnahmefreigabe verfügen.-Have read permissions on the snapshot share.

– Bei der Replikation von LOB-Daten muss der Verteilungs-Agent über Schreibberechtigungen auf dem Replikationsordner C:\Programme\Microsoft SQL Server\XX\COMfolder verfügen, wobei „XX“ für die Instanz-ID steht.-When replicating LOB data, the distribution agent must have write permissions on the replication C:\Program Files\Microsoft SQL Server\XX\COMfolder where XX represents the instanceID.



Beachten Sie, dass Sie bei Verwendung von -subscriptionstreams >= 2 für den Verteilungs-Agent den Abonnenten auch die View Server State -Berechtigung erteilen müssen, damit Deadlocks erkannt werden können.Note that when using -subscriptionstreams >= 2 on the distribution agent you must also grant the View Server State permission on the subscribers to detect deadlocks.
Merge-Agent für PushabonnementsMerge Agent for a push subscription Das Windows-Konto, unter dem der Agent ausgeführt wird, wird verwendet, wenn er Verbindungen mit dem Verleger und dem Verteiler herstellt.The Windows account under which the agent runs is used when it makes connections to the Publisher and Distributor. Für dieses Konto ist Folgendes erforderlich:This account must:

– Es muss mindestens Mitglied der festen Datenbankrolle db_owner in der Verteilungsdatenbank sein.-At minimum be a member of the db_owner fixed database role in the distribution database.

– Es muss Mitglied der PAL sein.-Be a member of the PAL.

– Die Anmeldung muss mit einem Benutzer mit Lese-/Schreibberechtigungen in der Veröffentlichungsdatenbank verknüpft sein.-Be a login that is associated with a user with read/write permissions in the publication database.

– Es muss über Leseberechtigungen für die Momentaufnahmefreigabe verfügen.-Have read permissions on the snapshot share.



Beachten Sie, dass das zum Herstellen der Verbindung mit dem Abonnenten verwendete Konto zumindest Mitglied der festen Datenbankrolle db_owner in der Abonnementdatenbank sein muss.Note that the account used to connect to the Subscriber must at minimum be a member of the db_owner fixed database role in the subscription database.
Merge-Agent für PullabonnementsMerge Agent for a pull subscription Das Windows-Konto, unter dem der Agent ausgeführt wird, wird verwendet, wenn er Verbindungen mit dem Abonnenten herstellt.The Windows account under which the agent runs is used when it makes connections to the Subscriber. Dieses Konto muss zumindest Mitglied der festen Datenbankrolle db_owner in der Abonnementdatenbank sein.This account must at minimum be a member of the db_owner fixed database role in the subscription database. Für das zum Herstellen der Verbindung mit dem Verleger und Verteiler verwendete Konto ist Folgendes erforderlich:The account that is used to connect to the Publisher and Distributor must:

– Es muss Mitglied der PAL sein.-Be a member of the PAL.

– Die Anmeldung muss mit einem Benutzer mit Lese-/Schreibberechtigungen in der Veröffentlichungsdatenbank verknüpft sein.-Be a login associated with a user with read/write permissions in the publication database.

– Die Anmeldung muss mit einem Benutzer in der Verteilungsdatenbank verknüpft sein.-Be a login associated with a user in the distribution database. Der Benutzer kann der Guest -Benutzer sein.The user can be the Guest user.

– Es muss über Leseberechtigungen für die Momentaufnahmefreigabe verfügen.-Have read permissions on the snapshot share.
Warteschlangenlese-AgentQueue Reader Agent Das Windows-Konto, unter dem der Agent ausgeführt wird, wird verwendet, wenn er Verbindungen mit dem Verteiler herstellt.The Windows account under which the agent runs is used when it makes connections to the Distributor. Dieses Konto muss zumindest Mitglied der festen Datenbankrolle db_owner in der Verteilungsdatenbank sein.This account must at minimum be a member of the db_owner fixed database role in the distribution database.

Das zum Herstellen der Verbindung mit dem Verleger verwendete Konto muss zumindest Mitglied der festen Datenbankrolle db_owner in der Veröffentlichungsdatenbank sein.The account that is used to connect to the Publisher must at minimum be a member of the db_owner fixed database role in the publication database.

Das zum Herstellen der Verbindung mit dem Abonnenten verwendete Konto muss zumindest Mitglied der festen Datenbankrolle db_owner in der Abonnementdatenbank sein.The account that is used to connect to the Subscriber must at minimum be a member of the db_owner fixed database role in the subscription database.

Agentsicherheit mit SQL Server-AgentAgent Security Under SQL Server Agent

Wenn Sie die Replikation mithilfe von SQL Server Management StudioSQL Server Management Studio, Transact-SQLTransact-SQL -Prozeduren oder RMO konfigurieren, wird standardmäßig ein SQL ServerSQL Server -Agentauftrag für jeden Agent erstellt.When you configure replication by using SQL Server Management StudioSQL Server Management Studio, Transact-SQLTransact-SQL procedures, or RMO, a SQL ServerSQL Server Agent job is created by default for each agent. Die Agents werden dann im Kontext eines Auftragsschritts ausgeführt, unabhängig davon, ob sie kontinuierlich, nach einem Zeitplan oder bei Bedarf ausgeführt werden.Agents then run under the context of a job step, regardless of whether they run continuously, on a schedule, or on demand. Diese Aufträge können im Ordner Aufträge in SQL Server Management StudioSQL Server Management Studioangezeigt werden.You can view these jobs under the Jobs folder in SQL Server Management StudioSQL Server Management Studio. Die Auftragsnamen sind in der folgenden Tabelle aufgeführt.The following table lists the job names.

AgentAgent AuftragsnameJob name
Momentaufnahme-AgentSnapshot Agent <Verleger>-<Veröffentlichungsdatenbank>-<Veröffentlichung>-<Ganzzahl><Publisher>-<PublicationDatabase>-<Publication>-<integer>
Momentaufnahme-Agent für eine MergeveröffentlichungspartitionSnapshot Agent for a merge publication partition Dyn_<Verleger>-<Veröffentlichungsdatenbank>-<Veröffentlichung>-<GUID>Dyn_<Publisher>-<PublicationDatabase>-<Publication>-<GUID>
Protokolllese-AgentLog Reader Agent <Verleger>-<Veröffentlichungsdatenbank>-<Ganzzahl><Publisher>-<PublicationDatabase>-<integer>
Merge-Agent für PullabonnementsMerge Agent for pull subscriptions <Verleger>-<Veröffentlichungsdatenbank>-<Veröffentlichung>-<Abonnent>-<Abonnementdatenbank>-<Ganzzahl><Publisher>-<PublicationDatabase>-<Publication>-<Subscriber>-<SubscriptionDatabase>-<integer>
Merge-Agent für PushabonnementsMerge Agent for push subscriptions <Verleger>-<Veröffentlichungsdatenbank>-<Veröffentlichung>-<Abonnent>-<Ganzzahl><Publisher>-<PublicationDatabase>-<Publication>-<Subscriber>-<integer>
Verteilungs-Agent für PushabonnementsDistribution Agent for push subscriptions <Verleger>-<Veröffentlichungsdatenbank>-<Veröffentlichung>-<Abonnent>-<Ganzzahl><Publisher>-<PublicationDatabase>-<Publication>-<Subscriber>-<integer>
Verteilungs-Agent für PullabonnementsDistribution Agent for pull subscriptions <Verleger>-<Veröffentlichungsdatenbank>-<Veröffentlichung>-<Abonnent>-<Abonnementdatenbank>-<GUID><Publisher>-<PublicationDatabase>-<Publication>-<Subscriber>-<SubscriptionDatabase>-<GUID>
Verteilungs-Agent für Pushabonnements für Nicht-SQL Server-AbonnentenDistribution Agent for push subscriptions to non-SQL Server Subscribers <Verleger>-<Veröffentlichungsdatenbank>-<Veröffentlichung>-<Abonnent>-<Ganzzahl><Publisher>-<PublicationDatabase>-<Publication>-<Subscriber>-<integer>
Warteschlangenlese-AgentQueue Reader Agent [<Verteiler>].<Ganzzahl>[<Distributor>].<integer>

*Bei Pushabonnements für Oracle-Veröffentlichungen lautet der Auftragsname <Verleger>-<Verleger> statt <Verleger><Veröffentlichungsdatenbank> .*For push subscriptions to Oracle publications, the job name is <Publisher>-<Publisher> instead of <Publisher>-<PublicationDatabase>.

**Bei Pullabonnements für Oracle-Veröffentlichungen lautet der Auftragsname <Verleger><DistributionDatabase> statt <Verleger>-<Veröffentlichungsdatenbank.**For pull subscriptions to Oracle publications, the job name is <Publisher>-<DistributionDatabase> instead of <Publisher>-<PublicationDatabase>.

Wenn Sie die Replikation konfigurieren, geben Sie Konten an, unter denen die Agents ausgeführt werden sollen.When you configure replication, you specify accounts under which agents should run. Sämtliche Auftragsschritte werden jedoch im Sicherheitskontext eines Proxysausgeführt, somit führt die Replikation folgende Zuordnungen für die von Ihnen angegebenen Agentkonten intern aus:However, all job steps run under the security context of a proxy; therefore, replication performs the following mappings internally for the agent accounts that you specify:

  • Das Konto wird zunächst mithilfe des Transact-SQLTransact-SQL CREATE CREDENTIAL statement.The account is first mapped to a credential by using the Transact-SQLTransact-SQL CREATE CREDENTIAL statement. VonSQL ServerSQL Server -Agent-Proxys werden Anmeldeinformationen zum Speichern von Informationen zu Windows-Benutzerkonten verwendet.SQL ServerSQL Server Agent proxies use credentials to store information about Windows user accounts.

  • Die gespeicherte Prozedur sp_add_proxy wird aufgerufen, und die Anmeldeinformationen werden zum Erstellen eines Proxys verwendet.The sp_add_proxy stored procedure is called, and the credential is used to create a proxy..

Hinweis

Diese Informationen werden bereitgestellt, damit Sie besser verstehen, was für die Ausführung von Agents im angemessenen Sicherheitskontext erforderlich ist.This information is provided to help you understand what is involved in running agents with the appropriate security context. Sie müssen in der Regel nicht direkt mit den Anmeldeinformationen oder Proxys interagieren, die erstellt wurden.You should not have to interact directly with the credentials or proxies that have been created.

Weitere InformationenSee Also

Replication Security Best Practices Replication Security Best Practices
Anzeigen und Ändern von Replikationssicherheitseinstellungen View and modify replication security settings
Sichern des MomentaufnahmeordnersSecure the Snapshot Folder