Betrieb von Datenbanken Marco Skulschus & Marcus Wiederstein Programm-Module Lehrbuch, Kapitel 7.

Post on 05-Apr-2015

109 views 3 download

Transcript of Betrieb von Datenbanken Marco Skulschus & Marcus Wiederstein Programm-Module Lehrbuch, Kapitel 7.

Betrieb von DatenbankenMarco Skulschus & Marcus Wiederstein

Programm-Module

Lehrbuch, Kapitel 7

Seminar-Inhalt

•Grundlagen•Einfache Abfragen•Komplexe Abfragen•Datenmanipulation•Grundlagen T-SQL•Programm-Module in der DB•Administration

Modul-Inhalt

1. Sicherheit

2. Sicherung und Wiederherstellung

Sicherheit: Übersicht

Sicherheit hat viele unterschiedliche Aspekte, die auch in vielfältiger Weise miteinander verknüpft sind.

– Benutzer sind eigene Objekte der Datenbank. Sie können einem tatsächlich existierendem Benutzer entsprechen wie Anton Ebenhof oder einem virtuellen Benutzer wie Außendienst-Mitarbeiter oder Webshop-Besucher.

– Rollen: Für die Abbildung Rechtestrukturen, die sich mehrere Benutzer teilen, kann man Rollen verwenden. Sie stellen Rechtebündel dar, sodass Rechte gemeinsam erstellt, verwaltet und auch zugewiesen werden können.

Sicherheit: Übersicht

Sicherheit hat viele unterschiedliche Aspekte, die auch in vielfältiger Weise miteinander verknüpft sind.

– Tabellen enthalten direkt die Daten, welche von einer Abfrage in einem Bericht oder einem Programm sowie weiteren Datenbank-Objekten wie Prozeduren, Funktionen und Sichten genutzt werden. Diese verschiedenen Objekte könnten jeweils für sich ebenfalls einen Sicherheitsmechanismus abbilden.

• Sicht• Bericht• Prozedur und Funktion

Sicherheit: Übersicht

Sicherheit hat viele unterschiedliche Aspekte, die auch in vielfältiger Weise miteinander verknüpft sind.

– Nicht nur Daten sollen geschützt werden, sondern auch Objekte. Dies bedeutet, dass die Zugriffskontrolle sich auch auf den gesamten Schema-Katalog und die in ihm enthaltenen Objekte ausdehnen muss. Objekte müssen vor unkontrollierten Veränderung oder Löschung geschützt werden.

Sicherheit: Übersicht

Tabelle

Sicht (View)

Tabelle

Prozedur

Funktion

FormularBericht

Software-ObjekteExtern Intern

Benutzer:Anton Ebenhof

Rolle:Administrator

gehört zu

GRANTREVOKE

Befehle aus DML, DCL, DDL

CREATEALTERDROP

Benutzer/Rollenverwalten

Rechte verwalten

Operationen / Rechte

SQ

L

Sicherheit: Datensicherheit

Ein Formular kann für die Anzeige und auch für die Bearbeitung von Daten genutzt werden. Evtl. ist es auch möglich, selbst Filter vorzugeben und Daten auszuwählen, die zunächst in einer Übersichtsanzeige und dann in einer Detailansicht präsentiert werden.

Ein Bericht fasst Daten zusammen, erlaubt normalerweise sehr viel stärker auch in interaktiven Szenarien die Filterung und Detailanzeige von weiteren Daten. Teilweise werden hier auch Daten nicht nur präsentiert, „wie sie sind“ oder in Aggregaten, sondern auch in Diagrammen und sonstigen grafischen Darstellungen.

Sichten wie auch Prozeduren und Funktionen greifen auf Daten zu, führen Berechnungen und Transformationen durch, aggregieren Daten und stellen sie bereits gefiltert oder für weitere Filterungen und Transformationen bereit. Sie können auch ganz bewusst dazu genutzt werden, eine Schicht zwischen den Daten und externen Anwendungen aufzubauen.

Sicherheit: Datensicherheit

Tabelle

