Freigeben über


Rollen auf Datenbankebene

Gilt für:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-Datenbank in Microsoft Fabric

Zur einfachen Verwaltung der Berechtigungen für Ihre Datenbanken stellt SQL Server mehrere Rollen zur Verfügung. Dabei handelt es sich um Sicherheitsprinzipale, die andere Prinzipale gruppieren. Sie entsprechen den Gruppen im Windows-Betriebssystem. Der Geltungsbereich der Berechtigungen von Rollen auf Datenbankebene erstreckt sich auf die gesamte Datenbank.

Zum Hinzufügen und Entfernen von Benutzern zu oder aus einer Datenbankrolle verwenden Sie die Optionen ADD MEMBER und DROP MEMBER der ALTER ROLE -Anweisung. Analytics Platform System (PDW) und Azure Synapse Analytics unterstützen die Verwendung von ALTER ROLE nicht. Verwenden Sie stattdessen die älteren Prozeduren sp_addrolemember und sp_droprolemember .

Es gibt zwei Typen von Rollen auf Datenbankebene: feste Datenbankrollen, die in der Datenbank vordefiniert sind, und benutzerdefinierte Datenbankrollen, die Sie erstellen können.

Feste Datenbankrollen werden auf der Datenbankebene definiert und sind in jeder Datenbank vorhanden. Mitglieder der Datenbankrolle db_owner können die Mitgliedschaft von festen Datenbankrollen ändern. In der msdb-Datenbank gibt es auch einige Datenbankrollen für spezielle Zwecke.

Zu Rollen auf Datenbankebene können Sie beliebige Datenbankkonto- und andere SQL Server-Rollen hinzufügen.

Tip

Fügen Sie keine benutzerdefinierten Datenbankrollen als Mitglieder fester Rollen hinzu. Dies könnte zu einer unbeabsichtigten Ausweitung von Privilegien führen.

Die Berechtigungen von benutzerdefinierten Datenbankrollen können mithilfe der Anweisungen GRANT, DENY und REVOKE angepasst werden. Weitere Informationen finden Sie unter Berechtigungen (Database Engine).

Eine Liste aller Berechtigungen finden Sie auf dem Poster Database Engine Permissions (Berechtigungen im Datenbankmodul) . Datenbankrollen können keine Berechtigungen auf Serverebene erteilt werden. Anmeldungen und andere Serverebenenprinzipale (wie etwa Serverrollen) können nicht zu Datenbankrollen hinzugefügt werden. Verwenden Sie für Sicherheit auf Serverebene in SQL Server stattdessen Serverrollen. Berechtigungen auf Serverebene können nicht mithilfe von Rollen in Azure SQL-Datenbank und Azure Synapse Analytics erteilt werden.

Feste Datenbankrollen

In der folgenden Tabelle sind die festen Datenbankrollen und ihre Möglichkeiten aufgeführt. Diese Rollen sind in allen Datenbanken vorhanden. Außer bei der Datenbankrolle public können die den festen Datenbankrollen zugewiesenen Berechtigungen nicht geändert werden.

