Toestemmingen: GRANT, DENY, REVOKE

van toepassing op:Azure Synapse AnalyticsAnalytics Platform System (PDW)SQL Analytics-eindpunt in Microsoft FabricWarehouse in Microsoft Fabric

Gebruik GRANT en DENY statements om een toestemming (zoals UPDATE) te verlenen of te weigeren op een beveiligingsprincipe (zoals een database, tabel, weergave, enz.) aan een beveiligingsprincipal (een login, databasegebruiker of databaserol). Gebruik REVOKE om de toekenning of weigering van een toestemming 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 aan een beveiligingsprincipaal worden verleend of geweigerd, kunnen worden overgenomen door lidmaatschap van een rol met machtigingen. De machtigingen van de vaste databaserollen kunnen niet worden gewijzigd en worden niet weergegeven in de sys.server_permissions- en sys.database_permissions weergaven.

  • GRANT Geeft expliciet één of meer toestemmingen.

  • DENY ontzegt expliciet dat de principaal één of meer rechten krijgt.

  • REVOKE verwijdert bestaande GRANT of DENY permissies.

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

<machtiging>[ ,...n ]
Een of meer machtigingen voor het verlenen, weigeren of intrekken.

ON [ <class_type> :: ] beveiligbare De component ON beschrijft de beveiligbare parameter voor het verlenen, weigeren of intrekken van machtigingen.

<class_type> Het klassetype van het beveiligbare. Dit kan , DATABASE, OBJECT,SCHEMA , ROLE, of , zijnLOGINUSER. Machtigingen kunnen ook worden verleend aan de SERVER-class_type, maar SERVER- is niet opgegeven voor deze machtigingen. DATABASE wordt niet gespecificeerd wanneer de toestemming 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 wordt OBJECT.

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.

principal [ ,...n ]
Een of meer principals worden verleend, geweigerd of ingetrokken. Principal is de naam van een aanmeldings-, databasegebruiker- of databaserol.

VAN directeur [ ,... n ]
Een of meer principals waaruit u machtigingen wilt intrekken. Principal is de naam van een aanmeldings-, databasegebruiker- of databaserol. FROM kan alleen met een REVOKE statement worden gebruikt. TO kan worden gebruikt met GRANT, DENY, of REVOKE.

MET GRANT OPTIE
Geeft aan dat de toekenning ook de mogelijkheid krijgt om de opgegeven machtiging te verlenen aan andere principals.

CASCADE
Geeft aan dat de machtiging wordt geweigerd of ingetrokken voor de opgegeven principal en aan alle andere principals waaraan de principal de machtiging heeft verleend. Vereist wanneer de directeur toestemming heeft bij GRANT OPTION.

GRANT OPTIE 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 opdrachtgever de gespecificeerde toestemming heeft zonder die GRANT optie, wordt de toestemming zelf ingetrokken.

Machtigingen

Om een vergunning te verlenen, moet de verstrekker ofwel de toestemming zelf hebben met de WITH-OPTIE GRANT , of een hogere toestemming die impliceert dat de toestemming wordt verleend. Objecteigenaren kunnen machtigingen verlenen voor de objecten die ze bezitten. Principals met CONTROL- machtiging voor een beveiligbaar apparaat kunnen machtigingen verlenen voor die beveiligbare machtiging. 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 sysadmin vaste serverfunctie. Als u de CONTROL SERVER machtiging verleent, wordt het lidmaatschap van de sysadmin vaste serverfunctie geschat.

Voor sommige instructies zijn meerdere machtigingen vereist. Bijvoorbeeld, om een tabel te maken zijn de rechten in de database vereist CREATE TABLE , en de ALTER SCHEMA toestemming voor de tabel die de tabel zal bevatten.

Analytics Platform System (PDW) voert soms opgeslagen procedures uit om gebruikersacties naar de rekenknooppunten te distribueren. De uitvoermachtiging voor een hele database kan daarom niet worden geweigerd. (Bijvoorbeeld DENY EXECUTE ON DATABASE::<name> TO <user>; mislukt.) Als tijdelijke oplossing kunt u de uitvoermachtiging voor gebruikersschema's of specifieke objecten (procedures) weigeren.

In Microsoft Fabric kan momenteel niet expliciet CREATE USER worden uitgevoerd. Wanneer GRANT of DENY wordt uitgevoerd, wordt de gebruiker automatisch aangemaakt.

In Microsoft Fabric kunnen machtigingen op serverniveau niet worden beheerd.

Impliciete en expliciete machtigingen

Een expliciete toestemming is een GRANT- of DENY-toestemming die aan een principal wordt verleend door een GRANT- of DENY-instructie.

Een impliciete toestemming is een GRANT of DENY een permissie die een principal (login, gebruiker of databaserol) heeft geërfd van een andere databaserol.

