GRANT-Schemaberechtigungen (Transact-SQL)

Erteilt Berechtigungen für ein Schema.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

GRANT permission  [ ,...n ] ON SCHEMA :: schema_name
    TO database_principal [ ,...n ]
    [ WITH GRANT OPTION ]
    [ AS granting_principal ]

Argumente

  • permission
    Gibt eine Berechtigung an, die für ein Schema erteilt werden kann. Eine Liste der Berechtigungen finden Sie im Abschnitt zu den Hinweisen weiter unten in diesem Thema.

  • ON SCHEMA :: schema_name
    Gibt das Schema an, für das die Berechtigung erteilt wird. Der ::-Bereichsqualifizierer ist erforderlich.

  • database_principal
    Gibt den Prinzipal an, für den die Berechtigung erteilt wird. Einer der folgenden Typen:

    • Datenbankbenutzer

    • Datenbankrolle

    • Anwendungsrolle

    • Einem Windows-Anmeldenamen zugeordneter Datenbankbenutzer

    • Einer Windows-Gruppe zugeordneter Datenbankbenutzer

    • Einem Zertifikat zugeordneter Datenbankbenutzer

    • Einem asymmetrischen Schlüssel zugeordneter Datenbankbenutzer

    • Keinem Serverprinzipal zugeordneter Datenbankbenutzer

  • GRANT OPTION
    Gibt an, dass der Prinzipal die angegebene Berechtigung auch anderen Prinzipalen erteilen kann.

  • AS granting_principal
    Gibt einen Prinzipal an, von dem der Prinzipal, der diese Abfrage ausführt, das Recht zum Erteilen der Berechtigung ableitet. Einer der folgenden Typen:

    • Datenbankbenutzer

    • Datenbankrolle

    • Anwendungsrolle

    • Einem Windows-Anmeldenamen zugeordneter Datenbankbenutzer

    • Einer Windows-Gruppe zugeordneter Datenbankbenutzer

    • Einem Zertifikat zugeordneter Datenbankbenutzer

    • Einem asymmetrischen Schlüssel zugeordneter Datenbankbenutzer

    • Keinem Serverprinzipal zugeordneter Datenbankbenutzer

Hinweise

Wichtiger HinweisWichtig

Durch eine Kombination von ALTER- und REFERENCE-Berechtigungen würde in manchen Fällen zugelassen, dass der Berechtigte Daten anzeigt oder Funktionen ausführt, für die er nicht autorisiert ist. Beispiel: Ein Benutzer mit ALTER-Berechtigung für eine Tabelle und REFERENCE-Berechtigung für eine Funktion kann eine berechnete Spalte über eine Funktion erstellen und ausführen lassen. In diesem Fall benötigt der Benutzer auch die SELECT-Berechtigung für die berechnete Spalte.

Ein Schema ist ein auf der Datenbankebene sicherungsfähiges Element, das in der Datenbank enthalten ist, die das übergeordnete Element in der Berechtigungshierarchie darstellt. Die spezifischsten und restriktivsten Berechtigungen, die für ein Schema erteilt werden können, sind im Folgenden aufgeführt, zusammen mit den allgemeineren Berechtigungen, die implizit enthalten sind.

Schemaberechtigung

Impliziert durch Schemaberechtigung

Impliziert durch Datenbankberechtigung

CONTROL

CONTROL

CONTROL

TAKE OWNERSHIP

CONTROL

CONTROL

ALTER

CONTROL

ALTER ANY SCHEMA

EXECUTE

CONTROL

EXECUTE

INSERT

CONTROL

INSERT

DELETE

CONTROL

DELETE

UPDATE

CONTROL

UPDATE

SELECT

CONTROL

SELECT

REFERENCES

CONTROL

REFERENCES

VIEW CHANGE TRACKING

CONTROL

CONTROL

VIEW DEFINITION

CONTROL

VIEW DEFINITION

VorsichtshinweisVorsicht

Ein Benutzer mit ALTER-Berechtigung für ein Schema kann mithilfe von Besitzverkettung auf sicherungsfähige Elemente in anderen Schemas zugreifen, auch wenn dem Benutzer für diese Elemente explizit der Zugriff verweigert wurde. Der Grund ist, dass durch die Besitzverkettung Berechtigungsüberprüfungen für referenzierte Objekte umgangen werden, wenn ihr Besitzer derselbe Prinzipal ist, der die auf sie verweisenden Objekte besitzt. Ein Benutzer mit ALTER-Berechtigung für ein Schema kann Prozeduren, Synonyme und Sichten erstellen, die dem Besitzer des Schemas gehören. Diese Objekte haben (per Besitzverkettung) Zugriff auf Informationen in anderen Schemas, die dem Besitzer des Schemas gehören. Vermeiden Sie es nach Möglichkeit, die ALTER-Berechtigung für ein Schema zu erteilen, wenn dem Besitzer des Schemas auch andere Schemas gehören.

Das Problem kann beispielsweise in den folgenden Szenarien auftreten. Bei diesen Szenarien wird angenommen, dass ein Benutzer U1 über die ALTER-Berechtigung für das S1-Schema verfügt. Dem Benutzer U1 wird der Zugriff auf ein Tabellenobjekt mit dem Namen T1 im S2-Schema verweigert. Das S1-Schema und das S2-Schema gehören demselben Besitzer.

