Delen via


Machtigingen: VERLENEN, WEIGEREN, INTREKKEN

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

Gebruik GRANT en DENY instructies om een machtiging (zoals UPDATE) toe te kennen of te weigeren voor een beveiligbare (zoals een database, tabel, weergave, enzovoort) aan een beveiligingsprincipaal (een aanmelding, een databasegebruiker of een databaserol). Gebruik REVOKE om de toekenning of weigering 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 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 expliciet een of meer machtigingen verleent.

  • DENY expliciet weigert dat de principal een of meer machtigingen heeft.

  • INTREKKEN verwijdert bestaande verlenen of machtigingen 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

<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 zijn LOGIN, DATABASE, OBJECT, SCHEMA, ROLEof USER. 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 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.

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

MET DE OPTIE VERLENEN
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 principal over de machtiging beschikt met OPTIE VERLENEN.

TOEKENNINGSOPTIE 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 grantor de machtiging zelf hebben met de WITH GRANT OPTIONof moet deze een hogere machtiging hebben die impliceert dat de machtiging 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. Als u bijvoorbeeld een tabel wilt maken, hebt u de CREATE TABLE--machtigingen 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 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 de CREATE USER 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 verlenen aan een principal door een GRANT-- of DENY-instructie.

Een impliciete machtiging is een GRANT of DENY machtiging die een principal (aanmelding, gebruiker of databaserol) heeft overgenomen van een andere databaserol.

Een impliciete machtiging kan ook worden overgenomen van een dekkings- of bovenliggende machtiging. machtiging UPDATE voor een tabel kan bijvoorbeeld worden overgenomen door machtiging UPDATE voor het schema met de tabel of CONTROL machtiging voor 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

  • CONTROL SERVER

  • BULKBEWERKINGEN BEHEREN

  • ELKE VERBINDING WIJZIGEN

  • ELKE DATABASE WIJZIGEN

  • EEN DATABASE MAKEN

  • EEN EXTERNE GEGEVENSBRON WIJZIGEN

  • EVENTUELE EXTERNE BESTANDSINDELINGEN WIJZIGEN

  • ELKE AANMELDING WIJZIGEN

  • STATUS VAN ALTER SERVER

  • VERBINDING MAKEN MET SQL

  • ELKE DEFINITIE WEERGEVEN

  • ELKE DATABASE WEERGEVEN

  • SERVERSTATUS WEERGEVEN

machtigingen die van toepassing zijn op aanmeldingen

  • CONTROL ON LOGIN

  • ALTER ON LOGIN

  • AANMELDEN IMITEREN

  • 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

  • BEHEERSEN

  • VERANDEREN

  • DEFINITIE WEERGEVEN

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

  • EIGENAAR

machtigingen die alleen van toepassing zijn op databases

  • ELKE DATABASE WIJZIGEN

  • WIJZIGEN IN DATABASE

  • ELKE DATASPACE WIJZIGEN

  • ELKE ROL WIJZIGEN

  • EEN SCHEMA WIJZIGEN

  • ELKE GEBRUIKER WIJZIGEN

  • BACK-UPDATABASE

  • VERBINDING MAKEN IN DATABASE

  • PROCEDURE MAKEN

  • ROL MAKEN

  • SCHEMA MAKEN

  • CREATE TABLE

  • WEERGAVE MAKEN

  • SHOWPLAN

machtigingen die alleen van toepassing zijn op gebruikers

  • IMITEREN

machtigingen die van toepassing zijn op databases, schema's en objecten

  • VERANDEREN

  • VERWIJDEREN

  • EXECUTEREN

  • INVOEGEN

  • 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 aanmelding wordt gemaakt met behulp van de CREATE LOGIN instructie, ontvangt de nieuwe aanmelding de machtiging CONNECT SQL.

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

  • Wanneer een databasegebruiker wordt gemaakt met behulp van de machtiging CREATE USER, ontvangt de databasegebruiker de machtiging CONNECT 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, DENYen REVOKE instructies hebben geen invloed 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, DENYen REVOKE instructies hebben geen invloed 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 instructie geeft Yuen de mogelijkheid om gegevens te selecteren uit elke tabel of weergave in het dbo-schema.

GRANT SELECT ON SCHEMA::dbo TO [Yuen];  

Met de volgende instructie DENY wordt voorkomen 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 instructie REVOKE wordt de machtiging DENY verwijderd. 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];