Delen via


Rollen op databaseniveau

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-database in Microsoft Fabric Preview

Voor het eenvoudig beheren van de machtigingen in uw databases biedt SQL Server verschillende rollen die beveiligingsprinciplen zijn die andere principals groeperen. Ze zijn net groepen in het Windows-besturingssysteem. Het machtigingenbereik van rollen op databaseniveau is databasebreed.

Als u gebruikers aan een databaserol wilt toevoegen en verwijderen, gebruikt u de ADD MEMBER en DROP MEMBER opties van de instructie ALTER ROLE . Analytics Platform System (PDW) en Azure Synapse Analytics bieden geen ondersteuning voor het gebruik van ALTER ROLE. Gebruik in plaats daarvan de oudere sp_addrolemember en sp_droprolemember procedures.

Er zijn twee typen rollen op databaseniveau: vaste databaserollen die vooraf zijn gedefinieerd in de database en door de gebruiker gedefinieerde databaserollen die u kunt maken.

Vaste databaserollen worden gedefinieerd op databaseniveau en bestaan in elke database. Leden van de db_owner databaserol kunnen het lidmaatschap van een vaste databaserol beheren. Er zijn ook enkele speciale databaserollen in de msdb database.

U kunt elk databaseaccount en andere SQL Server-rollen toevoegen aan rollen op databaseniveau.

Tip

Voeg geen door de gebruiker gedefinieerde databaserollen toe als leden van vaste rollen. Dit kan onbedoelde escalatie van bevoegdheden inschakelen.

De machtigingen van door de gebruiker gedefinieerde databaserollen kunnen worden aangepast met behulp van de instructies GRANT, DENY en REVOKE . Zie Machtigingen (Database Engine) voor meer informatie.

Zie de poster Machtigingen voor database-engine voor een lijst met alle machtigingen. Machtigingen op serverniveau kunnen niet worden verleend aan databaserollen. Aanmeldingen en andere principals op serverniveau (zoals serverfuncties) kunnen niet worden toegevoegd aan databaserollen. Voor beveiliging op serverniveau in SQL Server gebruikt u in plaats daarvan serverfuncties . Machtigingen op serverniveau kunnen niet worden verleend via rollen in Azure SQL Database en Azure Synapse Analytics.

Vaste databaserollen

In de volgende tabel ziet u de vaste databaserollen en hun mogelijkheden. Deze rollen bestaan in alle databases. Met uitzondering van de openbare database rol kunnen de machtigingen die zijn toegewezen aan de vaste databaserollen niet worden gewijzigd.

Vaste naam van databaserol Description
db_owner Leden van de db_owner vaste databaserol kunnen alle configuratie- en onderhoudsactiviteiten op de database uitvoeren en kunnen ook DROP de database in SQL Server uitvoeren. (In SQL Database en Azure Synapse vereisen sommige onderhoudsactiviteiten machtigingen op serverniveau en kunnen niet worden uitgevoerd door db_owners.)
db_securityadmin Leden van de db_securityadmin vaste databaserol kunnen alleen het rollidmaatschap voor aangepaste rollen wijzigen en machtigingen beheren. Leden van deze rol kunnen hun bevoegdheden mogelijk verhogen en hun acties moeten worden bewaakt.
db_accessadmin Leden van de db_accessadmin vaste databaserol kunnen toegang tot de database voor Windows-aanmeldingen, Windows-groepen en SQL Server-aanmeldingen toevoegen of verwijderen.
db_backupoperator Leden van de db_backupoperator vaste databaserol kunnen een back-up maken van de database.
db_ddladmin Leden van de db_ddladmin vaste databaserol kunnen elke DDL-opdracht (Data Definition Language) uitvoeren in een database. Leden van deze rol kunnen hun bevoegdheden mogelijk verhogen door code te bewerken die kan worden uitgevoerd onder hoge bevoegdheden en hun acties moeten worden bewaakt.
db_datawriter Leden van de db_datawriter vaste databaserol kunnen gegevens toevoegen, verwijderen of wijzigen in alle gebruikerstabellen. In de meeste gevallen wordt deze rol gecombineerd met db_datareader lidmaatschap, zodat de gegevens kunnen worden gelezen die moeten worden gewijzigd.
db_datareader Leden van de db_datareader vaste databaserol kunnen alle gegevens uit alle gebruikerstabellen en weergaven lezen. Gebruikersobjecten kunnen bestaan in elk schema behalve sys en INFORMATION_SCHEMA.
db_denydatawriter Leden van de db_denydatawriter vaste databaserol kunnen geen gegevens in de gebruikerstabellen in een database toevoegen, wijzigen of verwijderen.
db_denydatareader Leden van de db_denydatareader vaste databaserol kunnen geen gegevens lezen uit de gebruikerstabellen en weergaven in een database. Leden van deze rol kunnen ook geen metagegevens lezen over de database en de bijbehorende objecten, zoals het weergeven van systeemweergaven.

