Share via


Objektbesitz und Trennung von Benutzer und Schema in SQL Server (ADO.NET)

Aktualisiert: November 2007

Eines der Hauptkonzepte der SQL Server-Sicherheit besteht darin, dass die Besitzer von Objekten unwiderrufbare Berechtigungen für deren Verwaltung besitzen. Es ist nicht möglich, dem Besitzer eines Objekts dessen Privilegien zu entziehen, und Sie können auch keine Besitzer aus der Datenbank entfernen, wenn diese Objekte in der Datenbank besitzen. Wenn ein Benutzer in SQL 2000 ein Objekt erstellt, ohne den Besitzer anzugeben, wird dieser Benutzer zum Besitzer des Objekts. Objektbesitzer besitzen unwiderrufbare Berechtigungen für die Verwaltung des Objekts, was zu Problemen führt, wenn ein Objekt im Besitz mehrerer Benutzer ist. Wenn jedes Datenbankobjekt nur einen einzigen Besitzer besitzt, vereinfacht sich das Verwalten von Berechtigungen in SQL Server 2000, weil dann von der Besitzverkettung profitiert werden kann (siehe dazu Autorisierung und Berechtigungen in SQL Server (ADO.NET)).

Hinweis:

Die Member der festen Serverrolle sysadmin und der festen Datenbankrolle db_owner verfügen ebenfalls über unwiderrufbare Besitzberechtigungen für alle Objekte in der Datenbank.

Wenn Sie mit einer der Vorgängerversionen von SQL Server 2005 arbeiten, können Sie zum Verweisen auf Objekte die folgende vierteilige Benennungssyntax verwenden:

Server.Database.ObjectOwner.DatabaseObject

Wenn die Datenbankbenutzer Bob und Sue jeweils eine Table1 erstellen, müssen Sie den vollqualifizierten Namen verwenden. Wenn ein Systemadministrator oder ein Datenbankbesitzer ein Objekt erstellt, befindet sich dieses Objekt im Besitz des dbo-Benutzerkontos und nicht im Besitz eines einzelnen Benutzers.

SELECT col1 FROM Bob.Table1
SELECT col1 FROM Sue.Table1
SELECT col1 FROM dbo.Table1
Hinweis:

Beim Verweisen auf ein Objekt, das sich im Besitz von dbo befindet, muss die ObjectOwner.DatabaseObject-Syntax nicht unbedingt verwendet werden, sie ist aber effizienter. Wenn der Besitzername nicht bereitgestellt wird, prüft SQL Server 2000 zuerst, ob das Objekt unter dem Namen des aktuellen Benutzers vorhanden ist. Dann wird geprüft, ob sich das Objekt im Besitz von dbo befindet. Die Angabe des zweiteiligen Namens erspart einen zusätzlichen Schritt.

Trennung von Benutzer und Schema

In SQL Server 2005 wurde die Trennung von Benutzer und Schema eingeführt. Durch diese Trennung können die Berechtigungen für Datenbankobjekte flexibler verwaltet werden. Ein Schema ist ein benannter Container für Datenbankobjekte, der es Ihnen erlaubt, Objekte in separaten Namespaces zu gruppieren. So enthält die AdventureWorks-Beispieldatenbank z. B. Schemas wie Production, Sales und HumanResources.

Die vierteilige Benennungssyntax zum Verweisen auf Objekte gibt den Schemanamen an.

Server.Database.DatabaseSchema.DatabaseObject

Schemabesitzer und Berechtigungen

Schemas können jedem beliebigen Datenbankprinzipal gehören, und ein einzelner Prinzipal kann Besitzer mehrerer Schemas sein. Sie können Sicherheitsregeln auf ein Schema anwenden, die dann von allen Objekten im Schema geerbt werden. Wenn Sie die Zugriffsberechtigungen für ein Schema eingerichtet haben, werden diese Berechtigungen automatisch auf alle neuen Objekte angewendet, die dem Schema hinzugefügt werden. Benutzer können einem Standardschema zugewiesen werden, und mehrere Datenbankbenutzer können gemeinsam dasselbe Schema verwenden.

