Rollen auf Datenbankebene
Gilt für: SQL Server
Azure SQL-Datenbank
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics 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 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:
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 | 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 | 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. |
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 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 |
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 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.
Funktion | type | Beschreibung |
---|---|---|
sp_helpdbfixedrole | Metadaten | Gibt eine Liste der festen Datenbankrollen zurück. |
sp_dbfixedrolepermission | Metadaten | Zeigt die Berechtigungen einer festen Datenbankrolle an. |
sp_helprole | Metadaten | Gibt Informationen zu den Rollen in der aktuellen Datenbank zurück. |
sp_helprolemember | Metadaten | Gibt Informationen zu den Mitgliedern einer Rolle in der aktuellen Datenbank zurück. |
sys.database_role_members | Metadaten | Gibt eine Zeile für jedes Mitglied jeder Datenbankrolle zurück. |
IS_MEMBER | 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 | Get-Help | Erstellt eine neue Datenbankrolle in der aktuellen Datenbank. |
ALTER ROLE | Get-Help | Ändert den Namen oder die Mitgliedschaft einer Datenbankrolle . |
DROP ROLE | Get-Help | Entfernt eine Rolle aus der Datenbank. |
sp_addrole | Get-Help | Erstellt eine neue Datenbankrolle in der aktuellen Datenbank. |
sp_droprole | Get-Help | Entfernt eine Datenbankrolle aus der aktuellen Datenbank. |
sp_addrolemember | 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 | 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. |
DENY | 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
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