5 Sicherheit und Zugriff auf SQL Server 2008 R2

Werbung
SQL Server 2008 R2: Administration
5 Sicherheit und Zugriff auf
SQL Server 2008 R2
5.1 Grundkonzept
Das Sicherheitskonzept von SQL Server 2008 R2 ist dreistufig aufgebaut:
•
Betriebssystem-Ebene: Zunächst ist eine Anmeldung am Betriebssystem nötig. Ein Benutzer
kann sich nur dann anmelden, wenn er ein Benutzerkonto hat. Erfolgt die Anmeldung in einer
Active Directory-Domäne, so wird die Authentifizierung mit dem Protokoll Kerberos v5
durchgeführt; bei lokalen Anmeldungen wird gegen die SAM-Datenbank (Security Account
Management) eine NTLMv2-Anmeldung durchgeführt. Jedes Benutzerkonto hat dabei eine
eindeutige SID (Security Identifier). Benutzer können auch Gruppen zugeordnet sein, wobei
Gruppenkonten ebenfalle eine eigene SID haben.
•
SQL Server-Instanz-Ebene: Damit ein Windows-Benutzer sich mit dem SQL Server verbinden
kann, muss ein Login (deutsch: Anmeldung) erstellt werden. Logins werden in der masterDatenbank gespeichert.
Man unterscheidet zwei Authentifizierungsvarianten:
−
Windows-Authentifizierung (Trusted Connection, vertraute Verbindung): Hier erfolgt
keine neuerliche Kennwortabfrage. Die Zuordnung zu einem Windows-Konto erfolgt über
die SID. Diese Art der Authentifizierung entspricht dem Single-Sign-On-Konzept (nur eine
Kennworteingabe berechtigt zum Zugriff auf alle berechtigten Ressourcen) und ist zu
empfehlen.
−
SQL Server-Authentifizierung: Aus historischen Gründen gestattet SQL Server nach
wie vor die Verwaltung eigener, von Windows unabhängiger Anmeldekonten. Hier ist die
Anmeldung durch Eingabe eines Login-Namens und Kennworts durchzuführen. Nach der
Standardinstallation von SQL Server wird das SQL Server-Login sa erzeugt, das durch
© Mag. Christian Zahler, Stand: August 2011
65
SQL Server 2008 R2: Administration
die Mitgliedschaft zur sysadmin-Serverrolle administrative Berechtigungen auf die
gesamte SQL Server-Instanz hat. Vergessen Sie nicht, ein sicheres Kennwort für das saLogin festzulegen!
•
Datenbank-Ebene: Schließlich muss auf Datenbankebene ein Datenbankbenutzer angelegt
werden, der einem Login zugeordnet werden muss. Datenbankbenutzer werden in den
Systemtabellen der jeweiligen Datenbank gespeichert.
Neu ab SQL Server 2008:
•
Kerberos-Authentifizierung mit allen Protokollen möglich (TCP/IP, Named Pipes, Shared Memory)
•
SPNs können auch in Connection Strings spezifiziert werden (die Portnummer ist nicht mehr Teil
der SPNs)
•
Kerberos ist auch möglich, ohne dass die SPNs im AD registriert werden
Standardmäßig ist auf SQL Server-Ebene nur die Windows-Authentifizierung aktiviert. Es ist auch
möglich, sowohl Windows- als auch SQL Server-Authentifizierung zu erlauben.
Bereits bei der SQL Server-Installation konnte die Serverauthentifizierung konfiguriert werden; im
laufenden Betrieb ist das in den Servereigenschaften möglich:
5.2 Anlegen von Login-Konten (SQL Server-Ebene)
a) Grafische Oberfläche im Management Studio:
66
© Mag. Christian Zahler, Stand: August 2011
SQL Server 2008 R2: Administration
b) TSQL: CREATE LOGIN, ALTER LOGIN, DROP LOGIN
-- Windows-Login erzeugen
CREATE LOGIN "CONTOSO\frank" FROM WINDOWS;
-- SQL-Login erzeugen
CREATE LOGIN Mary WITH PASSWORD = 'Pa$$w0rd';
In der Tabelle sysxlogins (1. Zeile = Benutzer AKopflos) findet man die SQL-Logins:
Domain Users werden über die SID identifiziert; die SQL Users erkennt man an der wesentlich
kürzeren SID. In der Spalte xstatus befindet sich eine Zahl, deren letztes Bit den Serverzugang
kennzeichnet (1 – ungerade Zahl = Verbot; 0 – gerade Zahl = Erlaubnis).
Es kann auch eine Windows-Sicherheitsgruppe einem SQL-Login zugeordnet werden (obiges
Beispiel: Administratoren-Gruppe).
© Mag. Christian Zahler, Stand: August 2011
67
SQL Server 2008 R2: Administration
In der Spalte password ist das SQL-Passwort gespeichert, der Eintrag NULL bedeutet WindowsAuthentifizierung.
5.3 Berechtigungen auf SQL-Serverebene
Server-Logins erhalten Berechtigungen auf SQL Server-Instanzebene durch:
•
Explizite Zuweisung: über das Management-Studio oder mit den TSQL-Anweisungen GRANT,
DENY und REVOKE
Beispiel:
USE master
GRANT ALTER ANY DATABASE
TO [ADVENTUREWORKS\Cornelia]
GRANT ALTER
ON LOGIN :: AWWebApp
TO [ADVENTUREWORKS\Cornelia]
•
Mitgliedschaft in einer Serverrolle: So
haben etwa Mitglieder der Serverrolle
sysadmin Administrationsrechte auf die
gesamte SQL Server-Instanz. Alle Logins
sind Mitglied bei der Serverrolle public;
diese Rolle gewährt Basisberechtigungen,
damit beispielsweise die vorhandenen
Benutzer-Datenbanken wenigstens
aufgelistet werden können.
5.4 Anlegen von Datenbankbenutzern
Das Anlegen von Datenbankbenutzern kann in der grafischen Oberfläche folgendermaßen
durchgeführt werden:
Achten Sie auf die korrekte Zuordnung des neuen Datenbankbenutzers zu einem vorhandenen Login!
68
© Mag. Christian Zahler, Stand: August 2011
SQL Server 2008 R2: Administration
Selbe Aufgabe mit TSQL: CREATE USER
-- Erstellen eines Benutzers für eine Anwendung mit gleichem Namen
CREATE USER Bernhard
-- Erstellen eines Benutzers mit einem Namen, der vom Namen der zugeordneten
Anmeldung abweicht
CREATE USER Jonas FOR LOGIN [ADVENTUREWORKS\Jonas]
-- Erstellen eines Benutzers mit einem explizit definierten Standardschema
CREATE USER SalesUser FOR LOGIN [DBSERVER1\SalesUsers]
WITH DEFAULT_SCHEMA = 'Sales'
5.5 Berechtigungen auf Datenbankebene
Datenbankbenutzer erhalten Berechtigungen für Datenbankzugriffe auf zwei Arten:
•
Explizite Zuweisung: über das Management-Studio oder mit den TSQL-Anweisungen GRANT,
DENY und REVOKE.
Beispiel: Dem Datenbankbenutzer SalesUser werden Leseberechtigungen für die Tabelle
sales.orders erteilt:
USE AdventureWorks
GRANT SELECT
ON sales.orders
TO SalesUser
© Mag. Christian Zahler, Stand: August 2011
69
SQL Server 2008 R2: Administration
•
Mitgliedschaft in einer StandardDatenbankrolle: So haben etwa
Mitglieder der Datenbankrolle
db_owner Administrationsrechte auf
die entsprechende Datenbank. Alle
Datenbankbenutzer sind
automatisch Mitglied der
Datenbankrolle public.
•
Mitgliedschaft in einer
benutzerdefinierten
Datenbankrolle: Es können auch
eigene Datenbankrollen erzeugt
werden.
5.6 Erteilen expliziter Objektberechtigungen im
Management Studio
Im Management-Studio ist das explizite Erteilen von Berechtigungen entweder von der Seite des zu
berechtigenden Datenbankbenutzers oder von der Seite des "Securables", also des Objekts, auf das
zugegriffen wird, konfigurierbar:
5.6.1 Benutzerseitige Berechtigungen
Eigenschaften des Datenbankbenutzers, Karteikarte "Sicherungsfähige Elemente":
70
© Mag. Christian Zahler, Stand: August 2011
SQL Server 2008 R2: Administration
© Mag. Christian Zahler, Stand: August 2011
71
SQL Server 2008 R2: Administration
5.6.2 Objektseitige Berechtigungen
Eigenschaften des Objekts (der Tabelle, Sicht usw.), Karteikarte "Berechtigungen":
72
© Mag. Christian Zahler, Stand: August 2011
SQL Server 2008 R2: Administration
© Mag. Christian Zahler, Stand: August 2011
73
SQL Server 2008 R2: Administration
5.7 Spezielle Datenbankbenutzer
Der Datenbankbenutzer dbo ist in allen Datenbanken standardmäßig vorhanden. Mitglieder der
Serverrolle sysadmin und die Anmeldung sa sind dem Datenbankbenutzer dbo zugeordnet.
Jedes Objekt, das von einem Mitglied der Serverrolle sysadmin erstellt wurde, gehört automatisch
dem Datenbankbenutzer dbo. Der Benutzer dbo kann nicht gelöscht werden.
Der Datenbankbenutzer guest ist ebenso in allen Datenbanken standardmäßig vorhanden, aber
deaktiviert. Er ermöglicht ohne Datenbankbenutzerkonto den Zugriff auf eine Datenbank.
5.8 Unterbrochene Besitzerkette
Der Datenbankbenutzer sollte Zugriff auf die Daten immer nur über Sichten oder gespeicherte
Prozeduren erhalten; eine direkte Abfrage einer Tabelle sollte verboten sein.
Daher könnte man folgende Berechtigungsstruktur einführen:
74
© Mag. Christian Zahler, Stand: August 2011
Herunterladen