Een impliciete machtiging kan ook worden overgenomen van een dekkings- of bovenliggende machtiging. Bijvoorbeeld, UPDATE toestemming op een tabel kan worden geërfd door toestemming te hebben UPDATE op het schema dat de tabel bevat, of CONTROL-toestemming op de tabel.

Eigendomsketen

Wanneer meerdere databaseobjecten elkaar opeenvolgend openen, wordt de reeks een ketengenoemd. Hoewel dergelijke ketens niet onafhankelijk bestaan, evalueert SQL Server, wanneer SQL Server de koppelingen in een keten doorkruist, machtigingen voor de samenstellende objecten anders dan wanneer het de objecten afzonderlijk zou openen. Eigendomsketen heeft belangrijke gevolgen voor het beheren van beveiliging. Zie voor meer informatie over eigendomsketens eigendomsketens en zelfstudie: Eigendomsketens en contextwisselingen.

Lijst met machtigingen

Machtigingen op serverniveau

Machtigingen op serverniveau kunnen worden verleend, geweigerd en ingetrokken voor aanmeldingen.

machtigingen die van toepassing zijn op servers

  • besturingsserver

  • BULKBEWERKINGEN BEHEREN

  • ELKE VERBINDING WIJZIGEN

  • WIJZIG EEN DATABASE

  • MAAK ELKE DATABASE

  • WIJZIG EEN EXTERNAL DATA SOURCE

  • WIJZIG EEN EXTERNAL FILE FORMAT

  • WIJZIG EEN LOGIN

  • STATUS VAN ALTER SERVER

  • VERBINDING MAKEN MET SQL

  • VIEW ELKE DEFINITIE

  • VIEW ELKE DATABASE

  • VIEW SERVERSTATUS

machtigingen die van toepassing zijn op aanmeldingen

  • BEDIENING AAN LOGIN

  • ALTER ON LOGIN

  • IMITEER AAN LOGIN

  • VIEW DEFINITIE

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

  • BEHEERSEN

  • VERANDEREN

  • VIEW DEFINITIE

machtigingen die van toepassing zijn op alle databaseklassen, met uitzondering van gebruikers

  • EIGENAAR

machtigingen die alleen van toepassing zijn op databases

  • WIJZIG EEN DATABASE

  • ALTER ON DATABASE

  • ELKE DATASPACE WIJZIGEN

  • WIJZIG EEN ROLE

  • WIJZIG EEN SCHEMA

  • WIJZIG EEN USER

  • BACKUP DATABASE

  • VERBIND JE DATABASE

  • CREATE PROCEDURE

  • CREATE ROLE

  • CREATE SCHEMA

  • 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

  • VERANDEREN

  • DELETE

  • EXECUTEREN

  • INSERT

  • SELECTEREN

  • UPDATE

  • VERWIJZINGEN

Zie Machtigingen (Database Engine)voor een definitie van elk type machtiging.

Standaardmachtigingen

In de volgende lijst worden de standaardmachtigingen beschreven:

  • Wanneer een login wordt aangemaakt met behulp van de CREATE LOGIN instructie, ontvangt de nieuwe login de CONNECT SQL-machtiging .

  • Alle aanmeldingen zijn lid van de openbare-serverfunctie en kunnen niet worden verwijderd uit openbare.

  • Wanneer een databasegebruiker wordt aangemaakt met behulp van de CREATE USER recht, ontvangt de databasegebruiker de CONNECT-machtiging 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 GRANT, DENY, en verklaringen REVOKE hebben geen effect op eigenaren.

  • De sa aanmelding heeft alle machtigingen op het apparaat. Net als bij eigendomsmachtigingen kunnen de sa machtigingen niet worden gewijzigd en zijn ze niet zichtbaar als expliciete machtigingen. De GRANT, DENY, en REVOKE instructies hebben geen effect op SA-login . De naam van de sa aanmelding kan niet worden gewijzigd.

  • Voor de instructie USE zijn geen machtigingen vereist. Alle principals kunnen de instructie USE uitvoeren op elke database.

Voorbeelden: Azure Synapse Analytics and Analytics Platform System (PDW)

Een. Een machtiging op serverniveau verlenen voor een aanmelding

Met de volgende twee instructies verleent u 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

In het volgende voorbeeld wordt een machtiging op serverniveau verleend voor aanmelding bij 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 wordt een machtiging op databaseniveau aan een gebruiker verleend 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 verklaring geeft 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 uit een tabel of weergave in het dbo-schema kan selecteren. 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];  

De volgende REVOKE verklaring verwijdert de DENY toestemming. De expliciete machtigingen van Yuen zijn nu 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 OBJECT:-component demonstreren

Omdat OBJECT de standaardklasse voor een machtigingsinstructie is, 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];