it-swarm.com.de

SQL Server-Berechtigungen zum Erstellen, Wiederherstellen und Löschen nur einiger Datenbanken

Unter MS SQL Server 2008 R2 muss ein Benutzer vorhanden sein, der DBCC CHECKDB erstellen, wiederherstellen und anschließend Datenbanken löschen kann. Er darf jedoch nicht auf bestimmte Datenbanken auf dem Server zugreifen oder diese löschen können (Sicherheitsgründe). Ist dieses Setup möglich?

17
Cicik

Ja, es ist durch ein paar Berechtigungen möglich.

Zuerst - um eine Datenbank zu erstellen - müssten Sie die Berechtigung auf Serverebene Create Any Database Erteilen. Diese Berechtigung macht genau das, wonach es sich anhört - die Fähigkeit, eine Datenbank zu erstellen. Hinweis dies ist nicht Übergabe der festen Serverrolle von dbcreator an die Anmeldung, da diese feste Serverrolle Änderungs-/Löschberechtigungen für jede Datenbank erteilt. Mit Create Any Database Kann der Login nur über die Datenbanken verfügen, die er besitzt. Dies gibt auch die Möglichkeit zur Wiederherstellung.

(Wenn Sie also nur "Jede Datenbank erstellen" [~ # ~] [~ # ~] ausführen, können Sie eine neue Datenbank erstellen. Vermeiden Sie jedoch das Löschen oder Ändern [~ # ~] jeder [~ # ~] Datenbank, die Sie mithilfe der festen Serverrolle dbcreator erhalten würden )

So erteilen Sie die Berechtigung "Datenbank erstellen" -

use [master]
GO
GRANT CREATE ANY DATABASE TO [LoginName]
GO

Für die Ausführung von DBCC CHECKDB Und das Löschen von Datenbanken ist die feste Datenbankrolle db_owner ausreichend. Dies gewährt alles, was Sie anfordern. Bitte beachten Sie: Sie gewähren diesem Benutzer auch die Möglichkeit, mit db_owner Auszuwählen, zu löschen, abzuschneiden, zu aktualisieren und einzufügen. Ich stelle mir das gerne als sysadmin innerhalb einer Datenbank vor.

Sie wenden diese Berechtigung nur auf die Datenbank an, für die Sie diese Fähigkeit verwenden möchten. Auf diese Weise können Sie steuern, auf welchen Datenbanken der Benutzer Daten löschen, wiederherstellen oder überprüfen kann. Alle Datenbanken, für die Sie dem Benutzer diese Berechtigungen nicht erteilt haben, sind vor diesem Benutzer geschützt, der diese Aktionen ausführt .

Dazu ordnen Sie zunächst die Anmeldung einem Datenbankbenutzer zu:

USE [DatabaseName]
GO
CREATE USER [UserName] FOR LOGIN [LoginName] 
GO

Fügen Sie diesen Benutzer dann der Rolle db_owner Hinzu (funktioniert in SQL Server 2012 und höher):

ALTER ROLE [db_owner] ADD MEMBER [frank]
GO

Für SQL Server 2008 müssten Sie die gespeicherte Systemprozedur verwenden, um ein Rollenmitglied als Kommentator hinzuzufügen.

EXEC sp_addrolemember 'db_owner', 'frank';

Sie können dies alles auch über die GUI tun. Die Anmeldeinformationen, die Sie über den Sicherheitsordner in SSMS auf Instanzebene ausführen würden: Klicken Sie mit der rechten Maustaste auf Anmelden -> Eigenschaften -> Sicherungen. Für die Datenbankebene würden Sie dies über den Sicherheitsordner auf Datenbankebene tun: Klicken Sie mit der rechten Maustaste und wählen Sie einen neuen Benutzer aus -> wählen Sie die gewünschte Anmeldung aus Ihrer Liste der Serveranmeldungen aus/geben Sie dem Datenbankbenutzer einen Namen -> gehen Sie zu Auf der Registerkarte Mitgliedschaft können Sie die Rollenmitgliedschaft auswählen.

Das Hilfesystem von SQL Server, Books Online, ist auch für die meisten Berechtigungsfragen eine fantastische Ressource - wenn Sie feststellen, dass Sie andere Berechtigungen zuweisen müssen. Führen Sie einfach eine Suche nach dem T-SQL-Befehl durch, dem Sie Berechtigungen erteilen möchten, und es gibt normalerweise einen Abschnitt Berechtigungen für diesen Befehl im Artikel, der Sie darüber informiert Welche Berechtigungen sind erforderlich, um diese Aktion auszuführen? Sie können sich den Artikel für DBCC CHECKDB als Beispiel ansehen - ungefähr 7/8 des Weges im Artikel ist der Abschnitt Berechtigungen.

27
Mike Walsh