Wenn Entwickler Objekte in einem Schema erstellen, gehen diese Objekte standardmäßig nicht in den Besitz des Entwicklers über, sondern in den Besitz des Sicherheitsprinzipals, dem das Schema gehört. Der Objektbesitz kann mit der Transact-SQL-ALTER AUTHORIZATION-Anweisung übertragen werden. Ein Schema kann auch Objekte enthalten, die unterschiedlichen Besitzern gehören und im Vergleich zu den dem Schema zugewiesenen Berechtigungen detailliertere Berechtigungen besitzen. Eine solche Strukturierung wird jedoch nicht empfohlen, da sie die Verwaltung der Berechtigungen erschwert. Objekte können zwischen Schemas verschoben werden, und der Schemabesitz kann zwischen den Prinzipalen übertragen werden. Datenbankbenutzer lassen sich löschen, ohne dass sich dies auf die Schemas auswirkt.

Integrierte Schemas

SQL Server enthält zehn vordefinierte Schemas, deren Namen mit den integrierten Datenbankbenutzern und Rollen übereinstimmen. Diese Schemas wurden hauptsächlich aus Gründen der Abwärtskompatibilität bereitgestellt. Sie können die Schemas, die denselben Namen wie die festen Datenbankrollen haben, löschen, wenn Sie sie nicht benötigen. Die folgenden Schemas können nicht gelöscht werden:

  • dbo

  • guest

  • sys

  • INFORMATION_SCHEMA

Wenn Sie sie aus der Modelldatenbank entfernen, werden sie in neuen Datenbanken nicht mehr angezeigt.

Hinweis:

Die Schemas sys und INFORMATION_SCHEMA sind für Systemobjekte reserviert. Sie können in diesen Schemas keine Objekte erstellen, und Sie können die Schemas nicht löschen.

Das "dbo"-Schema

Das dbo-Schema ist das Standardschema für neu erstellte Datenbanken. Das dbo-Schema gehört dem dbo-Benutzerkonto. Für Benutzer, die mit dem Transact-SQL-CREATE USER-Befehl erstellt werden, ist dbo standardmäßig das Standardschema.

Benutzer, denen das dbo-Schema zugewiesen ist, erben nicht die Berechtigungen des dbo-Benutzerkontos. Es werden keine Berechtigungen aus einem Schema an die Benutzer vererbt; die Schemaberechtigungen werden von den im Schema enthaltenen Datenbankobjekten geerbt.

Hinweis:

Wenn in SQL Server 2005 mit einem einteiligen Namen auf Datenbankobjekte verwiesen wird, sucht SQL Server zunächst im Standardschema des Benutzers. Wenn das Objekt dort nicht gefunden wird, sucht SQL Server als Nächstes im dbo-Schema. Wenn sich das Objekt nicht im dbo-Schema befindet, wird eine Fehlermeldung zurückgegeben.

Externe Ressourcen

Weitere Informationen zu Objektbesitz und Schemas finden Sie in den folgenden Ressourcen:

Ressource

Beschreibung

Trennung von Benutzer und Schema in der SQL Server 2008-Onlinedokumentation.

Beschreibt die Änderungen, die die Trennung von Benutzer und Schema zur Folge hat. Enthält Informationen zum neuen Verhalten, seinen Auswirkungen auf den Objektbesitz, zu Katalogsichten und zu Berechtigungen.

Trennung von Benutzer und Schema in der SQL Server 2005-Onlinedokumentation

Beschreibt die Änderungen, die die Trennung von Benutzer und Schema zur Folge hat. Enthält Informationen zum neuen Verhalten, seinen Auswirkungen auf den Objektbesitz, zu Katalogsichten und zu Berechtigungen.

Verwenden von Besitzketten in der SQL Server 2000-Onlinedokumentation

Beschreibt, wie Benutzer Berechtigungen von Objektbesitzern erben können.

Siehe auch

Konzepte

Anwendungssicherheitsszenarien in SQL Server (ADO.NET)

Authentifizierung in SQL Server (ADO.NET)

Server- und Datenbankrollen in SQL Server (ADO.NET)

Autorisierung und Berechtigungen in SQL Server (ADO.NET)

Weitere Ressourcen

Sichern von ADO.NET-Anwendungen