Behörigheter: GRANT, DENY, REVOKE

gäller för:Azure Synapse AnalyticsAnalytics Platform System (PDW)SQL-analysslutpunkt i Microsoft FabricWarehouse i Microsoft Fabric

Använd GRANT och DENY satser för att ge eller neka en behörighet (såsom UPDATE) på en securable (såsom en databas, tabell, vy, etc.) till en säkerhetschef (en inloggning, en databasanvändare eller en databasroll). Använd REVOKE för att ta bort beviljandet eller neka ett tillstånd.

Behörigheter på servernivå tillämpas på inloggningar. Behörigheter på databasnivå tillämpas på databasanvändare och databasroller.

Om du vill se vilka behörigheter som har beviljats och nekats frågar du vyerna sys.server_permissions och sys.database_permissions. Behörigheter som inte uttryckligen beviljas eller nekas till ett säkerhetsobjekt kan ärvas genom att ha medlemskap i en roll som har behörigheter. Behörigheterna för de fasta databasrollerna kan inte ändras och visas inte i vyerna sys.server_permissions och sys.database_permissions.

  • GRANT Ger uttryckligen en eller flera behörigheter.

  • DENY Förnekar uttryckligen huvudmannen att ha en eller flera tillstånd.

  • REVOKE tar bort befintliga GRANT eller DENY behörigheter.

Transact-SQL syntaxkonventioner

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  
}  

Argument

<behörighet>[ ,...n ]
En eller flera behörigheter för att bevilja, neka eller återkalla.

ON [ <class_type> :: ] satsen ON beskriver den skyddsbara parameter som behörigheter ska beviljas, nekas eller återkallas på.

<class_type> Klasstypen för den säkra. Detta kan vara LOGIN, DATABASE, OBJEKT,SCHEMA , ROLE, eller USER. Behörigheter kan också beviljas till SERVERclass_type, men SERVER- har inte angetts för dessa behörigheter. DATABASE anges inte när tillståndet inkluderar ordet DATABASE (till exempel ALTER ANY DATABASE). När ingen class_type har angetts och behörighetstypen inte är begränsad till server- eller databasklassen antas klassen vara OBJECT.


Namnet på inloggningen, databasen, tabellen, vyn, schemat, proceduren, rollen eller användaren som du vill bevilja, neka eller återkalla behörigheter på. Objektnamnet kan anges med namngivningsregler i tre delar som beskrivs i Transact-SQL syntaxkonventioner.

ATT huvudnamn [ ,...n ]
Ett eller flera huvudkonton beviljas, nekas eller återkallas. Huvudnamn är namnet på en inloggnings-, databasanvändares eller databasroll.

FRÅN huvudnamn [ ,...n ]
Ett eller flera huvudnamn att återkalla behörigheter från. Huvudnamn är namnet på en inloggnings-, databasanvändares eller databasroll. FROM kan endast användas med ett REVOKE uttalande. TO kan användas med GRANT, DENY, eller REVOKE.

MED GRANT OPTION
Anger att den beviljande också kommer att ges möjlighet att bevilja den angivna behörigheten till andra huvudkonton.

KASKAD
Anger att behörigheten nekas eller återkallas till det angivna huvudkontot och till alla andra huvudnamn som huvudkontot har beviljat behörigheten till. Krävs när huvudpersonen har tillstånd med GRANT OPTION.

GRANT ALTERNATIV FÖR
Anger att möjligheten att bevilja den angivna behörigheten kommer att återkallas. Detta krävs när du använder argumentet CASCADE.

Viktig

Om huvudmannen har det angivna tillståndet utan alternativet GRANT , kommer själva tillståndet att dras in.

Behörigheter

För att bevilja ett tillstånd måste givaren antingen ha själva tillståndet med MED-ALTERNATIVET GRANT , eller ha ett högre tillstånd som innebär att tillståndet beviljas. Objektägare kan bevilja behörigheter för de objekt de äger. Huvudkonton med CONTROL- behörighet för en skyddsbar kan bevilja behörighet för den skyddsbara filen. Medlemmar i db_owner- och db_securityadmin fasta databasroller kan ge alla behörigheter i databasen.

Allmänna kommentarer

Neka eller återkalla behörigheter till ett huvudnamn påverkar inte begäranden som har godkänts och körs för närvarande. Om du vill begränsa åtkomsten omedelbart måste du avbryta aktiva begäranden eller avsluta aktuella sessioner.

Not

De flesta fasta serverroller är inte tillgängliga i den här versionen. Använd användardefinierade databasroller i stället. Inloggningar kan inte läggas till i sysadmin fast serverroll. Om du beviljar KONTROLLSERVER behörighet uppskattas medlemskapet i sysadmin fast serverroll.

Vissa instruktioner kräver flera behörigheter. Till exempel krävs CREATE TABLE behörigheter i databasen för att skapa en tabell, samt behörigheter ALTER SCHEMA för tabellen som ska innehålla tabellen.

Analytics Platform System (PDW) kör ibland lagrade procedurer för att distribuera användaråtgärder till beräkningsnoderna. Därför kan inte körningsbehörigheten för en hel databas nekas. (Till exempel misslyckas DENY EXECUTE ON DATABASE::<name> TO <user>;.) Som en lösning nekar du körningsbehörigheten till användarscheman eller specifika objekt (procedurer).

I Microsoft Fabric kan de CREATE USER för närvarande inte exekveras explicit. När GRANT eller DENY körs kommer användaren att skapas automatiskt.

I Microsoft Fabric är behörigheter på servernivå inte hanterbara.

Implicita och explicita behörigheter

En uttrycklig behörighet är en behörighet av typen GRANT eller DENY som ges till ett säkerhetsobjekt genom en sats av typen GRANT eller DENY.

En implicit behörighet är en GRANT eller DENY behörighet som en huvudperson (inloggning, användare eller databasroll) har ärvt från en annan databasroll.

En implicit behörighet kan också ärvas från en överordnad eller överordnad behörighet. Till exempel UPDATE kan behörighet på en tabell ärvas genom att ha UPDATE behörighet på schemat som innehåller tabellen, eller CONTROL-behörighet på tabellen.

Ägarskapslänkning

När flera databasobjekt kommer åt varandra sekventiellt kallas sekvensen för en -kedja. Även om sådana kedjor inte finns oberoende av varandra, utvärderar SQL Server behörigheter för de ingående objekten på ett annat sätt när SQL Server passerar länkarna i en kedja än om de skulle komma åt objekten separat. Ägarskapslänkning har viktiga konsekvenser för att hantera säkerheten. Mer information om ägarskapskedjor finns i Ägarskapskedjor och Självstudie: Ägarskapskedjor och Kontextväxling.

Behörighetslista

Behörigheter på servernivå

Behörigheter på servernivå kan beviljas, nekas och återkallas från inloggningar.

behörigheter som gäller för servrar

  • KONTROLLSERVER

  • ADMINISTRERA MASSÅTGÄRDER

  • ÄNDRA ALLA ANSLUTNINGAR

  • ÄNDRA NÅGON DATABASE

  • SKAPA VALFRITT DATABASE

  • ÄNDRA NÅGON EXTERNAL DATA SOURCE

  • ÄNDRA NÅGON EXTERNAL FILE FORMAT

  • ÄNDRA NÅGON LOGIN

  • ÄNDRA SERVERTILLSTÅND

  • ANSLUT SQL

  • VIEW VALFRI DEFINITION

  • VIEW NÅGON DATABASE

  • VIEW SERVERTILLSTÅND

behörigheter som gäller för inloggningar

  • STYRNING PÅ LOGIN

  • ALTER ON LOGIN

  • IMITERA PÅ LOGIN

  • VIEW DEFINITION

Behörigheter på databasnivå

Behörigheter på databasnivå kan beviljas, nekas och återkallas från databasanvändare och användardefinierade databasroller.

behörigheter som gäller för alla databasklasser

  • KONTROLL

  • ÄNDRA

  • VIEW DEFINITION

behörigheter som gäller för alla databasklasser utom användare

  • TA ÄGARSKAP

