Machtigingen: VERLENEN, WEIGEREN, INTREKKEN
Van toepassing op:Azure Synapse Analytics
Analytics Platform System (PDW)
SQL-eindpunt in Microsoft Fabric
Warehouse in Microsoft Fabric
Gebruik de instructies GRANT en DENY om een machtiging (zoals UPDATE) voor een beveiligbare (zoals een database, tabel, weergave, enzovoort) te verlenen of te weigeren aan een beveiligingsprincipal (een aanmelding, een databasegebruiker of een databaserol). Gebruik REVOKE om het verlenen of weigeren van een machtiging te verwijderen.
Machtigingen op serverniveau worden toegepast op aanmeldingen. Machtigingen op databaseniveau worden toegepast op databasegebruikers en databaserollen.
Als u wilt zien welke machtigingen zijn verleend en geweigerd, voert u een query uit op de sys.server_permissions en sys.database_permissions weergaven. Machtigingen die niet expliciet worden verleend of geweigerd aan een beveiligingsprincipal, kunnen worden overgenomen door lidmaatschap te hebben van een rol die machtigingen heeft. De machtigingen van de vaste databaserollen kunnen niet worden gewijzigd en worden niet weergegeven in de weergaven sys.server_permissions en sys.database_permissions.
GRANT verleent expliciet een of meer machtigingen.
Weigeren weigert expliciet dat de principal een of meer machtigingen heeft.
MET REVOKE verwijdert u bestaande machtigingen VOOR VERLENEN of WEIGEREN .
Transact-SQL-syntaxisconventies
Syntaxis
-- 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
}
Argumenten
<permission>[ ,... n ]
Een of meer machtigingen voor het verlenen, weigeren of intrekken.
ON [ <class_type> :: ] beveiligbaar De ON-component beschrijft de beveiligbare parameter voor het verlenen, weigeren of intrekken van machtigingen.
<> class_type Het klassetype van het beveiligbare. Dit kan AANMELDING, DATABASE, OBJECT, SCHEMA, ROL of GEBRUIKER zijn. Machtigingen kunnen ook worden verleend aan de SERVER-class_type, maar SERVER is niet opgegeven voor deze machtigingen. DATABASE wordt niet opgegeven wanneer de machtiging het woord DATABASE bevat (bijvoorbeeld ALTER ANY DATABASE). Wanneer er geen class_type is opgegeven en het machtigingstype niet is beperkt tot de server- of databaseklasse, wordt ervan uitgegaan dat de klasse OBJECT is.
Beveiligbare
De naam van de aanmelding, database, tabel, weergave, schema, procedure, rol of gebruiker waarvoor machtigingen moeten worden verleend, geweigerd of ingetrokken. De objectnaam kan worden opgegeven met de driedelige naamgevingsregels die worden beschreven in Transact-SQL-syntaxisconventies.
AAN principal [ ,... n ]
Een of meer principals die machtigingen worden verleend, geweigerd of ingetrokken. Principal is de naam van een aanmelding, databasegebruiker of databaserol.
FROM principal [ ,... n ]
Een of meer principals voor het intrekken van machtigingen. Principal is de naam van een aanmelding, databasegebruiker of databaserol. FROM kan alleen worden gebruikt met een REVOKE-instructie . TO kan worden gebruikt met GRANT, DENY of REVOKE.
MET TOEKENNINGSOPTIE
Geeft aan dat de verlenende gebruiker ook de mogelijkheid krijgt om de opgegeven machtiging te verlenen aan andere principals.
TRAPSGEWIJZE
Geeft aan dat de machtiging is geweigerd of ingetrokken voor de opgegeven principal en voor alle andere principals waaraan de principal de machtiging heeft verleend. Vereist wanneer de principal de machtiging met GRANT OPTION heeft.
OPTIE VERLENEN VOOR
Geeft aan dat de mogelijkheid om de opgegeven machtiging te verlenen wordt ingetrokken. Dit is vereist wanneer u het argument CASCADE gebruikt.
Belangrijk
Als de principal de opgegeven machtiging heeft zonder de optie GRANT , wordt de machtiging zelf ingetrokken.
Machtigingen
Als u een machtiging wilt verlenen, moet de verlenende gebruiker de machtiging zelf hebben met de OPTIE MET VERLENEN of een hogere machtiging hebben die impliceert dat de machtiging wordt verleend. Objecteigenaren kunnen machtigingen verlenen voor de objecten die ze bezitten. Principals met de machtiging CONTROL voor een beveiligbaar kunnen machtigingen verlenen voor die beveiligbare. Leden van de db_owner en db_securityadmin vaste databaserollen kunnen elke machtiging in de database verlenen.
Algemene opmerkingen
Het weigeren of intrekken van machtigingen voor een principal heeft geen invloed op aanvragen die zijn geslaagd voor autorisatie en die momenteel worden uitgevoerd. Als u de toegang onmiddellijk wilt beperken, moet u actieve aanvragen annuleren of huidige sessies beƫindigen.
Notitie
De meeste vaste serverfuncties zijn niet beschikbaar in deze release. Gebruik in plaats daarvan door de gebruiker gedefinieerde databaserollen. Aanmeldingen kunnen niet worden toegevoegd aan de vaste serverrol sysadmin . Als u de controlservermachtiging verleent, wordt het lidmaatschap van de vaste serverrol sysadmin geschat.
Voor sommige instructies zijn meerdere machtigingen vereist. Als u bijvoorbeeld een tabel wilt maken, hebt u de machtigingen CREATE TABLE in de database nodig en de machtiging ALTER SCHEMA voor de tabel die de tabel bevat.
Analytics Platform System (PDW) voert soms opgeslagen procedures uit om gebruikersacties te distribueren naar de rekenknooppunten. Daarom kan de uitvoeringsmachtiging voor een hele database niet worden geweigerd. (Mislukt bijvoorbeeld DENY EXECUTE ON DATABASE::<name> TO <user>;
.) Als tijdelijke oplossing kunt u de uitvoeringsmachtiging voor gebruikersschema's of specifieke objecten (procedures) weigeren.
In Microsoft Fabric kan de CREATE USER momenteel niet expliciet worden uitgevoerd. Wanneer GRANT of DENY wordt uitgevoerd, wordt de gebruiker automatisch gemaakt.
In Microsoft Fabric kunnen machtigingen op serverniveau niet worden beheerd.
Impliciete en expliciete machtigingen
Een expliciete machtiging is een GRANT - of DENY-machtiging die aan een principal wordt verleend door een GRANT- of DENY-instructie .
Een impliciete machtiging is een GRANT- of DENY-machtiging die een principal (aanmeldings-, gebruikers- of databaserol) heeft overgenomen van een andere databaserol.
Een impliciete machtiging kan ook worden overgenomen van een dek- of bovenliggende machtiging. De machtiging UPDATE voor een tabel kan bijvoorbeeld worden overgenomen door de machtiging UPDATE te hebben voor het schema dat de tabel bevat of de machtiging CONTROL voor de tabel.
Eigendomsketen
Wanneer meerdere databaseobjecten sequentieel toegang tot elkaar krijgen, wordt de reeks een keten genoemd. Hoewel dergelijke ketens niet onafhankelijk bestaan, evalueert SQL Server machtigingen voor de samenstellende objecten op een andere manier dan wanneer SQL Server de koppelingen in een keten doorkruist. Eigendomsketen heeft belangrijke gevolgen voor het beheren van de beveiliging. Zie Eigendomsketens en Zelfstudie: Eigendomsketens en Contextwisseling voor meer informatie over eigendomsketens.
Lijst met machtigingen
Machtigingen op serverniveau
Machtigingen op serverniveau kunnen worden verleend, geweigerd en ingetrokken voor aanmeldingen.
Machtigingen die van toepassing zijn op servers
CONTROL SERVER
BULKBEWERKINGEN BEHEREN
EEN VERBINDING WIJZIGEN
EEN DATABASE WIJZIGEN
EEN DATABASE MAKEN
EEN EXTERNE GEGEVENSBRON WIJZIGEN
EEN EXTERNE BESTANDSINDELING WIJZIGEN
ELKE AANMELDING WIJZIGEN
SERVERSTATUS WIJZIGEN
VERBINDING MAKEN MET SQL
ELKE DEFINITIE WEERGEVEN
ELKE DATABASE WEERGEVEN
SERVERSTATUS WEERGEVEN
Machtigingen die van toepassing zijn op aanmeldingen
CONTROLE BIJ AANMELDING
WIJZIGEN BIJ AANMELDING
IMITEREN BIJ AANMELDING
DEFINITIE WEERGEVEN
Machtigingen op databaseniveau
Machtigingen op databaseniveau kunnen worden verleend, geweigerd en ingetrokken voor databasegebruikers en door de gebruiker gedefinieerde databaserollen.
Machtigingen die van toepassing zijn op alle databaseklassen
CONTROLE
ALTER
DEFINITIE WEERGEVEN
Machtigingen die van toepassing zijn op alle databaseklassen, met uitzondering van gebruikers
- EIGENAAR
Machtigingen die alleen van toepassing zijn op databases
EEN DATABASE WIJZIGEN
WIJZIGEN IN DATABASE
EEN WILLEKEURIGE GEGEVENSRUIMTE WIJZIGEN
EEN ROL WIJZIGEN
EEN SCHEMA WIJZIGEN
ELKE GEBRUIKER WIJZIGEN
BACK-UPDATABASE
VERBINDING MAKEN OP DATABASE
PROCEDURE MAKEN
CREATE ROLE
SCHEMA MAKEN
CREATE TABLE
CREATE VIEW
SHOWPLAN
Machtigingen die alleen van toepassing zijn op gebruikers
- IMITEREN
Machtigingen die van toepassing zijn op databases, schema's en objecten
ALTER
DELETE
UITVOEREN
INSERT
SELECT
UPDATE
REFERENTIES
Zie Machtigingen (database-engine) voor een definitie van elk type machtiging.
Grafiek met machtigingen
Alle machtigingen worden grafisch weergegeven op deze poster. Dit is de eenvoudigste manier om de geneste hiƫrarchie van machtigingen te bekijken. De machtiging ALTER ON LOGIN kan bijvoorbeeld op zichzelf worden verleend, maar deze wordt ook opgenomen als aan een aanmelding de machtiging CONTROL wordt verleend voor die aanmelding of als aan een aanmelding de machtiging ALTER ANY LOGIN wordt verleend.
Standaardmachtigingen
In de volgende lijst worden de standaardmachtigingen beschreven:
Wanneer een aanmelding wordt gemaakt met behulp van de instructie CREATE LOGIN , ontvangt de nieuwe aanmelding de SQL-machtiging CONNECT .
Alle aanmeldingen zijn lid van de openbare serverfunctie en kunnen niet uit de openbare server worden verwijderd.
Wanneer een databasegebruiker wordt gemaakt met behulp van de machtiging CREATE USER , ontvangt de databasegebruiker de machtiging VERBINDEN in de database.
Alle principals, inclusief de openbare rol, hebben standaard geen expliciete of impliciete machtigingen.
Wanneer een aanmelding of gebruiker eigenaar wordt van een database of object, heeft de aanmelding of gebruiker altijd alle machtigingen voor de database of het object. De eigendomsmachtigingen kunnen niet worden gewijzigd en zijn niet zichtbaar als expliciete machtigingen. De instructies GRANT, DENY en REVOKE hebben geen invloed op eigenaren.
De sa-aanmelding heeft alle machtigingen voor het apparaat. Net als bij eigendomsmachtigingen kunnen de sa-machtigingen niet worden gewijzigd en zijn ze niet zichtbaar als expliciete machtigingen. De instructies GRANT, DENY en REVOKE hebben geen invloed op sa-aanmelding . De naam van de sa-aanmelding kan niet worden gewijzigd.
Voor de USE-instructie zijn geen machtigingen vereist. Alle principals kunnen de USE-instructie uitvoeren op elke database.
Voorbeelden: Azure Synapse Analytics and Analytics Platform System (PDW)
A. Een machtiging op serverniveau verlenen voor een aanmelding
De volgende twee instructies verlenen een machtiging op serverniveau voor een aanmelding.
GRANT CONTROL SERVER TO [Ted];
GRANT ALTER ANY DATABASE TO Mary;
B. Een machtiging op serverniveau verlenen voor een aanmelding
Het volgende voorbeeld verleent een machtiging op serverniveau voor een aanmelding aan een server-principal (een andere aanmelding).
GRANT VIEW DEFINITION ON LOGIN::Ted TO Mary;
C. Een machtiging op databaseniveau verlenen aan een gebruiker
In het volgende voorbeeld verleent een gebruiker een machtiging op databaseniveau aan een database-principal (een andere gebruiker).
GRANT VIEW DEFINITION ON USER::[Ted] TO Mary;
D. Een schemamachtiging verlenen, weigeren en intrekken
De volgende GRANT-instructie biedt Yuen de mogelijkheid om gegevens te selecteren uit elke tabel of weergave in het dbo-schema.
GRANT SELECT ON SCHEMA::dbo TO [Yuen];
De volgende DENY-instructie voorkomt dat Yuen gegevens selecteert uit een tabel of weergave in het dbo-schema. Yuen kan de gegevens niet lezen, zelfs niet als hij op een andere manier toestemming heeft, bijvoorbeeld via een rollidmaatschap.
DENY SELECT ON SCHEMA::dbo TO [Yuen];
Met de volgende REVOKE-instructie wordt de machtiging DENY verwijderd. Nu zijn de expliciete machtigingen van Yuen neutraal. Yuen kan mogelijk gegevens uit elke tabel selecteren via een andere impliciete machtiging, zoals een rollidmaatschap.
REVOKE SELECT ON SCHEMA::dbo TO [Yuen];
E. De optionele COMPONENT OBJECT:: demonstreren
Omdat OBJECT de standaardklasse is voor een machtigingsinstructie, zijn de volgende twee instructies hetzelfde. De component OBJECT:: is optioneel.
GRANT UPDATE ON OBJECT::dbo.StatusTable TO [Ted];
GRANT UPDATE ON dbo.StatusTable TO [Ted];