Roller på databasnivå

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalysplattformssystem (PDW)SQL-databas i Microsoft Fabric

För att enkelt hantera behörigheterna i dina databaser tillhandahåller SQL Server flera roller som är säkerhetsprincipaler som grupperar andra principer. De är som grupper i Windows-operativsystemet. Roller på databasnivå är databasomfattande i deras behörighetsomfång.

Om du vill lägga till och ta bort användare till en databasroll använder du ADD MEMBER alternativen och DROP MEMBER för ALTER ROLE-instruktionen. Analytics Platform System (PDW) och Azure Synapse Analytics stöder inte användning av ALTER ROLE. Använd de äldre procedurerna sp_addrolemember och sp_droprolemember i stället.

Det finns två typer av roller på databasnivå: fasta databasroller som är fördefinierade i databasen och användardefinierade databasroller som du kan skapa.

Fasta databasroller definieras på databasnivå och finns i varje databas. Medlemmar i db_owner databasrollen kan hantera fast databasrollmedlemskap. Det finns också vissa databasroller för särskilda ändamål i msdb databasen.

Du kan lägga till valfritt databaskonto och andra SQL Server-roller i roller på databasnivå.

Tip

Lägg inte till användardefinierade databasroller som medlemmar i fasta roller. Detta kan möjliggöra oavsiktlig eskalering av privilegier.

Behörigheterna för användardefinierade databasroller kan anpassas med hjälp av uttrycken GRANT, DENY och REVOKE . Mer information finns i Behörigheter (databasmotor).

En lista över alla behörigheter finns i affischen Databasmotorbehörigheter . Behörigheter på servernivå kan inte beviljas till databasroller. Inloggningar och andra huvudnamn på servernivå (till exempel serverroller) kan inte läggas till i databasroller. För säkerhet på servernivå i SQL Server använder du serverroller i stället. Behörigheter på servernivå kan inte beviljas via roller i Azure SQL Database och Azure Synapse Analytics.

Fasta databasroller

I följande tabell visas de fasta databasrollerna och deras funktioner. Dessa roller finns i alla databaser. Förutom den offentliga databasrollen kan behörigheterna som tilldelats till de fasta databasrollerna inte ändras.

Fastställd databasrollnamn Description
db_owner Medlemmar i db_owner fasta databasrollen kan utföra alla konfigurations- och underhållsaktiviteter på databasen och kan även DROP databasen i SQL Server. (I SQL Database och Azure Synapse kräver vissa underhållsaktiviteter behörigheter på servernivå och kan inte utföras av db_owners.)
db_securityadmin Medlemmar i db_securityadmin fast databasroll kan ändra rollmedlemskap endast för anpassade roller och hantera behörigheter. Medlemmar i den här rollen kan potentiellt höja sina privilegier och deras åtgärder bör övervakas.
db_accessadmin Medlemmar i db_accessadmin fast databasroll kan lägga till eller ta bort åtkomst till databasen för Windows-inloggningar, Windows-grupper och SQL Server-inloggningar.
db_backupoperator Medlemmar i den db_backupoperator fasta databasrollen kan säkerhetskopiera databasen.
db_ddladmin Medlemmar i db_ddladmin fast databasroll kan köra valfritt DDL-kommando (Data Definition Language) i en databas. Medlemmar i den här rollen kan potentiellt höja sina privilegier genom att manipulera kod som kan köras under hög behörighet och deras åtgärder bör övervakas.
db_datawriter Medlemmar i den db_datawriter fasta databasrollen kan lägga till, ta bort eller ändra data i alla användartabeller. I de flesta fall kombineras den här rollen med db_datareader medlemskap för att tillåta läsning av de data som ska ändras.
db_datareader Medlemmar i db_datareader fast databasroll kan läsa alla data från alla användartabeller och vyer. Användarobjekt kan finnas i valfritt schema utom sys och INFORMATION_SCHEMA.
db_denydatawriter Medlemmar i db_denydatawriter fast databasroll kan inte lägga till, ändra eller ta bort data i användartabellerna i en databas.
db_denydatareader Medlemmar i db_denydatareader fast databasroll kan inte läsa några data från användartabeller och vyer i en databas. Medlemmar i den här rollen kan inte heller läsa metadata om databasen och dess objekt, till exempel visa systemvyer.

