11.12.2006Thermische Feldtheorie, Marcus Tassler2 Einleitung.
Betrieb von Datenbanken Marco Skulschus & Marcus Wiederstein Programm-Module Lehrbuch, Kapitel 7.
-
Upload
emmaline-lauster -
Category
Documents
-
view
109 -
download
3
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...