Benutzer U1 verfügt über die CREATE PROCEDURE-Berechtigung für die Datenbank und die EXECUTE-Berechtigung für das S1-Schema. Daher kann Benutzer U1 eine gespeicherte Prozedur erstellen und dann in der gespeicherten Prozedur auf das ihm verweigerte Objekt T1 zugreifen.

Benutzer U1 verfügt über die CREATE SYNONYM-Berechtigung für die Datenbank und die SELECT-Berechtigung für das S1-Schema. Daher kann Benutzer U1 ein Synonym im S1-Schema für das ihm verweigerte Objekt T1 erstellen und dann mit dem Synonym auf das ihm verweigerte Objekt T1 zugreifen.

Benutzer U1 verfügt über die CREATE VIEW-Berechtigung für die Datenbank und die SELECT-Berechtigung für das S1-Schema. Daher kann Benutzer U1 eine Sicht im S1-Schema erstellen, um Daten für das ihm verweigerte Objekt T1 abzufragen, und dann mit der Sicht auf das ihm verweigerte Objekt T1 zugreifen.

Weitere Informationen finden Sie im Microsoft Knowledge Base-Artikel 914847.

Berechtigungen

Der Berechtigende (oder der mit der Option AS angegebene Prinzipal) benötigt entweder die Berechtigung selbst mit GRANT OPTION, oder eine höhere Berechtigung, die die erteilte Berechtigung impliziert.

Wenn Sie die Option AS verwenden, gelten die folgenden zusätzlichen Anforderungen.

AS granting_principal

Zusätzliche erforderliche Berechtigung

Datenbankbenutzer

IMPERSONATE-Berechtigung für den Benutzer, Mitgliedschaft in der festen Datenbankrolle db_securityadmin, Mitgliedschaft in der festen Datenbankrolle db_owner oder Mitgliedschaft in der festen Serverrolle sysadmin.

Einem Windows-Anmeldenamen zugeordneter Datenbankbenutzer

IMPERSONATE-Berechtigung für den Benutzer, Mitgliedschaft in der festen Datenbankrolle db_securityadmin, Mitgliedschaft in der festen Datenbankrolle db_owner oder Mitgliedschaft in der festen Serverrolle sysadmin.

Einer Windows-Gruppe zugeordneter Datenbankbenutzer

Mitgliedschaft in der Windows-Gruppe, Mitgliedschaft in der festen Datenbankrolle db_securityadmin, Mitgliedschaft in der festen Datenbankrolle db_owner oder Mitgliedschaft in der festen Serverrolle sysadmin.

Einem Zertifikat zugeordneter Datenbankbenutzer

Mitgliedschaft in der festen Datenbankrolle db_securityadmin, Mitgliedschaft in der festen Datenbankrolle db_owner oder Mitgliedschaft in der festen Serverrolle sysadmin.

Einem asymmetrischen Schlüssel zugeordneter Datenbankbenutzer

Mitgliedschaft in der festen Datenbankrolle db_securityadmin, Mitgliedschaft in der festen Datenbankrolle db_owner oder Mitgliedschaft in der festen Serverrolle sysadmin.

Einem Serverprinzipal zugeordneter Datenbankbenutzer

IMPERSONATE-Berechtigung für den Benutzer, Mitgliedschaft in der festen Datenbankrolle db_securityadmin, Mitgliedschaft in der festen Datenbankrolle db_owner oder Mitgliedschaft in der festen Serverrolle sysadmin.

Datenbankrolle

ALTER-Berechtigung für die Rolle, Mitgliedschaft in der festen Datenbankrolle db_securityadmin, Mitgliedschaft in der festen Datenbankrolle db_owner oder Mitgliedschaft in der festen Serverrolle sysadmin.

Anwendungsrolle

ALTER-Berechtigung für die Rolle, Mitgliedschaft in der festen Datenbankrolle db_securityadmin, Mitgliedschaft in der festen Datenbankrolle db_owner oder Mitgliedschaft in der festen Serverrolle sysadmin.

Objektbesitzer können Berechtigungen für die Objekte erteilen, die sie besitzen. Prinzipale mit CONTROL-Berechtigung für ein sicherungsfähiges Element können die Berechtigung für dieses sicherungsfähige Element erteilen.

Empfänger der CONTROL SERVER-Berechtigung, wie z. B. Mitglieder der festen Serverrolle sysadmin, können jede beliebige Berechtigung für jedes beliebige sicherungsfähige Element auf dem Server erteilen. Empfänger der CONTROL-Berechtigung für eine Datenbank, wie z. B. Mitglieder der festen Datenbankrolle db_owner, können jede beliebige Berechtigung für jedes beliebige sicherungsfähige Element in der Datenbank erteilen. Berechtigte der CONTROL-Berechtigung für ein Schema können jede beliebige Berechtigung für jedes Objekt innerhalb des Schemas erteilen.

Beispiel

A. Erteilen der INSERT-Berechtigung für das HumanResources-Schema an "guest"

GRANT INSERT ON SCHEMA :: HumanResources TO guest;

B. Erteilen der SELECT-Berechtigung für das Person-Schema an den Datenbankbenutzer WilJo

GRANT SELECT ON SCHEMA :: Person TO WilJo WITH GRANT OPTION;