Berechtigungen: GRANT, DENY, REVOKE
Gilt für: Azure Synapse Analytics Analytics Platform System (PDW) SQL Analytics-Endpunkt in Microsoft Fabric Warehouse in Microsoft Fabric
Verwenden Sie die Anweisungen GRANT und DENY, um einem Sicherheitsprinzipal (Anmeldename, Datenbankbenutzer oder Datenbankrolle) eine Berechtigung (z. B. UPDATE) für ein sicherungsfähiges Element (z. B. Datenbank, Tabelle, Sicht) zu erteilen oder zu verweigern. Verwenden Sie REVOKE um die Erteilung oder Verweigerung einer Berechtigung zu widerrufen.
Berechtigungen auf Serverebene werden auf Anmeldenamen angewendet. Berechtigungen auf Datenbankebene werden auf Datenbankbenutzer und Datenbankrollen angewendet.
Fragen Sie die Sichten „sys.server_permissions“ und „sys.database_permissions“ ab, um festzustellen, welche Berechtigungen erteilt und verweigert wurden. Berechtigungen, die einem Sicherheitsprinzipal nicht explizit erteilt oder verweigert wurden, können geerbt werden, wenn eine Mitgliedschaft einer Rolle mit Berechtigung besteht. Die Berechtigungen der festen Datenbankrollen können nicht geändert werden und werden nicht in den Sichten „sys.server_permissions“ und „sys.database_permissions“ angezeigt.
GRANT erteilt explizit mindestens eine Berechtigung.
DENY verweigert dem Prinzipal explizit mindestens eine Berechtigung.
REVOKE entfernt vorhandene GRANT- oder DENY-Berechtigungen.
Transact-SQL-Syntaxkonventionen
Syntax
-- Azure Synapse Analytics and Parallel Data Warehouse and Microsoft Fabric
GRANT
<permission> [ ,...n ]
[ ON [ <class_type> :: ] securable ]
TO principal [ ,...n ]
[ WITH GRANT OPTION ]
[;]
DENY
<permission> [ ,...n ]
[ ON [ <class_type> :: ] securable ]
TO principal [ ,...n ]
[ CASCADE ]
[;]
REVOKE
<permission> [ ,...n ]
[ ON [ <class_type> :: ] securable ]
[ FROM | TO ] principal [ ,...n ]
[ CASCADE ]
[;]
<permission> ::=
{ see the tables below }
<class_type> ::=
{
LOGIN
| DATABASE
| OBJECT
| ROLE
| SCHEMA
| USER
}
Argumente
<Berechtigungen>[ ,...n ]
Mindestens eine Berechtigung, die zu erteilen, verweigern oder widerrufen ist.
ON [ <class_type> :: ] securable Die ON-Klausel beschreibt den sicherungsfähigen Parameter, für den Berechtigungen zugewiesen, verweigert oder widerrufen werden sollen.
<class_type> Der Klassentyp des sicherungsfähigen Elements. Dies kann eins der folgenden Elemente sein: LOGIN, DATABASE, OBJECT, SCHEMA, ROLE oder USER. Berechtigungen können auch für SERVERKlassentyp erteilt werden, allerdings wird SERVER für diese Berechtigungen nicht angegeben. DATABASE wird nicht angegeben, wenn die Berechtigung das Wort DATABASE enthält (z.B. ALTER ANY DATABASE). Wenn class_type nicht angegeben ist und der Berechtigungstyp nicht auf die Server- oder Datenbankklassen beschränkt ist, wird von der Klasse OBJECT ausgegangen.
securable
Der Name für die Anmeldung, die Datenbank, die Tabelle, die Sicht, das Schema, die Prozedur, die Rolle oder den Benutzer, dem Berechtigungen erteilt, verweigert oder widerrufen werden sollen. Der Objektname kann mit den dreiteiligen Benennungsregeln angegeben werden, die unter Transact-SQL-Syntaxkonventionen beschrieben sind.
TO principal [ , ...n]
Mindestens ein Prinzipal, dem Berechtigungen erteilt, verweigert oder widerrufen werden sollen. Ein Prinzipal ist der Anmeldename, der Datenbankbenutzer oder die Datenbankrolle.
FROM principal [ , ...n]
Mindestens ein Prinzipal, für den Berechtigungen widerrufen werden sollen. Ein Prinzipal ist der Anmeldename, der Datenbankbenutzer oder die Datenbankrolle. FROM kann nur mit der Anweisung REVOKE verwendet werden. TO kann mit GRANT, DENY oder REVOKE verwendet werden.
WITH GRANT OPTION
Gibt an, dass der Empfänger die angegebene Berechtigung auch anderen Prinzipalen erteilen kann.
CASCADE
Gibt an, dass die Berechtigung für den angegebenen Prinzipal und für alle anderen Prinzipale verweigert oder widerrufen wird, denen diese Berechtigung von diesem Prinzipal erteilt wurde. Dies ist erforderlich, wenn der Prinzipal die Berechtigung mit dem Argument GRANT OPTION besitzt.
GRANT OPTION FOR
Gibt an, dass die Fähigkeit, die angegebene Berechtigung zu erteilen, aufgehoben wird. Dies ist bei Verwendung des Arguments CASCADE erforderlich.
Wichtig
Falls der Prinzipal die angegebene Berechtigung ohne das Argument GRANT OPTION besitzt, wird die Berechtigung selbst aufgehoben.
Berechtigungen
Zum Erteilen einer Berechtigung muss der Berechtigende entweder über die Berechtigung selbst mit dem Argument WITH GRANT OPTION oder über eine höhere Berechtigung verfügen, in der die erteilte Berechtigung impliziert ist. Objektbesitzer können Berechtigungen für die Objekte erteilen, die sie besitzen. Prinzipale mit der Berechtigung CONTROL für ein sicherungsfähiges Element können die Berechtigung für dieses sicherungsfähige Element erteilen. Mitglieder der festen Datenbankrollen db_owner und db_securityadmin können jegliche Berechtigungen in der Datenbank erteilen.
Allgemeine Hinweise
Das Verweigern oder Widerrufen von Berechtigungen für ein Prinzipal hat keine Auswirkungen auf Anforderungen, die bereits autorisiert wurden und derzeit ausgeführt werden. Zum sofortigen Einschränken des Zugriffs müssen Sie aktive Anforderungen abbrechen oder aktuelle Sitzungen beenden.
Hinweis
Die meisten festen Serverrollen sind in diesem Release nicht verfügbar. Verwenden Sie stattdessen benutzerdefinierte Datenbankrollen. Anmeldenamen können der festen Serverrolle sysadmin nicht hinzugefügt werden. Das Erteilen der Berechtigung CONTROL SERVER gleicht der Mitgliedschaft in der festen Serverrolle sysadmin.
Einige Anweisungen erfordern mehrere Berechtigungen. Beispielsweise erfordert das Erstellen einer Tabelle die Berechtigungen CREATE TABLE in der Datenbank und ALTER SCHEMA für die Tabelle, die die Tabelle enthalten soll.
Analytics Platform System (PDW) führt manchmal gespeicherte Prozeduren zum Verteilen von Benutzeraktionen auf Computeknoten aus. Aus diesem Grund kann die Berechtigung EXECUTE nicht für eine gesamte Datenbank verweigert werden. (Z.B. schlägt DENY EXECUTE ON DATABASE::<name> TO <user>;
fehl.) Sie können dies umgehen, indem Sie die EXECUTE-Berechtigung für Benutzerschemas oder spezifische Objekte (Prozeduren) verweigern.
In Microsoft Fabric kann CREATE USER derzeit nicht explizit ausgeführt werden. Wenn GRANT oder DENY ausgeführt wird, wird der Benutzer automatisch erstellt.
In Microsoft Fabric können Berechtigungen auf Serverebene nicht verwaltet werden.
Implizite und explizite Berechtigungen
Eine explizite Berechtigung ist eine GRANT- oder DENY-Berechtigung, die einem Prinzipal durch eine GRANT- oder DENY-Anweisung zugewiesen wurde.
Eine implizite Berechtigung ist eine GRANT- oder DENY-Berechtigung, die ein Prinzipal (Anmeldename, Benutzer oder Datenbankrolle) von einer anderen Datenbankrolle geerbt hat.
Eine implizite Berechtigung kann auch von einer abdeckenden oder übergeordneten Berechtigung geerbt werden. Beispielsweise kann die Berechtigung UPDATE von einer Tabelle geerbt werden, wenn die Berechtigung UPDATE für das Schema, das die Tabelle enthält, oder die Berechtigung CONTROL für die Tabelle vorhanden ist.
Besitzverkettung
Wenn mehrere Datenbankobjekte aufeinander sequenziell zugreifen, wird diese Sequenz als Kette bezeichnet. Obwohl solche Ketten nicht unabhängig voneinander vorhanden sind, werden in SQL Server beim Traversieren der Links in einer Kette durch SQL Server die Berechtigungen für die einzelnen Objekte anders ausgewertet als beim getrennten Zugriff auf die Objekte. Besitzketten haben erhebliche Auswirkungen auf die Sicherheitsverwaltung. Weitere Informationen zu Besitzketten finden Sie im Artikel zu Besitzketten und im Tutorial: Besitzketten und Kontextwechsel.
Berechtigungsliste
Berechtigungen auf Serverebene
Berechtigungen auf Serverebene können von Anmeldenamen erteilt, verweigert und widerrufen werden.
Für Server geltende Berechtigungen
CONTROL SERVER
ADMINISTER BULK OPERATIONS
ALTER ANY CONNECTION
ALTER ANY DATABASE
CREATE ANY DATABASE
ALTER ANY EXTERNAL DATA SOURCE
ALTER ANY EXTERNAL FILE FORMAT
ALTER ANY LOGIN
ALTER SERVER STATE
CONNECT SQL
VIEW ANY DEFINITION
VIEW ANY DATABASE
VIEW SERVER STATE
Berechtigungen,die für Anmeldenamen gelten
CONTROL ON LOGIN
ALTER ON LOGIN
IMPERSONATE ON LOGIN
VIEW DEFINITION
Berechtigungen auf Datenbankebene
Berechtigungen auf Datenbankebene können von Datenbankbenutzern und benutzerdefinierten Datenbankrollen erteilt, verweigert und widerrufen werden.
Für alle Datenbankklassen geltende Berechtigungen
CONTROL
ALTER
VIEW DEFINITION
Für alle Datenbankklassen außer Benutzer geltende Berechtigungen
- TAKE OWNERSHIP
Nur für die Datenbank geltende Berechtigungen
ALTER ANY DATABASE
ALTER ON DATABASE
ALTER ANY DATASPACE
ALTER ANY ROLE
ALTER ANY SCHEMA
ALTER ANY USER
BACKUP DATABASE
CONNECT ON DATABASE
CREATE PROCEDURE
CREATE ROLE
CREATE SCHEMA
CREATE TABLE
CREATE VIEW
SHOWPLAN
Nur für Benutzer geltende Berechtigungen
- IMPERSONATE
Für Datenbanken, Schemas und Objekte geltende Berechtigungen
ALTER
Delete
Führen Sie
INSERT
SELECT
UPDATE
REFERENCES
Eine Definition für jede Art der Berechtigung finden Sie unter Berechtigungen (Datenbank-Engine).
Diagramm der Berechtigungen
Alle Berechtigungen werden auf diesem Poster grafisch dargestellt. Dies ist die einfachste Methode, um die geschachtelte Hierarchie von Berechtigungen zu sehen. Zum Beispiel kann die Berechtigung ALTER ON LOGIN von sich selbst erteilt werden, wird jedoch auch enthalten, wenn ein Anmeldename die Berechtigung CONTROL für diesen Anmeldenamen erhält, oder wenn einem Anmeldenamen die Berechtigung ALTER ANY LOGIN erteilt wird.
Standardberechtigungen
In der folgenden Liste werden die Standardberechtigungen beschrieben:
Wenn ein Anmeldename mit der Anweisung CREATE LOGIN erstellt wird, erhält der neue Anmeldename die Berechtigung CONNECT SQL.
Alle Anmeldenamen sind Mitglieder der Serverrolle public und können nicht aus public entfernt werden.
Wenn ein Datenbankbenutzer mithilfe der Berechtigung CREATE USER erstellt wird, erhält der Datenbankbenutzer die Berechtigung CONNECT in der Datenbank.
Standardmäßig verfügen alle Prinzipale, einschließlich der Rolle public, über keine expliziten oder impliziten Berechtigungen.
Wenn ein Anmeldename oder ein Benutzer zum Besitzer einer Datenbank oder eines Objekts werden, erhalten diese alle Berechtigungen für die Datenbank bzw. das Objekt. Die Besitzerrechte können nicht geändert werden und sind nicht als explizite Berechtigungen sichtbar. Die Anweisungen GRANT, DENY und REVOKE haben keine Auswirkungen auf Besitzer.
Der sysadmin-Anmeldename verfügt über alle Berechtigungen auf dem Gerät. Ähnlich wie Besitzerrechte, können sa-Berechtigungen nicht geändert werden und sind nicht als explizite Berechtigungen sichtbar. Die Anweisungen GRANT, DENY und REVOKE haben keine Auswirkungen auf den sa-Anmeldenamen. Der sa-Anmeldename kann nicht umbenannt werden.
Die Anweisung USE erfordert keine Berechtigungen. Auf allen Datenbanken können alle Prinzipale die Anweisung USE ausführen.
Beispiele: Azure Synapse Analytics und Analytics-Plattformsystem (PDW)
A. Erteilen einer Berechtigung auf Serverebene für einen Anmeldenamen
Die folgenden zwei Anweisungen erteilen einem Anmeldenamen eine Berechtigung auf Serverebene.
GRANT CONTROL SERVER TO [Ted];
GRANT ALTER ANY DATABASE TO Mary;
B. Erteilen einer Berechtigung auf Serverebene für einen Anmeldenamen
Im folgenden Beispiel wird einem Serverprinzipal (ein anderer Anmeldename) eine Berechtigung auf Serverebene für einen Anmeldenamen zugewiesen.
GRANT VIEW DEFINITION ON LOGIN::Ted TO Mary;
C. Erteilen einer Berechtigung auf Datenbankebene für einen Benutzer
Im folgenden Beispiel wird einem Datenbankprinzipal (ein anderer Benutzer) eine Berechtigung auf Datenbankebene für einen Benutzer zugewiesen.
GRANT VIEW DEFINITION ON USER::[Ted] TO Mary;
D: Erteilen, Verweigern und Widerrufen einer Berechtigung für ein Schema
Die folgende GRANT-Anweisung erteilt dem Benutzer Yuen die Berechtigung, Daten aus einer beliebigen Tabelle oder Sicht im dbo-Schema auszuwählen.
GRANT SELECT ON SCHEMA::dbo TO [Yuen];
Die folgende DENY-Anweisung verweigert dem Benutzer Yuen die Berechtigung, Daten aus einer beliebigen Tabelle oder Sicht im dbo-Schema auszuwählen. Yuen kann die Daten nicht lesen, selbst wenn er auf eine andere Weise über die Berechtigung verfügt, z.B. über eine Rollenmitgliedschaft.
DENY SELECT ON SCHEMA::dbo TO [Yuen];
Die folgende REVOKE-Anweisung entfernt die DENY-Anweisung. Jetzt sind die expliziten Berechtigungen von Yuen neutral. Yuen könnte über eine andere implizite Berechtigung, wie z.B. eine Rollenmitgliedschaft, über die Berechtigung verfügen, Daten aus einer beliebigen Tabelle auszuwählen.
REVOKE SELECT ON SCHEMA::dbo TO [Yuen];
E. Veranschaulichung der optionalen Klausel OBJECT::
Da OBJECT die Standardklasse für eine Berechtigungsanweisung ist, sind die folgenden zwei Anweisungen identisch. Die Klausel OBJECT:: ist optional.
GRANT UPDATE ON OBJECT::dbo.StatusTable TO [Ted];
GRANT UPDATE ON dbo.StatusTable TO [Ted];