Sicht (View)

Tabelle

Prozedur

Funktion

FormularBericht

Software-ObjekteExtern Intern

Tabelle

Sicherheit: Zugriffskontrolle

Datenbank-Server (MS Windows Server)

Datenbank Management System (DBMS)(MS SQL Server)

Datenbank 1(DB)

Datenbank 2(DB)

Domäne 1Benutzer A

Domäne 1Benutzer ADomäne 1

Benutzer A

Domäne 1Benutzer A

Sicherheit: Zugriffskontrolle

Datenbank-Server (MS Windows Server)

Datenbank Management System (DBMS)(MS SQL Server)

Datenbank 1(DB)

Datenbank 2(DB)

SQL Server 1Benutzer B

Benutzer C

Direkter Zugriff

Anonymer Benutzer

Web Server / Internet

Sicherheit: Anmeldung

CREATE LOGIN loginName WITH <option_list1>  <option_list1> ::= PASSWORD = { 'password' | hashed_password HASHED } [ MUST_CHANGE ] [ , <option_list2> [ ,... ] ] <option_list2> ::= SID = sid | DEFAULT_DATABASE = database | DEFAULT_LANGUAGE = language | CHECK_EXPIRATION = { ON | OFF} | CHECK_POLICY = { ON | OFF} | CREDENTIAL = credential_name

Sicherheit: Benutzer

