Sicherheitsmodell des Replikations-Agents
Gilt für: SQL Server
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 gesondertes Konto angegeben werden. Weitere Informationen zum Angeben von Konten finden Sie unter Identität und Zugriffssteuerung (Replikation).
Das Sicherheitsmodell des Replikations-Agents unterscheidet sich ein wenig für Azure SQL Managed Instance, da es keine Windows-Konten gibt, unter denen die Agents ausgeführt werden können. Stattdessen muss alles über SQL Server-Authentifizierung erfolgen.
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 Server-Agent-Kontos annehmen. Dies geschieht, indem für den Replikations-Agent kein Anmeldename oder Kennwort angegeben wird. Dieser Ansatz ist jedoch nicht empfehlenswert. 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.
Replikations-Agents werden wie alle ausführbaren Dateien im Kontext eines Windows-Kontos ausgeführt. Die Agents stellen mithilfe dieses Kontos Verbindungen über die integrierte Sicherheit von Windows her. Unter welchem Konto der Agent ausgeführt wird, ist davon abhängig, wie er gestartet wird:
Starten des Agents aus einem SQL Server-Agent-Auftrag heraus (Standardeinstellung): Wenn ein SQL 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. Weitere Informationen zum SQL Server-Agent und der Replikation finden Sie im Abschnitt „Agentensicherheit unter SQL Server-Agent“ weiter unten in diesem Thema. Informationen zu den Berechtigungen, die für das Konto erforderlich sind, unter dem der SQL Server-Agent ausgeführt wird, finden Sie unter Konfigurieren von SQL Server-Agent.
Starten des Agents von einer MS-DOS Befehlszeile, entweder direkt oder über ein Skript: Der Agent wird im Kontext des Benutzerkontos ausgeführt, der den Agent in der Befehlszeile ausführt.
Starten des Agents aus einer Anwendung, von der Replikationsverwaltungsobjekte (RMO) oder ein ActiveX-Steuerelement verwendet werden: Der Agent wird im Kontext der Anwendung ausgeführt, die RMO bzw. das ActiveX-Steuerelement aufruft.
Hinweis
ActiveX-Steuerelemente sind als veraltet markiert.
Es empfiehlt sich, Verbindungen im Kontext der integrierten Sicherheit von Windows herzustellen. Aus Gründen der Abwärtskompatibilität kann auch die SQL Server-Sicherheit verwendet werden. Weitere Informationen zu bewährten Methoden finden Sie unter Replication Security Best Practices.
Für Agents erforderliche Berechtigungen
Die Konten, unter denen Agents ausgeführt werden und über die sie Verbindungen herstellen, erfordern verschiedene Berechtigungen. Eine Beschreibung zu diesen Berechtigungen finden Sie in der folgenden Tabelle. Es empfiehlt sich, jeden Agent unter einem gesonderten Windows-Konto auszuführen. Außerdem sollten den einzelnen Konten lediglich die erforderlichen Berechtigungen erteilt werden. 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.
Hinweis
Durch die Benutzerkontensteuerung (User Account Control, UAC) in einigen Windows-Betriebssystemen kann der Administratorzugriff auf die Momentaufnahmefreigabe verhindert werden. Sie müssen daher den vom Momentaufnahme-Agent, Verteilungs-Agent und Merge-Agent verwendeten Windows-Konten explizit Berechtigungen für die Momentaufnahmefreigabe erteilen. Dies ist auch dann erforderlich, wenn die Windows-Konten Mitglieder der Administratorengruppe sind. Weitere Informationen finden Sie unter Schützen des Momentaufnahmeordners.
Agent | Berechtigungen |
---|---|
Momentaufnahme-Agent | Das Windows-Konto, unter dem der Agent ausgeführt wird, wird verwendet, wenn er Verbindungen mit dem Verteiler herstellt. Für dieses Konto ist Folgendes erforderlich: – Es muss mindestens Mitglied der festen Datenbankrolle db_owner in der Verteilungsdatenbank sein. – Es muss über Lese-, Schreib- und Änderungsberechtigungen für die Momentaufnahmefreigabe verfügen. 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. |
Protokolllese-Agent | Das Windows-Konto, unter dem der Agent ausgeführt wird, wird verwendet, wenn er Verbindungen mit dem Verteiler herstellt. Dieses Konto muss zumindest Mitglied der festen Datenbankrolle db_owner in der Verteilungsdatenbank sein. Das zum Herstellen der Verbindung mit dem Verleger verwendete Konto muss zumindest Mitglied der festen Datenbankrolle db_owner in der Veröffentlichungsdatenbank sein. 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. Der Protokolllese-Agent muss unter einem Konto ausgeführt werden, das Mitglied der festen Serverrolle sysadmin ist. Wenn die sync_type -Option auf Automaticfestgelegt wird, sind keine speziellen Aktionen für den Protokollleser-Agent erforderlich. |
Verteilungs-Agent für Pushabonnements | Das Windows-Konto, unter dem der Agent ausgeführt wird, wird verwendet, wenn er Verbindungen mit dem Verteiler herstellt. Für dieses Konto ist Folgendes erforderlich: – Es muss mindestens Mitglied der festen Datenbankrolle db_owner in der Verteilungsdatenbank sein. – Es muss Mitglied der PAL sein. – Es muss über Leseberechtigungen für die Momentaufnahmefreigabe verfügen. – 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. – 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. 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. 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. |
Verteilungs-Agent für Pullabonnements | Das Windows-Konto, unter dem der Agent ausgeführt wird, wird verwendet, wenn er Verbindungen mit dem Abonnenten herstellt. Dieses Konto muss zumindest Mitglied der festen Datenbankrolle db_owner in der Abonnementdatenbank sein. Für das zum Herstellen der Verbindung mit dem Verteiler verwendete Konto ist Folgendes erforderlich: – Es muss Mitglied der PAL sein. – Es muss über Leseberechtigungen für die Momentaufnahmefreigabe verfügen. – 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. 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. |
Merge-Agent für Pushabonnements | Das Windows-Konto, unter dem der Agent ausgeführt wird, wird verwendet, wenn er Verbindungen mit dem Verleger und dem Verteiler herstellt. Für dieses Konto ist Folgendes erforderlich: – Es muss mindestens Mitglied der festen Datenbankrolle db_owner in der Verteilungsdatenbank sein. – Es muss Mitglied der PAL sein. – Die Anmeldung muss mit einem Benutzer mit Lese-/Schreibberechtigungen in der Veröffentlichungsdatenbank verknüpft sein. – Es muss über Leseberechtigungen für die Momentaufnahmefreigabe verfügen. 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. |
Merge-Agent für Pullabonnements | Das Windows-Konto, unter dem der Agent ausgeführt wird, wird verwendet, wenn er Verbindungen mit dem Abonnenten herstellt. Dieses Konto muss zumindest Mitglied der festen Datenbankrolle db_owner in der Abonnementdatenbank sein. Für das zum Herstellen der Verbindung mit dem Verleger und Verteiler verwendete Konto ist Folgendes erforderlich: – Es muss Mitglied der PAL sein. – Die Anmeldung muss mit einem Benutzer mit Lese-/Schreibberechtigungen in der Veröffentlichungsdatenbank verknüpft sein. – Die Anmeldung muss mit einem Benutzer in der Verteilungsdatenbank verknüpft sein. Der Benutzer kann der Guest -Benutzer sein. – Es muss über Leseberechtigungen für die Momentaufnahmefreigabe verfügen. |
Warteschlangenlese-Agent | Das Windows-Konto, unter dem der Agent ausgeführt wird, wird verwendet, wenn er Verbindungen mit dem Verteiler herstellt. Dieses Konto muss zumindest Mitglied der festen Datenbankrolle db_owner in der Verteilungsdatenbank sein. Das zum Herstellen der Verbindung mit dem Verleger verwendete Konto muss zumindest Mitglied der festen Datenbankrolle db_owner in der Veröffentlichungsdatenbank sein. Das zum Herstellen der Verbindung mit dem Abonnenten verwendete Konto muss zumindest Mitglied der festen Datenbankrolle db_owner in der Abonnementdatenbank sein. |
Agentsicherheit mit SQL Server-Agent
Wenn Sie die Replikation mithilfe von SQL Server Management Studio, Transact-SQL-Prozeduren oder RMO konfigurieren, wird standardmäßig ein SQL Server Agent-Auftrag für jeden Agent erstellt. 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. Diese Aufträge können im Ordner Aufträge in SQL Server Management Studio angezeigt werden. Die Auftragsnamen sind in der folgenden Tabelle aufgeführt.
Agent | Auftragsname |
---|---|
Momentaufnahme-Agent | <Publisher>-<PublicationDatabase>-<Publication>-<integer> |
Momentaufnahme-Agent für eine Mergeveröffentlichungspartition | Dyn_<Publisher>-<PublicationDatabase>-<Publication>-<GUID> |
Protokolllese-Agent | <Publisher>-<PublicationDatabase>-<integer> |
Merge-Agent für Pullabonnements | <Publisher>-<PublicationDatabase>-<Publication>-<Subscriber>-<SubscriptionDatabase>-<integer> |
Merge-Agent für Pushabonnements | <Publisher>-<PublicationDatabase>-<Publication>-<Subscriber>-<integer> |
Verteilungs-Agent für Pushabonnements | <Publisher>-<PublicationDatabase>-<Publication>-<Subscriber>-<integer> |
Verteilungs-Agent für Pullabonnements | <Publisher>-<PublicationDatabase>-<Publication>-<Subscriber>-<SubscriptionDatabase>-<GUID> |
Verteilungs-Agent für Pushabonnements für Nicht-SQL Server-Abonnenten | <Publisher>-<PublicationDatabase>-<Publication>-<Subscriber>-<integer> |
Warteschlangenlese-Agent | [<Distributor>].<integer> |
*Bei Pushabonnements für Oracle-Veröffentlichungen lautet der Auftragsname <Publisher>-<Publisher> statt <Publisher>-<PublicationDatabase>.
**Bei Pullabonnements für Oracle-Veröffentlichungen lautet der Auftragsname <Publisher>-<DistributionDatabase> statt <Publisher>-<PublicationDatabase>.
Wenn Sie die Replikation konfigurieren, geben Sie Konten an, unter denen die Agents ausgeführt werden sollen. 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:
Das Konto wird zunächst mithilfe der Transact-SQL-Anweisung CREATE CREDENTIAL zugeordnet. VonSQL Server -Agent-Proxys werden Anmeldeinformationen zum Speichern von Informationen zu Windows-Benutzerkonten verwendet.
Die gespeicherte Prozedur sp_add_proxy wird aufgerufen, und die Anmeldeinformationen werden zum Erstellen eines Proxys verwendet.
Hinweis
Diese Informationen werden bereitgestellt, damit Sie besser verstehen, was für die Ausführung von Agents im angemessenen Sicherheitskontext erforderlich ist. Sie müssen in der Regel nicht direkt mit den Anmeldeinformationen oder Proxys interagieren, die erstellt wurden.