Sicherheitsmodell des Replikations-Agents

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 Verwalten von Anmeldeinformationen und Kennwörtern bei der Replikation.

Wichtiger HinweisWichtig

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-Agentkontos 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-Agentauftrag heraus (Standardeinstellung): Wenn ein SQL Server-Agentauftrag 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 "Agentsicherheit mit 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 des SQL Server-Agents.

  • 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 RMO oder ein ActiveX-Steuerelement verwendet werden: Der Agent wird im Kontext der Anwendung ausgeführt, die RMO bzw. das ActiveX-Steuerelement aufruft.

    HinweisHinweis

    ActiveX-Steuerelemente sind als veraltet markiert.

Es empfiehlt sich, Verbindungen im Kontext der integrierten Sicherheit von Windows herzustellen. Zum Sicherstellen der Abwärtskompatibilität kann auch die SQL Server-Sicherheit verwendet werden. Weitere Informationen zu bewährten Methoden finden Sie unter Bewährte Methoden für die Replikationssicherheit.

HinweisHinweis

In SQL Server 2000 erstellte Replikationsskripts sollten für die Verwendung in SQL Server 2008 aktualisiert werden, damit die Sicherheitsverbesserungen genutzt werden können. Weitere Informationen finden Sie unter Vorgehensweise: Aktualisieren von Replikationsskripts (Replikationsprogrammierung mit Transact-SQL).

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.

HinweisHinweis

Durch die Benutzerkontensteuerung (User Account Control, UAC) in Windows Vista kann der Administratorzugriff auf die Snapshotfreigabe verhindert werden. Sie müssen daher den vom Snapshot-Agent, Verteilungs-Agent und Merge-Agent verwendeten Windows-Konten explizit Berechtigungen für die Snapshotfreigabe erteilen. Dies ist auch dann erforderlich, wenn die Windows-Konten Mitglieder der Administratorengruppe sind. Weitere Informationen finden Sie unter Sichern des Snapshotordners.

Agent

Berechtigungen

Snapshot-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 die Schreibberechtigung für die Snapshotfreigabe verfügen.

Das zum Herstellen der Verbindung mit dem Verleger verwendete Konto muss zumindest Mitglied der festen Datenbankrolle db_owner in der Veröffentlichungsdatenbank sein.

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.

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 Veröffentlichungszugriffsliste sein.

  • Es muss über Leseberechtigungen für die Snapshotfreigabe 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.

Das zum Herstellen der Verbindung mit dem Abonnenten verwendete Konto muss zumindest ein Mitglied der festen Datenbankrolle db_owner in der Abonnementdatenbank sein oder über vergleichbare Berechtigungen verfügen, wenn das Abonnement für einen Nicht-SQL Server-Abonnenten vorgesehen ist.

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 Veröffentlichungszugriffsliste sein.

  • Es muss über Leseberechtigungen für die Snapshotfreigabe verfügen.

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 Veröffentlichungszugriffsliste sein.

  • Die Anmeldung muss mit einem Benutzer in der Veröffentlichungsdatenbank verknüpft sein.

  • Es muss über Leseberechtigungen für die Snapshotfreigabe verfügen.

Das zum Herstellen der Verbindung mit dem Abonnenten verwendete Konto muss zumindest Mitglied der festen Datenbankrolle db_owner in der Abonnementdatenbank sein.

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 Veröffentlichungszugriffsliste sein.

  • Die Anmeldung muss mit einem Benutzer 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 Snapshotfreigabe 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-Agentauftrag 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

Snapshot-Agent

<Publisher>-<PublicationDatabase>-<Publication>-<integer>

Snapshot-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>1

Verteilungs-Agent für Pullabonnements

<Publisher>-<PublicationDatabase>-<Publication>-<Subscriber>-<SubscriptionDatabase>-<GUID>2

Verteilungs-Agent für Pushabonnements für Nicht-SQL Server-Abonnenten

<Publisher>-<PublicationDatabase>-<Publication>-<Subscriber>-<integer>

Warteschlangenlese-Agent

[<Distributor>].<integer>

1 Bei Pushabonnements für Oracle-Veröffentlichungen lautet der Auftragsname <Publisher>->Publisher> statt <Publisher>-<PublicationDatabase>.

2 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 Proxys ausgeführt, somit führt die Replikation folgende Zuordnungen für die von Ihnen angegebenen Agentkonten intern aus:

  • Das Konto wird zunächst mithilfe des Transact-SQL-Befehls der CREATE CREDENTIAL-Anweisung einer Anmeldeinformation zugeordnet. Von SQL 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. Weitere Informationen zu Proxys finden Sie unter Erstellen von SQL Server-Agent-Proxys.

HinweisHinweis

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.