De machtigingen die aan de vaste databaserollen zijn toegewezen, kunnen niet worden gewijzigd. Alle rollen (inclusief de public rol) hebben de VERBINDEN-rechten. In de volgende afbeelding ziet u de machtigingen die zijn toegewezen aan de vaste databaserollen:

Rolnaam Permissions
db_owner CONTROL DATABASE: heeft alle machtigingen in de database.
db_securityadmin ELKE TOEPASSINGSROL WIJZIGEN
SCHEMA MAKEN
ELKE ROL WIJZIGEN
DEFINITIE WEERGEVEN
db_accessadmin WILLEKEURIGE GEBRUIKER WIJZIGEN
SCHEMA MAKEN
GEBRUIKER AANMAKEN
db_backupoperator BACK-UP DATABASE
BACKUPLOG
CHECKPOINT
db_ddladmin WIJZIGEN VAN ELKE SAMENSTELLING
ASYMMETRISCHE SLEUTEL WIJZIGEN
ELK CERTIFICAAT WIJZIGEN
EEN CONTRACT WIJZIGEN
EEN DDL-TRIGGER VOOR DATABASES WIJZIGEN
ELKE MELDING VOOR DATABASE-GEBEURTENIS WIJZIGEN
ELKE DATASPACE WIJZIGEN
IEDERE EXTERNE BIBLIOTHEEK WIJZIGEN
ELKE VOLLEDIGE TEKSTCATALOGUS WIJZIGEN
ELK BERICHTTYPE WIJZIGEN
EEN EXTERNE SERVICEBINDING WIJZIGEN
ELKE ROUTE WIJZIGEN
EEN SCHEMA WIJZIGEN
ELKE SERVICE WIJZIGEN
ELKE SYMMETRISCHE SLEUTEL WIJZIGEN
CHECKPOINT
AGGREGATIE MAKEN
MAAK ASSEMBLY AAN
ASYMMETRISCHE SLEUTEL MAKEN
CERTIFICAAT MAKEN
CONTRACT MAKEN
DDL-GEBEURTENISMELDING VOOR DATABASE MAKEN
STANDAARD MAKEN
EXTERNE BIBLIOTHEEK MAKEN
VOLLEDIGE TEKSTCATALOGUS MAKEN
MAAK FUNCTIE AAN
BERICHTTYPE MAKEN
Aanmaken van procedure
WACHTRIJ MAKEN
EXTERNE SERVICEBINDING MAKEN
Maak route aan
REGEL MAKEN
SCHEMA MAKEN
SERVICE CREËREN
SYMMETRISCHE SLEUTEL MAKEN
SYNONIEM MAKEN
CREATE TABLE
TYPE AANMAKEN
VIEW AANMAKEN
XML-SCHEMAVERZAMELING MAKEN
VERWIJZINGEN

Van toepassing op: SQL Server 2019 en hoger
EEN EXTERNE TAAL WIJZIGEN
EXTERNE TAAL AANMAKEN

Van toepassing op: SQL Server 2022 en hoger
ELKE EXTERNE GEGEVENSBRON WIJZIGEN
WIJZIGEN VAN ELKE EXTERNE BESTANDSINDELING
Elke externe taak wijzigen
EEN EXTERNE STREAM WIJZIGEN
ALTER LEDGER
GROOTBOEK INSCHAKELEN
db_datareader GRANT SELECT ON DATABASE::<database-name>
db_denydatareader SELECT ON DATABASE WEIGEREN::<database-name>
db_datawriter INVOEGEN OP DATABASE::<database-name>
UPDATE-TOESTEMMING VERLENEN OP DATABASE::<database-name>
VERWIJDEREN VERLENEN AAN DATABASE::<database-name>
db_denydatawriter INVOEGEN IN DATABASE WEIGEREN::<database-name>
UPDATE VAN DATABASE WEIGEREN::<database-name>
ONTKENNEN VERWIJDEREN OP DATABASE::<database-name>
public Er zijn geen machtigingen op databaseniveau die inherent zijn aan de rol openbare database. Sommige databasemachtigingen zijn echter standaard aanwezig. BEKIJK ALLE KOLOMVERSLEUTELINGSLEUTELDEFINITIE, BEKIJK ALLE KOLOMHOOFDSLEUTELDEFINITIE en SELECTEER de machtiging VOOR VELE INDIVIDUELE systeemtabellen. Deze machtigingen kunnen worden ingetrokken.