Name der festen Datenbankrolle Description
db_owner Mitglieder der festen Datenbankrolle db_owner können alle Aktivitäten zur Konfiguration und Wartung an der Datenbank ausführen und können auch die Datenbank in SQL Server DROP. (In SQL-Datenbank und Azure Synapse sind für einige Wartungsaktivitäten Berechtigungen auf Serverebene erforderlich, und sie können nicht von db_owners ausgeführt werden.)
db_securityadmin Mitglieder der festen Datenbankrolle db_securityadmin können die Rollenmitgliedschaft nur für benutzerdefinierte Rollen ändern und Berechtigungen verwalten. Mitglieder dieser Rolle können Ihre Berechtigungen möglicherweise erhöhen, und ihre Aktionen sollten überwacht werden.
db_accessadmin Mitglieder der festen Datenbankrolle db_accessadmin können den Zugriff auf die Datenbank für Windows-Anmeldungen, Windows-Gruppen und SQL Server-Anmeldungen hinzufügen oder entfernen.
db_backupoperator Mitglieder der festen Datenbankrolle db_backupoperator können eine Sicherung der Datenbank durchführen.
db_ddladmin Mitglieder der festen Datenbankrolle db_ddladmin können in einer Datenbank sämtliche DDL-Befehle (Data Definition Language) ausführen. Mitglieder dieser Rolle können ihre Berechtigungen potenziell erhöhen, indem sie Code bearbeiten, der unter hohen Berechtigungen ausgeführt werden kann. Ihre Aktionen sollten überwacht werden.
db_datawriter Mitglieder der festen Datenbankrolle db_datawriter können Daten in allen Benutzertabellen hinzufügen, löschen oder ändern. In den meisten Anwendungsfällen wird diese Rolle mit der db_datareader-Mitgliedschaft kombiniert, damit die zu ändernden Daten gelesen werden können.
db_datareader Mitglieder der festen Datenbankrolle db_datareader können alle Daten aller Benutzertabellen und Sichten lesen. Benutzerobjekte kann in jedem Schema vorhanden sein, mit Ausnahme von sys und INFORMATION_SCHEMA.
db_denydatawriter Mitglieder der festen Datenbankrolle db_denydatareader können keine Daten in den Benutzertabellen in einer Datenbank hinzufügen, ändern oder löschen.
db_denydatareader Mitglieder der festen Datenbankrolle db_denydatareader können keine Daten aus den Benutzertabellen und Sichten in einer Datenbank lesen. Mitglieder dieser Rolle können auch keine Metadaten über die Datenbank und deren Objekte lesen, z. B. das Anzeigen von Systemansichten.

Die den festen Datenbankrollen zugewiesenen Berechtigungen können nicht geändert werden. Alle Rollen (einschließlich der public Rolle) verfügen über die CONNECT-Berechtigungen. Die folgende Abbildung zeigt die den festen Datenbankrollen zugewiesenen Berechtigungen:

Rollenname Permissions
db_owner CONTROL DATABASE: Verfügt über alle Berechtigungen in der Datenbank.
db_securityadmin ÄNDERN EINER BELIEBIGEN ANWENDUNGSROLLE
SCHEMA ERSTELLEN
ÄNDERN EINER BELIEBIGEN ROLLE
Darstellungsdefinition
db_accessadmin ÄNDERN EINES BELIEBIGEN BENUTZERS
SCHEMA ERSTELLEN
BENUTZER ERSTELLEN
db_backupoperator SICHERUNGSDATENBANK
SICHERUNGSPROTOKOLL
CHECKPOINT
db_ddladmin BELIEBIGE ASSEMBLY ÄNDERN
ÄNDERN EINES ASYMMETRISCHEN SCHLÜSSELS
ÄNDERN EINES BELIEBIGEN ZERTIFIKATS
ÄNDERN EINES VERTRAGS
ÄNDERN EINES DATENBANK-DDL-TRIGGERS
Benachrichtigungen zu Datenbankereignissen ändern
ÄNDERN EINES BELIEBIGEN DATENBEREICHS
ÄNDERN EINER BELIEBIGEN EXTERNEN BIBLIOTHEK
ÄNDERN EINES VOLLSTÄNDIGEN TEXTKATALOGS
ÄNDERN EINES BELIEBIGEN NACHRICHTENTYPS
ÄNDERN JEDER REMOTE-DIENST-BINDUNG
ÄNDERN EINER BELIEBIGEN ROUTE
ÄNDERN EINES BELIEBIGEN SCHEMAS
ÄNDERE JEDEN DIENST
ÄNDERN EINES SYMMETRISCHEN SCHLÜSSELS
CHECKPOINT
AGGREGAT ERSTELLEN
CREATE ASSEMBLY (Erstellen einer Assembly)
ERSTELLEN EINES ASYMMETRISCHEN SCHLÜSSELS
ZERTIFIKAT ERSTELLEN
VERTRAG ERSTELLEN
CREATE-DATABASE-DDL-Ereignisbenachrichtigung
STANDARD ERSTELLEN
EXTERNE BIBLIOTHEK ERSTELLEN
FULLTEXT-KATALOG ERSTELLEN
CREATE-FUNKTION
NACHRICHTENTYP ERSTELLEN
PROZEDUR ERSTELLEN
WARTESCHLANGE ERSTELLEN
ERSTELLEN EINER REMOTE-DIENSTBINDUNG
ROUTE ERSTELLEN
REGEL ERSTELLEN
SCHEMA ERSTELLEN
DIENST ERSTELLEN
SYMMETRISCHER SCHLÜSSEL ERSTELLEN
SYNONYM ERSTELLEN
CREATE TABLE
TYPE ERSTELLEN
ANSICHT ERSTELLEN
ERSTELLEN EINER XML-SCHEMAAUFLISTUNG
REFERENZEN

