SQL Server 2012 – endlich Serverrollen selbst erstellen

Bis dato war es nicht möglich die Serverrollen, ähnlich wie Datenbankrollen, selbst zu definieren. Das hat sich mit SQL Server Denali geändert.

image

So lassen sich nun Serverrollen mit eigens definierten anlegen, um so den Support gezielt ein reduziertes Rechtepaket zu zuweisen. Beispielsweise könnte man verschiedene Ebenen des Supports abbilden (1.Level, 2nd Level etc.)

Besonderen Gefallen hatte ich an der Möglichkeit gezielt auf Endpunkten Rechte (Spiegelung Error 1418) zu vergeben oder etwa die Anzeige von Datenbanken zu unterbinden.

Die Serverrollen können natürlich auch per Skript erstellen und vergeben werden:

 

--Neues Login
USE [master]
GO
CREATE LOGIN [Sepp]
 WITH PASSWORD=N'ncc1701-d',
 DEFAULT_DATABASE=[master],
 CHECK_EXPIRATION=OFF,
 CHECK_POLICY=OFF
GO

--Endpunkt für Spiegelung
CREATE ENDPOINT Endpoint_Mirroring
    STATE=STARTED
    AS TCP (LISTENER_PORT=5022)
    FOR DATABASE_MIRRORING (ROLE=ALL);

--Neue Serverrolle
USE [master]
GO

CREATE SERVER ROLE [Supper_Level1]
GO

GRANT VIEW ANY DATABASE TO [Supper_Level1]
GO
GRANT CONNECT SQL TO [Supper_Level1]
GO
DENY SHUTDOWN TO [Supper_Level1]
go
GRANT CONNECT ON ENDPOINT::[Endpoint_Mirroring] TO [Supper_Level1]

--Anmeldung zu Serverrolle hinzufügen

ALTER SERVER ROLE

[Support_Level1]

ADD MEMBER

 [SEPP]

 

Eine Anmeldung kann durchaus in mehreren Serverrollen enthalten sein:

image

 

 

Beispielsweise kann der User Sepp lediglich seinen eigenen Systemprozess sehen und nur die Systemdatenbanken master und tempdb.

image

 

Sofern der User Sepp zu der Serverrolle Support_Level1 gehört, darf er zumindest alle Datenbanken und Systemprozesse sehen.

image

 

Falls ein Benutzer Aktionen ausführt, auf die ihm kein Recht gegeben erteilt wurden, quittiert dies der SQL Server mit:

Der Benutzer besitzt nicht die Berechtigung zum Ausführen dieser Aktion.

Author: Fumus

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert