Machtigingen: VERLENEN, WEIGEREN, INTREKKEN
van toepassing op:Azure Synapse Analytics
Analytics Platform System (PDW)
SQL Analytics-eindpunt in Microsoft Fabric
Warehouse 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];