Gilt für: SQL Server 2019 und höher
ÄNDERN EINER BELIEBIGEN EXTERNEN SPRACHE
Erstellen Sie eine externe Sprache

Gilt für: SQL Server 2022 und höher
ÄNDERE JEDE EXTERNE DATENQUELLE
ÄNDERN EINES BELIEBIGEN EXTERNEN DATEIFORMATS
ÄNDERN EINES EXTERNEN AUFTRAGS
ÄNDERN EINES EXTERNEN DATENSTROMS
ALTER LEDGER
LEDGER AKTIVIEREN
db_datareader GRANT SELECT ON DATABASE::<database-name>
db_denydatareader AUSWAHL AUF DATENBANK VERWEIGERN::<database-name>
db_datawriter GRANT INSERT ON DATABASE::<database-name>
BERECHTIGUNG FÜR AKTUALISIERUNG IN DATENBANK::<database-name>
GEWÄHREN SIE LÖSCHRECHTE FÜR DATENBANK::<database-name>
db_denydatawriter VERWEIGERN EINFÜGEN IN DATENBANK::<database-name>
AKTUALISIERUNG AUF DATENBANK VERWEIGERN::<database-name>
LÖSCHEN IN DATENBANK VERWEIGERN::<database-name>
public Es gibt keine Berechtigungen auf Datenbankebene, die der öffentlichen Datenbankrolle inhärent sind. Einige Datenbankberechtigungen sind jedoch standardmäßig vorhanden. SPEZIFISCH: DIE BERECHTIGUNG "VIEW ANY COLUMN ENCRYPTION KEY DEFINITION", DIE BERECHTIGUNG "VIEW ANY COLUMN MASTER KEY DEFINITION" UND DIE SELECT-BERECHTIGUNG FÜR VIELE EINZELNE SYSTEMTABELLEN. Diese Berechtigungen können widerrufen werden.

Sonderrollen für Azure SQL-Datenbank und Azure Synapse

Diese Datenbankrollen sind nur in der virtuellen master-Datenbank vorhanden. Ihre Berechtigungen sind auf Aktionen beschränkt, die im master ausgeführt werden. Nur Datenbankbenutzer im master können diesen Rollen hinzugefügt werden. Diesen Rollen können keine Anmeldungen hinzugefügt werden, jedoch können Benutzer auf der Grundlage von Anmeldungen erstellt werden, und diese Benutzer können den Rollen dann hinzugefügt werden. Auch eigenständige Datenbankbenutzer im master können diesen Rollen hinzugefügt werden. Enthaltene Datenbankbenutzer, die der Rolle dbmanager im master hinzugefügt wurden, können jedoch nicht zum Erstellen neuer Datenbanken verwendet werden.

