Sicherheit für Remoteserver

Um Remoteprozeduraufrufe (Remote Procedure Calls, RPCs) für einen Remoteserver zu ermöglichen, müssen Sie auf dem Remoteserver sowie gegebenenfalls auf dem lokalen Server, der eine Instanz von SQL Server ausführt, Anmeldungszuordnungen einrichten. RPC ist in SQL Server standardmäßig deaktiviert. Durch diese Konfiguration wird die Angriffsfläche des Servers verkleinert und dadurch die Sicherheit des Servers verbessert. RPC muss aktiviert werden, bevor Sie dieses Feature verwenden können. Weitere Informationen finden Sie unter sp_configure (Transact-SQL).

HinweisHinweis

Die Unterstützung von Remoteservern wird nur aus Gründen der Abwärtskompatibilität bereitgestellt. Neue Anwendungen, die gespeicherte Prozeduren für Remoteinstanzen von SQL Server ausführen müssen, sollten stattdessen Verbindungsserver verwenden. Weitere Informationen finden Sie unter Verbindungsserver.

Einrichten des Remoteservers

Auf dem Remoteserver müssen Anmeldungszuordnungen eingerichtet werden. Der Remoteserver ordnet über diese Zuordnungen die von einem bestimmten Server eingehende Anmeldung für eine RPC-Verbindung einer lokalen Anmeldung zu. Zuordnungen von Remoteanmeldungen können mithilfe der gespeicherten Prozedur sp_addremotelogin auf dem Remoteserver eingerichtet werden.

HinweisHinweis

Die trusted-Option von sp_remoteoption wird in SQL Server nicht unterstützt.

Einrichten des lokalen Servers

Bei SQL Server-authentifizierten lokalen Anmeldungen brauchen Sie auf dem lokalen Server keine Anmeldungszuordnung einzurichten. SQL Server verwendet die lokale Anwendung und das dazugehörige Kennwort, um die Verbindung mit dem Remoteserver herzustellen. Bei Windows-authentifizierten Anmeldungen richten Sie eine lokale Anmeldungszuordnung auf einem lokalen Server ein, über die definiert wird, welche Anmeldung und welches Kennwort von einer SQL Server-Instanz verwendet werden, wenn eine RPC-Verbindung mit einem Remoteserver hergestellt wird.

Bei durch die Windows-Authentifizierung erstellten Anmeldungen müssen Sie eine Anmeldungs- und Kennwortzuordnung über die gespeicherte Prozedur sp_addlinkedservlogin erstellen. Diese mithilfe von sp_addremotelogin erstellte Anmeldung und dieses Kennwort müssen mit der eingehenden Anmeldung bzw. dem eingehenden Kennwort übereinstimmen.

HinweisHinweis

Verwenden Sie nach Möglichkeit die Windows-Authentifizierung.

Beispiel für die Sicherheit von Remoteservern

Angenommen, Sie haben zwei SQL Server-Installationen, serverSend und serverReceive. serverReceive ist so konfiguriert, dass eine eingehende Anmeldung von serverSend namens Sales_Mary einer SQL Server-authentifizierten Anmeldung auf serverReceive namens Alice zugeordnet wird. Eine weitere eingehende Anmeldung von serverSend namens Joe wird einer SQL Server-authentifizierten Anmeldung auf serverReceive namens Joe zugeordnet.

Der folgende Transact-SQL-Beispielcode konfiguriert serverSend so, dass RPCs auf serverReceive ausgeführt werden können:

--Create remote server entry for RPCs 
--from serverSend in serverReceive.
EXEC sp_addserver 'serverSend'
GO

--Create remote login mapping for login 'Sales_Mary' from serverSend
--to Alice.
EXEC sp_addremotelogin 'serverSend', 'Alice', 'Sales_Mary'
GO
--Create remote login mapping for login Joe from serverReceive 
--to same login.
--Assumes same password for Joe in both servers.
EXEC sp_addremotelogin 'serverSend', 'Joe', 'Joe'
GO

Auf serverSend wird eine lokale Anmeldungszuordnung zwischen der Windows-authentifizierten Anmeldung Sales\Mary und einer Anmeldung Sales_Mary erstellt. Für Joe ist keine lokale Anmeldungszuordnung erforderlich, da standardmäßig dieselbe Anmeldung und dasselbe Kennwort verwendet werden und serverReceive über eine Zuordnung für Joe verfügt:

--Create a remote server entry for RPCs from serverReceive.
EXEC sp_addserver 'serverReceive'
GO
--Create a local login mapping for the Windows authenticated login.
--Sales\Mary to Sales_Mary. The password should match the
--password for the login Sales_Mary in serverReceive.
EXEC sp_addlinkedsrvlogin 'serverReceive', false, 'Sales\Mary',
   'Sales_Mary', '430[fj%dk'
GO