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

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

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

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

Betrieb von DatenbankenMarco Skulschus & Marcus Wiederstein

Programm-Module

Lehrbuch, Kapitel 7

Page 2: Betrieb von Datenbanken Marco 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

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

Modul-Inhalt

1. Sicherheit

2. Sicherung und Wiederherstellung

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

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.

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

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

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

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.

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

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

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

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.

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

Sicherheit: Datensicherheit

Tabelle

Sicht (View)

Tabelle

Prozedur

Funktion

FormularBericht

Software-ObjekteExtern Intern

Tabelle

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

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

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

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

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

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

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

Sicherheit: Benutzer

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

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

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 ]

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

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.

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

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.

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

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.

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

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.

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

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' }

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

Fragen...

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

Modul-Inhalt

1. Sicherheit

2. Sicherung und Wiederherstellung

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

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 ] } ]

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

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

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

Fragen...