mk-prg-net \ ms-sql \admin \ access-control \database-user

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.

Logins, die dem dbo zugeordnet werden können
Zum dbo wird man, wenn:

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:

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