Aktivieren des datenbankübergreifenden Zugriffs in SQL Server (ADO.NET)
Aktualisiert: November 2007
Von einer datenbankübergreifenden Besitzverkettung spricht man, wenn eine Prozedur in einer Datenbank von Objekten in einer anderen Datenbank abhängt. Eine datenbankübergreifende Besitzkette funktioniert wie die Besitzkette innerhalb einer einzelnen Datenbank – mit dem Unterschied, dass eine durchgängige Besitzkette voraussetzt, dass alle Objektbesitzer demselben Anmeldekonto zugeordnet sind. Wenn das Quellobjekt in der Quelldatenbank und das Zielobjekt in der Zieldatenbank zu ein und demselben Anmeldekonto gehören, nimmt SQL Server keine Prüfung der Berechtigungen für die Zielobjekte vor.
Standardmäßig deaktiviert
Seit SQL 2000 SP3 ist die datenbankübergreifende Besitzverkettung standardmäßig deaktiviert. Microsoft empfiehlt, dass Sie die datenbankübergreifende Besitzverkettung deaktivieren, da Sie sich sonst den folgenden Sicherheitsrisiken aussetzen:
Datenbankbesitzer und Member der db_ddladmin-Datenbankrolle bzw. db_owners können Objekte erstellen, deren Besitzer andere Benutzer sind. Diese Objekte können potenziell auf Objekte in anderen Datenbanken zielen. Das bedeutet: Wenn Sie die datenbankübergreifende Besitzverkettung aktivieren, müssen Sie sich dessen bewusst sein, dass diese Benutzer auf die Daten in allen verketteten Datenbanken zugreifen können.
Benutzer mit der CREATE DATABASE-Berechtigung können neue Datenbanken erstellen und vorhandene Datenbanken anfügen. Wenn die datenbankübergreifende Besitzverkettung aktiviert ist, können diese Benutzer u. U. auf Objekte in anderen Datenbanken zugreifen, auf die sie von den Datenbanken aus, die sie selbst neu erstellen oder anhängen, keinen Zugriff hätten.
Aktivieren der datenbankübergreifenden Besitzverkettung
Die datenbankübergreifende Besitzverkettung sollte nur in Umgebungen aktiviert werden, in denen Sie Benutzern mit weitreichenden Berechtigungen voll vertrauen. Sie kann bei der Einrichtung für alle Datenbanken oder mit den Transact-SQL-Befehlen sp_configure und sp_dboption nur für bestimmte Datenbanken aktiviert werden.
Seit SQL Server 2000 SP3 gibt es zur Erhöhung der Sicherheit die Option Cross DB Ownership Chaining, die es Ihnen erlaubt, die datenbankübergreifende Besitzverkettung zu konfigurieren. Wenn Sie die datenbankübergreifende Besitzverkettung in SQL Server 2005 und höher selektiv konfigurieren möchten, deaktivieren Sie mithilfe von sp_configure die Besitzverkettung für den Server. Konfigurieren Sie dann mit dem Befehl ALTER DATABASE und mit SET DB_CHAINING ON die datenbankübergreifende Besitzverkettung für die gewünschten Datenbanken.
Dynamisch erstellte SQL-Anweisungen
Die datenbankübergreifende Besitzverkettung funktioniert nicht, wenn dynamisch erstellte SQL-Anweisungen ausgeführt werden, sofern derselbe Benutzer nicht in beiden Datenbanken vorhanden ist. Dieses Problem können Sie in SQL Server 2005 umgehen, indem Sie eine gespeicherte Prozedur erstellen, die auf die Daten in einer anderen Datenbank zugreift, und indem Sie die Prozedur mit einem Zertifikat signieren, das in beiden Datenbanken vorhanden ist. Die Benutzer können dann auf die von der Prozedur verwendeten Datenbankressourcen zugreifen, ohne dass ihnen Zugriffsrechte für die Datenbank oder andere Berechtigungen erteilt werden müssen.
Externe Ressourcen
Weitere Informationen dazu finden Sie in den folgenden Ressourcen.
Ressource |
Beschreibung |
---|---|
Erweitern des Identitätswechsels bei Datenbanken durch Verwenden von EXECUTE AS und cross db ownership chaining (Option) in der SQL Server 2008-Onlinedokumentation |
In den Themen wird das Konfigurieren einer datenbankübergreifenden Besitzverkettung für eine Microsoft SQL Server 2008-Instanz beschrieben. |
Erweitern des Identitätswechsels bei Datenbanken durch Verwenden von EXECUTE AS und cross db ownership chaining (Option) in der SQL Server 2005-Onlinedokumentation |
In den Themen wird das Konfigurieren einer datenbankübergreifenden Besitzverkettung für eine Microsoft SQL Server 2005-Instanz beschrieben. |
Cross DB Ownership Chaining (Option) in der SQL Server 2000-Onlinedokumentation |
In den Themen wird das Konfigurieren einer datenbankübergreifenden Besitzverkettung unter Verwendung der in SQL Server 2000 SP3 neu eingeführten Optionen beschrieben. |
Siehe auch
Konzepte
Verwalten von Berechtigungen mit gespeicherten Prozeduren in SQL Server (ADO.NET)
Schreiben von sicherem dynamischen SQL in SQL Server (ADO.NET)
Signieren gespeicherter Prozeduren in SQL Server (ADO.NET)