Datenbankbenutzer: Zugriff auf Datenbanken gewähren
Vorauasetzung für den Zugriff auf eine Datenbank ist natürlich eine gelungene Authentifizierung (= Anmeldung) am SQL- Server.
Datenbankbenutzer (database user)
Die mehrstufige Absicherung des Datenzugriffs in SQL Server verhindert, dass eine erfolgreiche Anmeldung uneingeschränkten Zugriff auf die gehosteten Datenbanken eines Servers zur Folge hat. Der Administrator muss den Zugriff auf eine Datenbank explizit gewähren. Dies erfolgt mit dem Instrument des Datenbank- Benutzers (database user)
Mit dem Anlegen eines Datenbank Benutzer für ein Login wird innerhalb der Datenbank ein Prinzipal geschaffen, dem Zugriffsrechte auf Datenbankobjekte für das Login erteilt werden können. Der Datenbankbenutzer einer Datenbank ist defakto der Avatar des Logins in der Datenbank.
use KeplerBI go -- legt den Database User Newton an create user NEWTON for login [KOSMOS\NEWTON] go -- löscht den Datanbankbenutzer wieder drop user NEWTON go
Datenbankbesitzer (database owner)
Ein besonderer Datenbank Benutzer, den jede Datenbank hat, ist der Datenbankbesitzer, kurz dbo. Jede Datenbank hat genau einen Besitzer. Dieser besitzt implizit alle Rechte auf eine Datenbank. Dem Besitzer gehört auch das Schema dbo per Default.
Zum dbo wird man, wenn:
- man die Datenbank erstellt hat
- man mittels sp_changedbowner als Datenbankbesitzer zugewiesen wurde
- Mitglied der Serverrolle Sysadmin ist (z.B. sa)
Ist man als domaeneX/UserY angemeldet, und hat die Datenbank DMS erstellt, dann ist man in DMS auch automatisch der dbo.
Der DBO hat folgende Rechte:
- Mitglieder allen Datenbankrollen außer db_owner hinzufügen
- Datenbanken sichern und wiederherstellen
- Prüfpunkte mittels Checkpoint setzen
- Objektberechtigungen in der Datenbank erteilten
Der Besitzer einer Datenbank kann geändert werden. Mittels SSMS gelingt dies über die Eigenschaften des Server, Abteilung Files
Alternativ kann der Besitzer auch mit dem TSQL- Befehl ALTER AUTHORIZATION
geändert werden:
Doku TSQL
use master go -- Das Login sa (Sysadmin, SQL Benutzer) wird zum Besiter der Datenbank keplerBi alter authorization on database::keplerBi to sa
Implementierung der Authorisierung mittels Secuirity Token Services (STS) und Active Permission Set
Um auch ein Single Sign On mit Windows Benutzerkonten zu implementieren, werden Logins und Datenbankuser stets auf auf Security ID's eines Security Token Services wie WIF abgebildet. Den SID's wiederum sind Listen von Permissions auf Datenbankobjekte zugewiesen.
Ein Datenbankuser und sein zugehöriges Login werden vom STS auf dieselbe SID abgebildet.
WIF berechnet für jede SID basierend auf den Gruppenmitgliedschaften rekursiv ein sog. Security- Token. Dieses ist eine Liste aller SID's, die entweder die SID selber, oder die SID einer Gruppen ist, der sie angehört.
Im SQL- Server werden für jeden Datenbank- Benutzer zwei Security- Tokens bereitgestellt:
- sys.login_token
- Liste aller SID's, bestehend aus der SID des Logins und den SID's der Serverrollen, denen das Login angehört.
- sys.user_token
- Liste aller SID's, bestehend aus der SID des Datenbankbenutzers und den SID's der Datenbankrollen, denen der Benutzer angehört.
Die Vereinigung aller Permissions, die den SID's in den Token sys.user_token und sys.login_token zugeordnet ist, wird als Active Permission Set bezeichnet