Behörigheterna som tilldelats till de fasta databasrollerna kan inte ändras. Alla roller (inklusive public rollen) har CONNECT-behörigheter. Följande bild visar de behörigheter som tilldelats till de fasta databasrollerna:

Rollnamn Permissions
db_owner KONTROLLDATABAS: Har alla behörigheter i databasen.
db_securityadmin ÄNDRA VILKEN PROGRAMROLL SOM HELST
SKAPA SCHEMA
ÄNDRA VILKEN ROLL SOM HELST
Visa definition
db_accessadmin ÄNDRA ALLA ANVÄNDARE
SKAPA SCHEMA
SKAPA ANVÄNDARE
db_backupoperator SÄKERHETSKOPIERINGSDATABAS
SÄKERHETSKOPIERINGSLOGG
CHECKPOINT
db_ddladmin ÄNDRA ALLA SAMMANSÄTTNINGAR
ÄNDRA ASYMMETRISK NYCKEL
ÄNDRA ALLA CERTIFIKAT
ÄNDRA ALLA KONTRAKT
ÄNDRA VALFRI DATABAS-DDL-UTLÖSARE
ÄNDRA EVENTUELLA DATABASHÄNDELSEMEDDELANDEN
ÄNDRA ALLA DATARYMDER
ÄNDRA ALLA EXTERNA BIBLIOTEK
ÄNDRA ALLA FULLTEXTKATALOGER
ÄNDRA VALFRI MEDDELANDETYP
ÄNDRA ALLA FJÄRRTJÄNSTBINDNINGAR
ÄNDRA VALFRI VÄG
ÄNDRA VALFRITT SCHEMA
ÄNDRA ALLA TJÄNSTER
ÄNDRA EN SYMMETRISK NYCKEL
CHECKPOINT
SKAPA AGGREGERING
SKAPA SAMMANSÄTTNING
SKAPA ASYMMETRISK NYCKEL
SKAPA CERTIFIKAT
SKAPA KONTRAKT
SKAPA HÄNDELSEMEDDELANDE FÖR DATABAS-DDL
SKAPA STANDARD
SKAPA EXTERNT BIBLIOTEK
SKAPA FULLTEXTKATALOG
SKAPA FUNKTION
SKAPA MEDDELANDETYP
LAGRA PROCEDUR
SKAPA KÖ
SKAPA FJÄRRTJÄNSTBINDNING
SKAPA VÄG
SKAPA REGEL
SKAPA SCHEMA
SKAPA TJÄNST
SKAPA SYMMETRISK NYCKEL
SKAPA SYNONYM
CREATE TABLE
SKAPA TYP
SKAPA VY
SKAPA XML-SCHEMASAMLING
REFERENSER

Gäller för: SQL Server 2019 och senare
ÄNDRA ALLA EXTERNA SPRÅK
SKAPA EXTERNT SPRÅK

