mk-prg-net \ ms-sql \admin \ access-control \prinzipal-permission-securable

Principals, Permissions und Securables

Der Zugriff auf die Ressourcen eines SQL Servers ist in der Regel auf Programme und Benutzer einzuschränken, die der Administraotor als vertrauenswürdig befindet, und die den Zugriff auf die Ressourcen benötigen. Die Benutzer und Programme werden verallgemeinert als Principal bezeichnet, denen auf die gesicherten Ressourcen (Securable) mittels einer Permisson der Zugriff erlaubt, oder explizit verwehrt werden kann.

Struktur einer Berechtigung

Sicherungsfähige Elemente (Securables) und ihre Besitzer

Die Verhältnisse im SQL- Server sind ähnlich wie in unserer kapitalistischen Welt: jedes wertvolle Ding hat einen Besitzer (owner) ! Die wertvollen Dinge sind hier die sicherungsfähigen Elemente, oder kurz Securables, wie Serverinstanz, Datenbanken, Datenbank- Schemen, Tabellen u.s.w..

Die gesamte Serverinstanz z.B. ist ein securable, die von den Systemadministratoren besessen wird. Sie dürfen mit ihr tun und lassen, wass sie wollen !

Der gesamte Inhalt eines Securables ist automatisch auch im Besitz des Besitzers. Möchte jemand auf den Inhalt zugreifen, dann benötigt er seine Genehmigung (permission). Die Genehmigung (oder auch Berechtigung) kann damit immer nur vom Besitzer erteilt werden.

Für Entitäten einer Datenbank, wie Tabellen und gespeicherte Prozeduren, wird der Besitzer durch ihre zwingende Zugehörigkeit zu einem Schema festgelgt. Datenbankbenutzer können Schemen direkt besitzen, und sind damit indirekt Besitzer aller enthaltener Entitäten.

Erstbesitz dem Schöpfer

Wie in der realen Welt gehört dem Schöpfer zunächst seine Schöpfung. Erzeugt ein Administrator eine Datenbank, dann ist er zunächst deren Besitzer. Als Datenbankbesitzer kann er wiederum Entitäten wie Tabellen und gespeicherte Prozeduren anlegen, die dann automatisch in seinem Besitz sind.

Michaleangelo: Die Erschaffung Adams (Gemeinfrei)

Die Besitzverhältnisse können sich auch ändern, indem z.B. mittels ALTER AUTHORIZATION ON ... TO ... der Besitz an einem securable an ein anderes Principal übertragen wird. Weiteres dazu siehe unten.

Mehrstufiger Zugriffsschutz

Übersicht der Zugriffsbeschränkungen eines Benutzers auf SQL- Serverressourcen.

Beim Zugriff auf eine Entität in einer Datenbank sind mehrere Sicherheitsbarrieren zu überwinden, wie das Bild oben zeigt. Zuerst muss eine erfolgreiche Anmeldung an der Serverinstanz gelingen (Login). Dann muss die Anmeldung als Datenbankbenutzer in der Datenbank eingetragen sein, in welcher die gesicherte Entität aufbewahrt wird. Der Datenbankbenutzer wiederum muss über ausreichend Rechte verfügen, um auf die Ressource in gewünschter Art und Weise zuzugreifen.

Berechtigungen (Permissions)

Ein Besitzer wie der Systemadministrator ("besitzt" Datenbankinstanz) kann anderen Prinzipals den Zugriff auf seine Bsitztümer (securables) genehmigen oder explizit verwehren mittels folgender TSQL Befehle:

Achtung: Verbote haben Vorrang vor einer Erlaubnis ! Z.B. wird durch ein aus Mitgliedschaft geerbtes Verbot einer Rolle eine mögliche individuelle Erlaubnis für einen Datenbankbenutzer eliminiert.

Typen von Berechtigungen

Anweisungsberchtigungen

Objektberechtigungen

Schränken die Ausführung fogender TSQL- Anweisungen für einen Datenbankbenutzer ein:

  • BACKUP DATABASE
  • BACKUP LOG
  • CREATE DATABASE
  • CREATE DEFAULT
  • CREATE FUNCTION
  • CREATE PROCEDURE
  • CREATE RULE
  • CREATE TABLE
  • CREATE VIEW

Schränken die Ausführung folgender Anweisungen pro Datenbankobjekt (z.B: Tabelle) für einen Datenbankbenutzer ein:

  • SELECT
  • INSERT
  • DELETE
  • EXEC <Stored Procedure>

Einstellbar in: Enterprisemanager/ <Server>/ <Datenbank>/ Kontextmenü-> Eigenschaften/ Berechtigungen

Einstellbar in: Enterprisemanager/ <Server>/ <Datenbank>/ Tabellen/ Kontextmenü-> Eigenschaften/Berechtigungen

An wen können Serverberechtigungen erteilt werden

An wen können Datenbankberechtigungen erteilt werden