Rollen auf Datenbankebene

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

Um die Berechtigungen in Ihren Datenbanken auf einfache Weise zu verwalten, stellt SQL Server mehrere Rollen bereit, die Sicherheitsprinzipale sind, die andere Prinzipale gruppieren. Sie sind wie 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 nicht die Verwendung von ALTER ROLE. 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.

Sie können ein beliebiges Datenbankkonto und andere SQL Server-Rollen zu Rollen auf Datenbankebene 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) . Berechtigungen auf Serverebene können datenbankrollen nicht erteilt werden. Anmeldungen und andere Prinzipale auf Serverebene (z. B. Serverrollen) können datenbankrollen nicht hinzugefügt werden. Verwenden Sie für die Sicherheit auf Serverebene in SQL Server stattdessen Serverrollen . Berechtigungen auf Serverebene können nicht über 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. Mit Ausnahme der Rolle der öffentlichen Datenbank können die Berechtigungen, die den Rollen mit fester Datenbank zugewiesen sind, nicht geändert werden.

Name der festen Datenbankrolle Beschreibung
db_owner Mitglieder der db_owner festen Datenbankrolle können alle Konfigurations- und Standard abwendungsaktivitäten für die Datenbank ausführen und auch drop die Datenbank in SQL Server. (In SQL-Datenbank und Azure Synapse erfordern einige Standard Aktivitäten Berechtigungen auf Serverebene und können von db_owners nicht 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 db_accessadmin festen Datenbankrolle 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, und 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 db_datareader Mitgliedschaft kombiniert, um das Lesen der zu ändernden Daten zu ermöglichen.
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 db_denydatawriter festen Datenbankrolle können keine Daten in den Benutzertabellen in einer Datenbank hinzufügen, ändern oder löschen.
db_denydatareader Mitglieder der db_denydatareader festen Datenbankrolle können keine Daten aus den Benutzertabellen und Ansichten in einer Datenbank lesen.

Die Berechtigungen, die den Rollen mit fester Datenbank zugewiesen sind, 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 in master. Nur Datenbankbenutzer können master diesen Rollen hinzugefügt werden. Anmeldeinformationen können diesen Rollen nicht hinzugefügt werden, aber Benutzer können basierend auf Anmeldeinformationen erstellt werden, und diese Benutzer können den Rollen hinzugefügt werden. Enthaltene Datenbankbenutzer master können diesen Rollen auch hinzugefügt werden. Enthaltene Datenbankbenutzer, die der Dbmanager-Rollemaster 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 Anmeldeinformationen in der virtuellen master Datenbank erstellen und löschen.

Hinweis

Der Prinzipal auf Serverebene und der Microsoft Entra-Administrator (sofern konfiguriert) verfügen über alle Berechtigungen in SQL-Datenbank und Azure Synapse Analytics, ohne Mitglied von 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 gilt nicht für Azure SQL-Datenbank (nicht in Azure SQL verwaltete Instanz) und im serverlosen Azure Synapse Analytics-Pool, da T-SQL-Befehle für Sicherung und Wiederherstellung nicht verfügbar sind.
  • db_datawriter und db_denydatawriter gelten nicht für Azure Synapse Analytics Serverless, da sie nur externe Daten liest.

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 werden, können eine ältere Version der Rolle enthalten, die mit Data Transformation Services (DTS) anstelle von 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. Um diese Rechteerweiterung beim Ausführen von Standard Tenance-Plänen, Datensammlungssätzen und anderen Integrationsdienste-Paketen zu schützen, konfigurieren Sie SQL Server-Agent Aufträge, die Pakete ausführen, um ein Proxykonto mit eingeschränkten Berechtigungen zu verwenden, oder fügen Sie nur sysadmin-Member zu den rollen db_ssisadmin und dc_admin 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 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 oder der Microsoft SQL Server-Datenbankrolle 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 verwendet werden ALTER ROLE .
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 verwendet werden ALTER ROLE .
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 nicht aus der öffentlichen Rolle 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