Speciale rollen voor Azure SQL Database en Azure Synapse

Deze databaserollen bestaan alleen in de virtuele master database. Hun machtigingen zijn beperkt tot acties die worden uitgevoerd in master. Alleen databasegebruikers in master kunnen aan deze rollen worden toegevoegd. Aanmeldingen kunnen niet worden toegevoegd aan deze rollen, maar gebruikers kunnen worden gemaakt op basis van aanmeldingen en vervolgens kunnen deze gebruikers worden toegevoegd aan de rollen. Ingesloten databasegebruikers in master kunnen ook aan deze rollen worden toegevoegd. Ingesloten databasegebruikers die zijn toegevoegd aan de dbmanager-rolmaster kunnen echter niet worden gebruikt om nieuwe databases te maken.

Rolnaam Description
dbmanager Kan databases maken en verwijderen. Een lid van de dbmanager-rol die een database maakt, wordt de eigenaar van die database, waardoor die gebruiker verbinding kan maken met die database als dbo-gebruiker. De dbo-gebruiker heeft alle databasemachtigingen in de database. Leden van de rol dbmanager hebben niet noodzakelijkerwijs machtigingen voor toegang tot databases waarvan ze geen eigenaar zijn.
db_exporter Leden van de db_exporter vaste databaserol kunnen alle gegevensexportactiviteiten uitvoeren. Machtigingen verleend via deze rol zijn CREATE TABLE, , , ALTER ANY SCHEMA. ALTER ANY EXTERNAL DATA SOURCEALTER ANY EXTERNAL FILE FORMAT

Van toepassing op: Toegewezen SQL-pools van Azure Synapse Analytics (voorheen SQL DW)
loginmanager Kan aanmeldingen maken en verwijderen in de virtuele master database.

Note

De principal op serverniveau en de Microsoft Entra-beheerder (indien geconfigureerd) hebben alle machtigingen in SQL Database en Azure Synapse Analytics zonder lid te hoeven zijn van rollen. Zie Databasetoegang autoriseren tot SQL Database, SQL Managed Instance en Azure Synapse Analytics voor meer informatie.

Sommige databaserollen zijn niet van toepassing op Azure SQL of Azure Synapse:

  • db_backupoperator niet van toepassing is in Azure SQL Database (niet Azure SQL Managed Instance) en een serverloze Azure Synapse Analytics-pool omdat T-SQL-opdrachten voor back-up en herstel niet beschikbaar zijn.

  • db_datawriter en db_denydatawriter niet van toepassing zijn op serverloze Azure Synapse Analytics, omdat er alleen externe gegevens worden gelezen.

Rollen in msdb-database

De msdb database bevat de rollen voor speciaal gebruik die worden weergegeven in de volgende tabel.

msdb rolnaam Description
db_ssisadmin
db_ssisoperator
db_ssisltduser
Leden van deze databaserollen kunnen SSIS beheren en gebruiken. Exemplaren van SQL Server die zijn bijgewerkt vanaf een eerdere versie, bevatten mogelijk een oudere versie van de rol die is benoemd met behulp van Data Transformation Services (DTS) in plaats van SSIS. Zie Integration Services Roles (SSIS Service) voor meer informatie.
dc_admin
dc_operator
dc_proxy
Leden van deze databaserollen kunnen de gegevensverzamelaar beheren en gebruiken. Zie Gegevensverzamelingvoor meer informatie.
PolicyAdministratorRole Leden van de databaserol db_ PolicyAdministratorRole kunnen alle configuratie- en onderhoudsactiviteiten uitvoeren voor beleid-gebaseerd beheer en beleidsvoorwaarden. Zie Servers beheren met behulp van op beleid gebaseerd beheer voor meer informatie.
ServerGroupAdministratorRole
ServerGroupReaderRole
Leden van deze databaserollen kunnen geregistreerde servergroepen beheren en gebruiken.
dbm_monitor Gemaakt in de msdb database wanneer de eerste database is geregistreerd in Database Mirroring Monitor. De rol dbm_monitor heeft geen leden totdat een systeembeheerder gebruikers aan de rol toewijst.