Gäller för: SQL Server 2022 och senare
ÄNDRA ALLA EXTERNA DATAKÄLLOR
ÄNDRA VILKET SOM HELST EXTERNT FILFORMAT
ÄNDRA ALLA EXTERNA JOBB
ÄNDRA EVENTUELL EXTERN STRÖM
ALTER LEDGER
AKTIVERA HUVUDBOK
db_datareader BEVILJA SELECT PÅ DATABAS::<database-name>
db_denydatareader NEKA SELECT PÅ DATABAS::<database-name>
db_datawriter BEVILJA INSERT PÅ DATABASEN::<database-name>
BEVILJA UPPDATERING AV DATABASEN::<database-name>
TILLÅT RADERING I DATABASEN::<database-name>
db_denydatawriter NEKA INSERT I DATABASEN::<database-name>
NEKA UPPDATERING PÅ DATABASEN::<database-name>
NEKA BORTTAGNING I DATABASEN::<database-name>
public Det finns inga behörigheter på databasnivå som ingår i den offentliga databasrollen. Vissa databasbehörigheter finns dock som standard. Mer specifikt KAN DU VISA VALFRI DEFINITION AV KOLUMNKRYPTERINGSNYCKEL, VISA VALFRI KOLUMNHUVUDNYCKELDEFINITION OCH VÄLJ behörighet för många enskilda systemtabeller. Dessa behörigheter kan återkallas.

Specialroller för Azure SQL Database och Azure Synapse

Dessa databasroller finns bara i den virtuella master databasen. Deras behörigheter är begränsade till åtgärder som utförs i master. Endast databasanvändare i master kan läggas till i dessa roller. Inloggningar kan inte läggas till i dessa roller, men användare kan skapas baserat på inloggningar och sedan kan dessa användare läggas till i rollerna. Databasanvändare i master kan också läggas till i dessa roller. Begränsade databasanvändare som lagts till i rollen dbmanager i master kan inte användas för att skapa nya databaser.

Rollnamn Description
dbmanager Kan skapa och ta bort databaser. En medlem i rollen dbmanager som skapar en databas blir ägare till databasen, vilket gör att användaren kan ansluta till databasen som dbo-användare. Dbo-användaren har alla databasbehörigheter i databasen. Medlemmar i dbmanager-rollen har inte nödvändigtvis behörighet att komma åt databaser som de inte äger.
db_exporter Medlemmar i den db_exporter fasta databasrollen kan utföra alla dataexportaktiviteter. Behörigheter som beviljas via den här rollen är CREATE TABLE, ALTER ANY SCHEMA, ALTER ANY EXTERNAL DATA SOURCE, ALTER ANY EXTERNAL FILE FORMAT.

Gäller för: Dedikerade SQL-pooler i Azure Synapse Analytics (tidigare SQL DW)
loginmanager Kan skapa och ta bort inloggningar i den virtuella master databasen.

Note

Huvudkontot på servernivå och Microsoft Entra-administratören (om det är konfigurerat) har alla behörigheter i SQL Database och Azure Synapse Analytics utan att behöva vara medlemmar i några roller. Mer information finns i Auktorisera databasåtkomst till SQL Database, SQL Managed Instance och Azure Synapse Analytics.

Vissa databasroller gäller inte för Azure SQL eller Azure Synapse:

  • db_backupoperator är inte tillämpligt i Azure SQL Database (inte Azure SQL Managed Instance) och Azure Synapse Analytics serverlös pool eftersom T-SQL-kommandon för säkerhetskopiering och återställning inte är tillgängliga.

  • db_datawriter och db_denydatawriter gäller inte för serverlösa Azure Synapse Analytics eftersom de bara läser externa data.

Roller i msdb-databasen

Databasen msdb innehåller de specialroller som visas i följande tabell.

msdb rollnamn Description
db_ssisadmin
db_ssisoperator
db_ssisltduser
Medlemmar i dessa databasroller kan administrera och använda SSIS. Instanser av SQL Server som uppgraderas från en tidigare version kan innehålla en äldre version av rollen som namngavs med hjälp av Data Transformation Services (DTS) i stället för SSIS. Mer information finns i Integration Services Roles (SSIS Service).
dc_admin
dc_operator
dc_proxy
Medlemmar i dessa databasroller kan administrera och använda datainsamlaren. Mer information finns i Datainsamling.
PolicyAdministratorRoll Medlemmar i databasrollen db_ PolicyAdministratorRole kan utföra alla konfigurations- och underhållsaktiviteter på principbaserade hanteringsprinciper och villkor. Mer information finns i Administrera servrar med hjälp av principbaserad hantering.
ServerGroupAdministratorRole
ServerGroupReaderRole
Medlemmar i dessa databasroller kan administrera och använda registrerade servergrupper.
dbm_monitor Skapades i msdb-databasen när den första databasen är registrerad i Övervakaren för databasspegling. Den dbm_monitor rollen har inga medlemmar förrän en systemadministratör tilldelar användare rollen.