Rollenname Description
dbmanager Kann Datenbanken erstellen und löschen. Ein Mitglied der Rolle dbmanager, das eine Datenbank erstellt, wird zum Besitzer der betreffenden Datenbank. Dieser Benutzer kann dann als dbo-Benutzer eine Verbindung mit der Datenbank herstellen. Der dbo-Benutzer verfügt über alle Datenbankberechtigungen in der Datenbank. Mitglieder der Rolle dbmanager verfügen nicht unbedingt über die Berechtigung zum Zugriff auf Datenbanken, die sie nicht besitzen.
db_exporter Mitglieder der festen Datenbankrolle db_exporter können alle Datenexportaktivitäten ausführen. Über diese Rolle gewährte Berechtigungen sind CREATE TABLE, ALTER ANY SCHEMA, ALTER ANY EXTERNAL DATA SOURCE und ALTER ANY EXTERNAL FILE FORMAT.

Gilt für: Dedizierte SQL-Pools (früher SQL DW) in Azure Synapse Analytics
loginmanager Kann Anmeldungen in der virtuellen master-Datenbank erstellen und löschen.

Note

Der Prinzipal auf Serverebene und der Microsoft Entra-Administrator (falls konfiguriert) besitzen alle Berechtigungen in SQL-Datenbank und Azure Synapse Analytics, ohne dazu Mitglieder irgendwelcher Rollen sein zu müssen. Weitere Informationen finden Sie unter Autorisieren des Datenbankzugriffs für Azure SQL-Datenbank, SQL Managed Instance und Azure Synapse Analytics.

Einige Datenbankrollen gelten nicht für Azure SQL oder Azure Synapse:

  • db_backupoperator ist auf Azure SQL-Datenbank (nicht Azure SQL Managed Instance) und serverlose Azure Synapse Analytics-Pools nicht anwendbar, weil die T-SQL-Befehle für das Sichern und Wiederherstellen nicht verfügbar sind.

  • db_datawriter und db_denydatawriter sind nicht auf serverlose Azure Synapse Analytics-Instanzen anwendbar, weil dort nur externe Daten gelesen werden.

Rollen in msdb-Datenbank

Die msdb-Datenbank enthält die in der folgenden Tabelle aufgeführten Rollen für spezielle Zwecke.

msdb-Rollenname Description
db_ssisadmin
db_ssisoperator
db_ssisltduser
Mitglieder dieser Datenbankrollen können SSIS verwalten und verwenden. Instanzen von SQL Server, die von einer früheren Version aktualisiert wurden, enthalten möglicherweise eine ältere Version der Rolle, die mit Data Transformation Services (DTS) und nicht mit SSIS benannt wurde. Weitere Informationen finden Sie unter Integration Services-Rollen (SSIS-Dienst).
dc_admin
dc_operator
dc_proxy
Mitglieder dieser Datenbankrollen können den Datensammler verwalten und verwenden. Weitere Informationen finden Sie unter Datensammlung.
PolicyAdministratorRole Mitglieder der Datenbankrolle db_PolicyAdministratorRole können alle Aktivitäten zur Konfiguration und Wartung für Richtlinien und Bedingungen der richtlinienbasierten Verwaltung ausführen. Weitere Informationen finden Sie unter Verwalten von Servern mit der richtlinienbasierten Verwaltung.
ServerGroupAdministratorRole
ServerGroupReaderRole
Mitglieder dieser Datenbankrollen können registrierte Servergruppen verwalten und verwenden.
dbm_monitor Wird in der msdb-Datenbank erstellt, wenn die erste Datenbank im Datenbankspiegelungs-Monitor registriert wird. Die dbm_monitor -Rolle hat keine Mitglieder, bis ein Systemadministrator der Rolle Benutzer zuweist.

Mitglieder der db_ssisadmin-Rolle und der dc_admin-Rolle können Ihre Berechtigungen möglicherweise auf sysadmin erhöhen. Diese Ausweitung von Berechtigungen ist möglich, da diese Rollen Integration Services -Pakete ändern können und Integration Services -Pakete von SQL Server mithilfe des sysadmin-Sicherheitskontexts des SQL Server -Agents ausgeführt werden können. Konfigurieren Sie als Schutz vor dieser Ausweitung von Berechtigungen beim Ausführen von Wartungsplänen, Datensammlungssätzen und anderen Integration Services-Paketen Aufträge des SQL Server-Agents, die Pakete ausführen, für die Verwendung eines Proxykontos mit einschränkten Berechtigungen, oder fügen Sie der db_ssisadmin-Rolle und der dc_admin-Rolle nur sysadmin-Mitglieder hinzu.

