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. Dies sind Sicherheitsprinzipale, die andere Prinzipale in Gruppen zusammenfassen. 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. Diese Verwendung von ALTER ROLE
wird in Analytics-Plattformsystem (PDW) und Azure Synapse nicht unterstützt. 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 in Rollen auf Datenbankebene jedes 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 (Datenbank-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 Prinzipale auf Serverebene (wie etwa Serverrollen) können Datenbankrollen nicht hinzugefügt werden. Verwenden Sie für Sicherheit auf Serverebene in SQL Serverstattdessen Serverrollen . Berechtigungen auf Serverebene können nicht mithilfe von Rollen in SQL-Datenbank und Azure Synapse 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 die Datenbank auch über drop in SQL Server löschen. (In SQL-Datenbank und Azure Synapse sind für einige Wartungsaktivitäten Berechtigungen auf Serverebene erforderlich, und sie 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 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 manipulieren, der möglicherweise unter hohen Berechtigungen ausgeführt wird, 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 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:
Besondere Rollen für SQL-Datenbank und Azure Synapse
Diese Datenbankrollen sind nur in der virtuellen Masterdatenbank vorhanden. Ihre Berechtigungen sind auf Aktionen beschränkt, die auf dem 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 Masterdatenbank erstellen und löschen. |
Hinweis
Der Prinzipal auf Serverebene und der Azure Active Directory-Administrator (falls konfiguriert) besitzen alle Berechtigungen in SQL-Datenbank und Azure Synapse, 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 verwaltete Instanz) und serverlose Azure Synapse-Pools nicht anwendbar, weil die T-SQL-Befehle für die Sicherung und Wiederherstellung nicht verfügbar sind.
- db_datawriter und db_denydatawriter sind nicht auf serverlose Azure Synapse-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 SSISverwalten 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 eingeschrä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 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 außer Analytics-Plattformsystem (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 außer Analytics-Plattformsystem (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. Benutzer 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