CREATE USER user_name [ { { FOR | FROM } { LOGIN login_name } | WITHOUT LOGIN ] [ WITH DEFAULT_SCHEMA = schema_name ]

Sicherheit: Rechte

GRANT { ALL [ PRIVILEGES ] } | permission [ ( column [ ,...n ] ) ] [ ,...n ] [ ON [ class :: ] securable ] TO principal

[ ,...n ] [ WITH GRANT OPTION ] [ AS principal ]

DENY { ALL [ PRIVILEGES ] } | permission [ ( column [ ,...n ] ) ] [ ,...n ] [ ON [ class :: ] securable ] TO principal [ ,...n ] [ CASCADE] [ AS principal ]

REVOKE [ GRANT OPTION FOR ] { [ ALL [ PRIVILEGES ] ] | permission [ ( column [ ,...n ] ) ] [ ,...n ] } [ ON [ class :: ] securable ] { TO | FROM } principal [ ,...n ] [ CASCADE] [ AS principal ]

Sicherheit: Rechteweitergabe

<<

WITHGRANTOPTION

WITHGRANTOPTION

WITHGRANTOPTION

<

WITH GRANT OPTION ermöglicht es dem Benutzer, anderen seine eigenen Rechte zu geben.

An den Knoten sitzen die Benutzer mit dem Privileg, zumindest ihre Rechte zu vergeben oder innerhalb ihres Teams leichte Einschränkungen vornehmen zu können.

Dies erspart dem Administrator jedes Mal selbst Rechte zu vergeben.

Eine andere und evtl. auch bessere Lösung ist der Einsatz von Rollen, die mehrere Rechte bündeln und dadurch leichter zu handhaben sind.

Sicherheit: Rechteweitergabe

WITHGRANTOPTION

WITHGRANTOPTION

1. Der Benutzer B kann dann weiterhin das Recht x ausüben, auch wenn der ihm das Recht erteilende Benutzer A es verliert.

2. Der Benutzer B soll ebenfalls sein Recht verlieren und auch alle weiteren Benutzer, welche das Recht x von ihm erhalten haben.

Der Fall des kakadierenden Rechteentzugs tritt dann ein, wenn beim REVOKE-Befehl GRANT OPTION FOR ... CASCADE verwendet wird.

Innerhalb des Rechtebaums können im Moment des Rechteentzugs nachgelagerte Rechteentzüge entstehen.

Man kann sich zwei Fälle vorstellen, wobei folgende Ausgangssituation existiert: Der Benutzer A, welcher das Recht x verliert, könnte dieses Recht einem Benutzer B erteilt haben.

Sicherheit: Sicherheit von Programm-Modulen

Datenbank A

Benutzer A

Benutzer B

Tabelle 1Benutzer D

ProzedurBenutzer A

Sicht 1Benutzer C

Datenbank B

Sicht 1Benutzer A

1

2

3

4

In (1) ist er autorisiert, die Prozedur auszuführen, weil er die Berechtigung von A erhalten hat.

Diese Prozedur ruft in (2) eine Sicht von Benutzer C ab, wobei nun die vollständigen Berechtigungen abgerufen werden, weil sich beide Besitzer unterscheiden. Sofern hier auch Benutzer B für die Sicht autorisiert ist, werden die Daten zurückgeliefert.

Verschiedene Objekte haben verschiedene Besitzer, wobei Benutzer B selbst gar kein Besitzer irgendeines Objekts ist, sondern er nur von Benutzer A die Berechtigungen erhalten hat, die Prozedur von Benutzer A auszuführen.

Sicherheit: Sicherheit von Programm-Modulen

Datenbank A

Benutzer A

Benutzer B

Tabelle 1Benutzer D

ProzedurBenutzer A

Sicht 1Benutzer C

Datenbank B

Sicht 1Benutzer A

1

2

3

4

Diese Sicht wirkt sich nun wiederum in (3) auf eine Tabelle aus, deren Besitzer Benutzer D ist. Da hier erneut ein Besitzerwechsel stattfindet, müssen die Berechtigungen abgerufen werden, und auch Benutzer B wird auf Nutzungsberechtigung dieser Tabelle überprüft.

Schließlich ist in (4) auch noch die datenbankübergreifende Besitzverkettung dargestellt. Benutzer B hat die Berechtigung von Benutzer A an dieser Sicht und darf daher sogar von einer anderen DB die Daten abrufen.

Sicherheit: Sicherheit von Programm-Modulen

CALLER (Standardwert) legt fest, dass die Prozedur im Sicherheitskontext des Aufrufenden, d.h. des Benutzers, ausgeführt wird.

SELF legt fest, dass die Prozedur im Sicherheitskontext des Besitzers der Prozedur ausgeführt wird.

OWNER legt fest, dass die Prozedur nur im Sicherheitskontext des Besitzers ausgeführt wird. Hier ist keine Rolle oder Gruppe möglich, nur ein einzelnes Benutzerkonto.

<user_name> legt einen speziellen Benutzer fest, in dessen Sicherheitskontext die Prozedur ausgeführt werden soll.

Funktionen (außer inline table-valued-Funktionen), Prozeduren und DML-Trigger

{ EXEC | EXECUTE } AS { CALLER | SELF | OWNER | 'user_name' }

Fragen...

Modul-Inhalt

1. Sicherheit

2. Sicherung und Wiederherstellung

Sicherung und Wiederherstellung

<general_WITH_options> [ ,...n ]::=--Backup Set Options COPY_ONLY | { COMPRESSION | NO_COMPRESSION } | DESCRIPTION = { 'text' | @text_variable } | NAME = { backup_set_name | @backup_set_name_var } | PASSWORD = { password | @password_variable } | { EXPIREDATE = { 'date' | @date_var } | RETAINDAYS = { days | @days_var } }

Sicherung

BACKUP DATABASE { database_name | @database_name_var } TO <backup_device> [ ,...n ] [ WITH { DIFFERENTIAL | <general_WITH_options>

[ ,...n ] } ]

Sicherung und Wiederherstellung

Wiederherstellung

RESTORE DATABASE { database_name | @database_name_var } [ FROM <backup_device> [ ,...n ] ] [ WITH { [ RECOVERY | NORECOVERY | STANDBY = {standby_file_name | @standby_file_name_var } ] | , <general_WITH_options> [ ,...n ] | , <point_in_time_WITH_options—RESTORE_DATABASE> } [ ,...n ] ]

<general_WITH_options> [ ,...n ]::= MOVE 'logical_file_name_in_backup' TO 'operating_system_file_name' [ ,...n ] | REPLACE | RESTART | RESTRICTED_USER

Fragen...