Leden van de db_ssisadmin-rol en de rol dc_admin kunnen mogelijk hun bevoegdheden verhogen naar sysadmin. Deze uitbreiding van bevoegdheden kan optreden omdat deze rollen Integration Services-pakketten kunnen wijzigen en deze pakketten door SQL Server kunnen worden uitgevoerd met behulp van de beveiligingscontext sysadmin van SQL Server Agent. Als u deze uitbreiding van bevoegdheden wilt voorkomen bij het uitvoeren van onderhoudsplannen, gegevensverzamelingssets en andere Integration Services-pakketten, configureert u SQL Server Agent-taken die pakketten uitvoeren om een proxyaccount met beperkte bevoegdheden te gebruiken of voegt u alleen sysadmin--leden toe aan de db_ssisadmin- en dc_admin-rollen.

Werken met rollen op databaseniveau

In de volgende tabel worden de opdrachten, weergaven en functies voor het werken met rollen op databaseniveau uitgelegd.

Feature Type Description
sp_helpdbfixedrole Metadata Retourneert een lijst met de vaste databaserollen.
sp_dbfixedrolepermission Metadata Geeft de machtigingen van een vaste databaserol weer.
sp_helprole Metadata Retourneert informatie over de rollen in de huidige database.
sp_helprolemember Metadata Retourneert informatie over de leden van een rol in de huidige database.
sys.database_role_members Metadata Retourneert één rij voor elk lid van elke databaserol.
IS_MEMBER Metadata Geeft aan of de huidige gebruiker lid is van de opgegeven Microsoft Windows-groep, Microsoft Entra-groep of Microsoft SQL Server-databaserol.
ROL AANMAKEN Command Hiermee maakt u een nieuwe databaserol in de huidige database.
ALTER ROLE Command Hiermee wijzigt u de naam of het lidmaatschap van een databaserol.
DROP ROLE Command Hiermee verwijdert u een rol uit de database.
sp_addrole Command Hiermee maakt u een nieuwe databaserol in de huidige database.
sp_droprole Command Hiermee verwijdert u een databaserol uit de huidige database.
sp_addrolemember Command Voegt een databasegebruiker, databaserol, Windows-aanmelding of Windows-groep toe aan een databaserol in de huidige database. Alle platforms, behalve Analytics Platform System (PDW) en Azure Synapse, moeten in plaats daarvan ALTER ROLE gebruiken.
sp_droprolemember Command Hiermee verwijdert u een beveiligingsaccount uit een SQL Server-functie in de huidige database. Alle platforms, behalve Analytics Platform System (PDW) en Azure Synapse, moeten in plaats daarvan ALTER ROLE gebruiken.
GRANT Permissions Hiermee voegt u machtigingen toe aan een rol.
DENY Permissions Een machtiging voor een rol wordt geweigerd.
REVOKE Permissions Hiermee verwijdert u eerder verleende of geweigerde machtigingen.

Rol openbare database

Elke databasegebruiker behoort tot de publieke database rol. Wanneer een gebruiker geen specifieke machtigingen voor een beveiligbaar object heeft gekregen of geweigerd, erft de gebruiker de machtigingen die aan openbaar voor dat object zijn verleend. Databasegebruikers kunnen niet worden verwijderd uit de openbare rol.

Examples

In de voorbeelden in deze sectie ziet u hoe u kunt werken met rollen op databaseniveau.

A. Een gebruiker toevoegen aan een rol op databaseniveau

In het volgende voorbeeld wordt de gebruiker 'Ben' toegevoegd aan de rol db_datareaderop vast databaseniveau.

ALTER ROLE db_datareader ADD MEMBER Ben;
GO

B. Alle database-principals weergeven die lid zijn van een rol op databaseniveau

Met de volgende instructie worden alle leden van welke databaserol dan ook geretourneerd.

SELECT roles.principal_id AS RolePrincipalID,
    roles.name AS RolePrincipalName,
    database_role_members.member_principal_id AS MemberPrincipalID,
    members.name AS MemberPrincipalName
FROM sys.database_role_members AS database_role_members
INNER JOIN sys.database_principals AS roles
    ON database_role_members.role_principal_id = roles.principal_id
INNER JOIN sys.database_principals AS members
    ON database_role_members.member_principal_id = members.principal_id;
GO