behörigheter som endast gäller för databaser

  • ÄNDRA NÅGON DATABASE

  • ALTER ON DATABASE

  • ÄNDRA ALLA DATARYMDER

  • ÄNDRA NÅGON ROLE

  • ÄNDRA NÅGON SCHEMA

  • ÄNDRA NÅGON USER

  • BACKUP DATABASE

  • KOPPLA UPP DATABASE

  • CREATE PROCEDURE

  • CREATE ROLE

  • CREATE SCHEMA

  • CREATE TABLE

  • CREATE VIEW

  • SHOWPLAN

behörigheter som endast gäller för användare

  • PERSONIFIERA

behörigheter som gäller för databaser, scheman och objekt

  • ÄNDRA

  • DELETE

  • UTFÖRA

  • INSERT

  • UTVALD

  • UPDATE

  • REFERENSER

En definition av varje typ av behörighet finns i Behörigheter (databasmotor).

Standardbehörigheter

I följande lista beskrivs standardbehörigheterna:

  • När en inloggning skapas med satsen CREATE LOGIN får den nya inloggningen CONNECT SQL-behörigheten .

  • Alla inloggningar är medlemmar i den offentliga serverrollen och kan inte tas bort från offentliga.

  • När en databasanvändare skapas med hjälp av behörigheten CREATE USER får databasanvändaren CONNECT-behörigheten i databasen.

  • Alla huvudnamn, inklusive offentliga roll, har som standard inga explicita eller implicita behörigheter.

  • När en inloggning eller användare blir ägare till en databas eller ett objekt har inloggningen eller användaren alltid alla behörigheter för databasen eller objektet. Ägarskapsbehörigheterna kan inte ändras och visas inte som explicita behörigheter. , , och REVOKE uttalandena GRANTDENYhar ingen effekt på ägarna.

  • Inloggningen sa har alla behörigheter för installationen. På samma sätt som ägarskapsbehörigheter kan sa behörigheter inte ändras och visas inte som explicita behörigheter. , GRANTDENY, och REVOKE satserna har ingen effekt på sa-inloggning. Det går inte att byta namn på sa inloggning.

  • Instruktionen USE kräver inte behörigheter. Alla huvudnamn kan köra instruktionen USE på valfri databas.

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

A. Bevilja en servernivå behörighet till en inloggning

Följande två instruktioner ger en servernivå behörighet till en inloggning.

GRANT CONTROL SERVER TO [Ted];  
GRANT ALTER ANY DATABASE TO Mary;  

B. Bevilja en servernivå behörighet till en inloggning

I följande exempel ges en behörighet på servernivå vid en inloggning till ett serverhuvudnamn (en annan inloggning).

GRANT  VIEW DEFINITION ON LOGIN::Ted TO Mary;  

C. Bevilja en användare behörighet på databasnivå

I följande exempel ges en behörighet på databasnivå för en användare till ett databashuvudnamn (en annan användare).

GRANT VIEW DEFINITION ON USER::[Ted] TO Mary;  

D. Bevilja, neka och återkalla en schemabehörighet

Följande GRANT formulering ger Yuen möjlighet att välja data från vilken tabell eller vy som helst i dbo-schemat.

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

Följande DENY sats förhindrar att Yuen väljer data från någon tabell eller vy i dbo-schemat. Yuen kan inte läsa data även om han har behörighet på något annat sätt, till exempel genom ett rollmedlemskap.

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

Följande REVOKE uttalande tar bort behörigheten DENY . Nu är Yuens explicita behörigheter neutrala. Yuen kanske kan välja data från valfri tabell via någon annan implicit behörighet, till exempel ett rollmedlemskap.

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

E. Demonstrerar den valfria OBJECT:: -satsen

Eftersom OBJECT är standardklassen för en behörighetsinstruktion är följande två instruktioner desamma. Satsen OBJECT:: är valfri.

GRANT UPDATE ON OBJECT::dbo.StatusTable TO [Ted];  
GRANT UPDATE ON dbo.StatusTable TO [Ted];