Rollen auf Datenbankebene

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

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 Microsoft 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.

Tipp

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 Beschreibung
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.

Die den festen Datenbankrollen zugewiesenen Berechtigungen können nicht geändert werden. Die folgende Abbildung zeigt die den festen Datenbankrollen zugewiesenen Berechtigungen:

fixed_database_role_permissions

Sonderrollen für 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 Beschreibung
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 Gilt nur für dedizierte SQL-Pools (früher SQL DW) in Azure Synapse Analytics.
Mitglieder der festen Datenbankrolle db_exporter können alle Datenexportaktivitäten ausführen. Über diese Rolle werden folgende Berechtigungen erteilt: CREATE TABLE, ALTER ANY SCHEMA, ALTER ANY EXTERNAL DATA SOURCE, ALTER ANY EXTERNAL FILE FORMAT.
loginmanager Kann Anmeldungen in der virtuellen master-Datenbank erstellen und löschen.

Hinweis

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 SQL-Datenbank-Authentifizierung und -Autorisierung: Gewähren von Zugriff.

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.

msdb-Rollen

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

Name der msdb-Rolle Beschreibung
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 Data Collection.
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.

Wichtig

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.

Funktion type Beschreibung
sp_helpdbfixedrole (Transact-SQL) Metadaten Gibt eine Liste der festen Datenbankrollen zurück.
sp_dbfixedrolepermission (Transact-SQL) Metadaten Zeigt die Berechtigungen einer festen Datenbankrolle an.
sp_helprole (Transact-SQL) Metadaten Gibt Informationen zu den Rollen in der aktuellen Datenbank zurück.
sp_helprolemember (Transact-SQL) Metadaten Gibt Informationen zu den Mitgliedern einer Rolle in der aktuellen Datenbank zurück.
sys.database_role_members (Transact-SQL) Metadaten Gibt eine Zeile für jedes Mitglied jeder Datenbankrolle zurück.
IS_MEMBER (Transact-SQL) Metadaten Zeigt an, ob der aktuelle Benutzer ein Mitglied der angegebenen Microsoft Windows-Gruppe, Microsoft Entra-Gruppe oder der Microsoft SQL Server-Datenbank-Rolle ist.
CREATE ROLE (Transact-SQL) Get-Help Erstellt eine neue Datenbankrolle in der aktuellen Datenbank.
ALTER ROLE (Transact-SQL) Get-Help Ändert den Namen oder die Mitgliedschaft einer Datenbankrolle .
DROP ROLE (Transact-SQL) Get-Help Entfernt eine Rolle aus der Datenbank.
sp_addrole (Transact-SQL) Get-Help Erstellt eine neue Datenbankrolle in der aktuellen Datenbank.
sp_droprole (Transact-SQL) Get-Help Entfernt eine Datenbankrolle aus der aktuellen Datenbank.
sp_addrolemember (Transact-SQL) Get-Help 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 (Transact-SQL) Get-Help 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 Berechtigungen Fügt einer Rolle eine Berechtigung hinzu.
VERWEIGERN Berechtigungen Verweigert einer Rolle eine Berechtigung.
REVOKE Berechtigungen 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.

Beispiele

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  
JOIN sys.database_principals AS roles  
    ON database_role_members.role_principal_id = roles.principal_id  
JOIN sys.database_principals AS members  
    ON database_role_members.member_principal_id = members.principal_id;  
GO