GRANT-Schemaberechtigungen (Transact-SQL)
Erteilt Berechtigungen für ein Schema.
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. Siehe folgende Aufstellung.
- 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 (database role)
- Anwendungsrolle (application role)
- Einem Windows-Anmeldenamen zugeordneter Datenbankbenutzer
- Einer Windows-Gruppe zugeordneter Datenbankbenutzer
- Einem Zertifikat zugeordneter Datenbankbenutzer
- Einem asymmetrischen Schlüssel zugeordneter Datenbankbenutzer
- Einem 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 (database role)
- Anwendungsrolle (application role)
- Einem Windows-Anmeldenamen zugeordneter Datenbankbenutzer
- Einer Windows-Gruppe zugeordneter Datenbankbenutzer
- Einem Zertifikat zugeordneter Datenbankbenutzer
- Einem asymmetrischen Schlüssel zugeordneter Datenbankbenutzer
- Einem Serverprinzipal zugeordneter Datenbankbenutzer
Hinweise
Wichtig: |
---|
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 DEFINITION |
CONTROL |
VIEW DEFINITION |
Vorsicht: |
---|
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 Knowlege 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.
Berechtigte 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. Berechtigte 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.
Beispiele
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;
Siehe auch
Verweis
DENY-Schemaberechtigungen (Transact-SQL)
REVOKE (Schemaberechtigungen) (Transact-SQL)
GRANT (Transact-SQL)
CREATE CERTIFICATE (Transact-SQL)
CREATE ASYMMETRIC KEY (Transact-SQL)
CREATE APPLICATION ROLE (Transact-SQL)
Andere Ressourcen
Berechtigungen
Prinzipale
Verschlüsselungshierarchie