Arbeiten mit Rollen auf Datenbankebene

In der folgenden Tabelle werden die Befehle, Sichten und Funktionen zum Arbeiten mit Rollen auf Datenbankebene erklärt.

Feature Type Description
sp_helpdbfixedrole Metadata Gibt eine Liste der festen Datenbankrollen zurück.
sp_dbfixedrolepermission Metadata Zeigt die Berechtigungen einer festen Datenbankrolle an.
sp_helprole Metadata Gibt Informationen zu den Rollen in der aktuellen Datenbank zurück.
sp_helprolemember Metadata Gibt Informationen zu den Mitgliedern einer Rolle in der aktuellen Datenbank zurück.
sys.database_role_members Metadata Gibt eine Zeile für jedes Mitglied jeder Datenbankrolle zurück.
IS_MEMBER Metadata Zeigt an, ob der aktuelle Benutzer ein Mitglied der angegebenen Microsoft Windows-Gruppe, Microsoft Entra-Gruppe oder der Microsoft SQL Server-Datenbank-Rolle ist.
ROLLE ERSTELLEN Command Erstellt eine neue Datenbankrolle in der aktuellen Datenbank.
ALTER ROLE Command Ändert den Namen oder die Mitgliedschaft einer Datenbankrolle .
DROP ROLE Command Entfernt eine Rolle aus der Datenbank.
sp_addrole Command Erstellt eine neue Datenbankrolle in der aktuellen Datenbank.
sp_droprole Command Entfernt eine Datenbankrolle aus der aktuellen Datenbank.
sp_addrolemember Command Fügt einer Datenbankrolle in der aktuellen Datenbank einen Datenbankbenutzer, eine Datenbankrolle, einen Windows-Anmeldenamen oder eine Windows-Gruppe hinzu. Alle Plattformen mit Ausnahme von Analytics Platform System (PDW) und Azure Synapse sollten stattdessen ALTER ROLE verwenden.
sp_droprolemember Command Entfernt ein Sicherheitskonto aus einer SQL Serverrolle in der aktuellen Datenbank. Alle Plattformen mit Ausnahme von Analytics Platform System (PDW) und Azure Synapse sollten stattdessen ALTER ROLE verwenden.
GRANT Permissions Fügt einer Rolle eine Berechtigung hinzu.
DENY Permissions Verweigert einer Rolle eine Berechtigung.
REVOKE Permissions Entfernt zuvor erteilte oder verweigerte Berechtigungen.

Datenbankrolle „public“

Jeder Datenbankbenutzer gehört der Datenbankrolle public an. Wenn einem Benutzer keine bestimmten Berechtigungen für ein sicherungsfähiges Objekt erteilt oder verweigert werden, erbt der Benutzer die Berechtigungen, die der Datenbankrolle public für dieses Objekt erteilt wurden. Datenbankbenutzer können aus der Rolle öffentlich nicht entfernt werden.

Examples

Die Beispiele in diesem Abschnitt zeigen, wie Sie mit Rollen auf Datenbankebene arbeiten.

A. Hinzufügen eines Benutzers zu einer Rolle auf Datenbankebene

Das folgende Beispiel fügt den Benutzer „Ben“ zur festen Rolle db_datareader auf Datenbankebene hinzu.

ALTER ROLE db_datareader ADD MEMBER Ben;
GO

B. Auflisten aller Datenbankprinzipale, die Mitglied einer Rolle auf Datenbankebene sind

Die folgende Anweisung gibt alle Mitglieder einer Datenbankrolle zurück.

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