Medlemmar i db_ssisadmin roll och dc_admin roll kan kanske höja sina privilegier till sysadmin. Den här behörighetshöjningen kan inträffa eftersom dessa roller kan ändra Integration Services-paket och Integration Services-paket kan köras av SQL Server med hjälp av säkerhetskontexten sysadmin för SQL Server Agent. Om du vill skydda dig mot den här behörighetshöjningen när du kör underhållsplaner, datainsamlingsuppsättningar och andra Integration Services-paket konfigurerar du SQL Server Agent-jobb som kör paket för att använda ett proxykonto med begränsad behörighet eller bara lägga till sysadmin medlemmar i db_ssisadmin- och dc_admin-rollerna.

Arbeta med roller på databasnivå

I följande tabell beskrivs kommandon, vyer och funktioner för att arbeta med roller på databasnivå.

Feature Type Description
sp_helpdbfixedrole Metadata Returnerar en lista över de fasta databasrollerna.
sp_dbfixedrolepermission Metadata Visar behörigheterna för en fast databasroll.
sp_helprole Metadata Returnerar information om rollerna i den aktuella databasen.
sp_helprolemember Metadata Returnerar information om medlemmarna i en roll i den aktuella databasen.
sys.database_role_members Metadata Returnerar en rad för varje medlem i varje databasroll.
IS_MEMBER Metadata Anger om den aktuella användaren är medlem i den angivna Microsoft Windows-gruppen, Microsoft Entra-gruppen eller Microsoft SQL Server-databasrollen.
SKAPA ROLL Command Skapar en ny databasroll i den aktuella databasen.
ÄNDRA ROLL Command Ändrar namnet eller medlemskapet för en databasroll.
SLÄPP ROLL Command Tar bort en roll från databasen.
sp_addrole Command Skapar en ny databasroll i den aktuella databasen.
sp_droprole Command Tar bort en databasroll från den aktuella databasen.
sp_addrolemember Command Lägger till en databasanvändare, databasroll, Windows-inloggning eller Windows-grupp till en databasroll i den aktuella databasen. Alla plattformar utom Analytics Platform System (PDW) och Azure Synapse bör användas ALTER ROLE i stället.
sp_droprolemember Command Tar bort ett säkerhetskonto från en SQL Server-roll i den aktuella databasen. Alla plattformar utom Analytics Platform System (PDW) och Azure Synapse bör användas ALTER ROLE i stället.
GRANT Permissions Lägger till behörighet till en roll.
DENY Permissions Nekar behörighet till en roll.
REVOKE Permissions Tar bort tidigare beviljade eller nekade behörigheter.

Offentlig databasroll

Varje databasanvändare tillhör den offentliga databasrollen. När en användare inte har beviljats eller nekats specifika behörigheter för ett skyddsbart objekt ärver användaren de behörigheter som beviljats till allmänheten för objektet. Databasanvändare kan inte tas bort från den offentliga rollen.

Examples

Exemplen i det här avsnittet visar hur du arbetar med roller på databasnivå.

A. Lägga till en användare i en databasnivåroll

I följande exempel läggs användaren "Ben" till i rollen db_datareaderpå den fasta databasnivån .

ALTER ROLE db_datareader ADD MEMBER Ben;
GO

B. Lista alla databasprincipaler som är medlemmar i en databasroll på databasnivå

Följande instruktion returnerar alla medlemmar i valfri databasroll.

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