Aufgabenblatt - Fakultät für Mathematik und Informatik

Werbung
Friedrich-Schiller-Universität Jena
Fakultät für Mathematik und Informatik
Institut für Informatik
Lehrstuhl für Datenbanken und Informationssysteme
Prof. Dr. K. Küspert
Dipl.-Math. K. Büchse
Dipl.-Inf. A. Göbel
Datenbankadministration
– Projekt 2: Autorisierung, Nutzerverwaltung und Rechtevergabe –
WS 2011/2012
Beginn: 2011-11-16
Abgabe: 2011-12-07
Besprechung: 2011-12-14
Einleitung
Zu den Hauptaufgaben eines (Datenbank-)Systemadministrators (SYSADM) gehört die Verwaltung
von Datenbanknutzern und den ihnen zugeteilten Rechten. Ziel dabei ist ein abgestuftes Gesamtkonzept von Kompetenzen und Zugriffsbeschränkungen.
DB2 UDB Version 9.7 besitzt im Gegensatz zu anderen Datenbanksystemen (z.B. Oracle) kein eigenes Nutzerkonzept, sondern verwendet die vom Betriebssystem (oder von einem separaten Produkt
wie Kerberos) bereitgestellten Nutzer und Nutzergruppen. Die Autorisierung und Rechtevergabe für
die datenbank-spezifische Funktionalität erfolgt dann durch DB2. DB2 besitzt zwei Konzepte zur
Rechtevergabe: Privileges (dt. Zugriffsrechte) und Authority level (auch Authorities, dt. Berechtigungsstufen). Diese Konzepte dienen zusammen der Zugriffssteuerung auf den Datenbankmanager
(DBM) und seine Datenbankobjekte. Benutzer können nur auf solche Objekte zugreifen, für die sie
berechtigt sind (authorization), d.h., für die sie über das erforderliche Zugriffsrecht oder die erforderliche Berechtigungsstufe verfügen.
Privileges erlauben es Nutzern, Datenbankressourcen zu erstellen oder auf sie zuzugreifen. Es werden
zwei Kategorien von Zugriffsrechten unterschieden, solche, die Aktionen für die Datenbank als Ganzes1
umfassen (Bsp.: CONNECT-Recht) und Zugriffsrechte, die sich auf einzelne Objekte innerhalb der
Datenbank beziehen (Bsp.: SELECT-Recht für eine Tabelle).
Authorities gruppieren Zugriffsrechte zur Realisierung eines Rollenkonzepts. DB2 bietet im Wesentlichen sieben Authority level: SYSADM (Systemadministrator), SYSCTRL, SYSMAINT, SYSMON,
SECADM (Sicherheitsadministrator), DBADM (Datenbankadministrator) und LOAD, welche jeweils
die Zugriffsrechte zusammenfassen, die für die angedachten Aufgaben notwendig sind. Abbildung 1
veranschaulicht die Hierarchie der Authorities und Privileges.
Zugriffsrechte werden in der Regel automatisch vergeben (z.B. beim Erstellen eines Datenbankobjekts
an den Erzeuger des Objekts, s.u.) oder von berechtigten Nutzern mit den SQL-Anweisungen GRANT
und REVOKE an einzelne Nutzer oder eine Gruppe von Nutzern explizit erteilt bzw. entzogen. Eine
weitere Möglichkeit der Rechtevergabe ist die Zugehörigkeit zu einer vom Datenbanksystem verwalteten symbolischen Gruppe. SYSADM, SYSCTRL, SYSMAINT und PUBLIC (umfasst alle Nutzer)
werden in dieser Weise verwaltet.
Eine Besonderheit sind implicit privileges (dt. implizite Zugriffsrechte), welche durch ein erteiltes
EXECUTE-Recht für ein Package (dt. Paket) erteilt werden. Pakete werden mit dem BIND-Befehl
an die Datenbank gebunden. Abhängig von den Optionen beim Binden werden alle Befehle im Paket
1
Für diese Kategorie von Zugriffsrechten wird in der DB2-Dokumentation und bei der Ausgabe einiger CLPKommandos gelegentlich auch irreführend der Begriff Authorities verwendet.
1
SYSADM
LOAD
(System Administrator)
Cannot see data
DBADM
SYSCTRL
(System Resource Administrator)
(Database Administrator)
SYSMAINT
Database Users with Privileges
(System Maintenance Administrator)
Can see and access data
SYSMON
(System Monitor Administrator)
SECADM
(Security Administrator)
Abbildung 1: Hierarchy of Authorities and Privileges
unabhängig von den tatsächlichen Rechten des Nutzers ausgeführt. D.h., der Nutzer führt Befehle
aus, die Rechte erfordern, über die er nicht direkt verfügen muss.
Ebenfalls eine Sonderstellung nimmt das ownership privilege (auch CONTROL-privilege, dt. Besitzerrecht) ein, das alle Zugriffsrechte für ein Objekt erteilt (z.B. bei Tabellen ALTER, DELETE,
INDEX, INSERT, UPDATE, REFERENCES und SELECT). Wird das Zugriffsrecht CONTROL an
einen Nutzer vergeben, so erhält er implizit auch alle untergeordneten Rechte, welche er aber auch
nach dem Entzug von CONTROL behält.
Eine Übersicht und die Details des Rechtekonzepts finden sich im DB2 Information Center im Abschnitt “Database Fundamentals” ⇒ “Security”.
Hinweise
Datenbank
Sie sollten Ihre im Projekt 1 transformierte Datenbank ADMIN löschen und neu erzeugen mit dem
folgenden Befehl:
> admin_db -f
2
Bitte beachten Sie, dass ein “Remove Database” im DB2 Control Center die Datenbank lediglich aus
dem Katalog entfernt (mit Hilfe des DB2 Kommandos UNCATALOG DATABASE).
Nutzer und Gruppen
Bevor Sie mit der Bearbeitung des Projekts beginnen, sollten Sie die Existenz aller der in Tabelle 1
angegebenen Nutzer und Gruppen im Betriebssystem überprüfen (für ?? ist wie üblich die jeweilige
Gruppennummer einzusetzen). Nutzen Sie dazu die AIX-Kommandos lsgroup und lsuser.
Aufgabenbereich
Systemadministrator
Datenbankadministrator
Backupoperator
Programmierer A
Programmierer B
Personalsachbearbeiter
Abteilungsleiter (Abt. 21)
Controller
Mitarbeiter
AIX-Nutzer
db2i??
dba??
mnt??
proga??
progb??
pers??
abt21l??
contr??
mit??
AIX-Gruppe
admi??
gmnt??
gprog??
gstd??
Tabelle 1: Nutzer und Gruppen
In den nachfolgenden Aufgaben dieses Teils werden Sie die Rollen der angegebenen Mitarbeiter des
Unternehmens übernehmen und deren Aufgaben ausführen. Dazu müssen Sie sich im Betriebssystem
AIX zur Bearbeitung jeder Aufgabe als der entsprechende Nutzer anmelden. Verwenden Sie dazu das
AIX-Kommando su - <username> (z.B. su - dba42).
Ändern Sie zunächst das Passwort und initialisieren Sie dann die DB2-Umgebung Ihrer Instanz durch
Ausführen des Skripts:
. /home/db2prak/admprak/db2i??/sqllib/db2profile
Damit dieses Skript stets beim Anmelden automatisch ausgeführt wird, sollten Sie für jeden Nutzer
den Aufruf in die Datei ∼/.profile jedes Nutzers mit aufnehmen. Legen Sie des Weiteren als Nutzer
mnt?? einen Ordner tmp an.
Bearbeitung
Es ist anzuraten, die Aufgaben in der angegebenen Reihenfolge zu bearbeiten, da sie teilweise aufeinander aufbauen und voneinander abhängig sind.
Die mit einem Stern markierten Aufgaben bzw. Teilaufgaben sind nur von Studierenden
eines Diplomstudiengangs zu bearbeiten.
Alle Aufgaben und Ergebnisse sind zu dokumentieren: Anfragen, Befehle, Ergebnisse
und ggf. der Lösungsweg mit sämtlichen Rechnungen sind mit evtl. Erläuterungen und
Begründungen abzugeben. Reduzieren Sie die DB2-Ausgaben stets auf die relevanten
Teile, so sind die Ergebnismengen von SQL-Anfragen stets auf maximal 20 Tupel zu begrenzen. Notieren Sie Ihr Kennzeichen (Login) und die Namen der zugehörigen Gruppenmitglieder auf dem Deckblatt Ihrer Aufgabenlösungen. Geben Sie Ihre Lösung in
schriftlicher Form (geheftet oder getackert, ein- oder zweispaltig) als auch elektronisch
per E-Mail an [email protected] bis zur Veranstaltung am Abgabetermin
ab.
3
Teil 1 Zugriff auf Datenbanken und Datenbankobjekte
Aufgabe 1 (Arbeit als Datenbanksystemadministrator (AIX-Nutzer db2i??))
Dokumentieren Sie die unternommenen Schritte zur Aufgabenlösung und die vergebenen Rechte durch
entsprechende Anfragen.
a) Welche Authorities und welche Datenbank- und Tabellen-Privileges besitzen Sie? Erläutern Sie
die Rechte (jeweils ein Satz).
b) Installieren Sie einen Datenbankadministrator (DBA, Nutzer dba??) für die Datenbank ADMIN.
Er soll alle Datenobjekte der Datenbank ADMIN sehen und bearbeiten dürfen sowie für die
Erteilung von Zugriffsrechten auf Datenbankebene an andere Nutzer zuständig sein. Zusätzlich sei
es ihm erlaubt, die Instanz zu starten und zu stoppen sowie Backup- und Recovery-Operationen
durchzuführen. Er soll die Datenbank jedoch weder löschen noch neue Datenbanken erzeugen
dürfen.
c) Richten Sie einen Vertreter (Nutzer mnt??) für den Datenbankadministrator ein, der in dessen
Abwesenheit die anstehenden Sicherungsaufgaben der Datenbank übernehmen kann. Dieser soll
allerdings keinen Zugriff auf die Daten der Datenbank ADMIN haben. Was müssen Sie dafür tun?
Aufgabe 2 (Arbeit als Datenbankadministrator (AIX-Nutzer dba??))
Dokumentieren Sie die unternommenen Schritte zur Aufgabenlösung und die vergebenen Rechte durch
entsprechende Anfragen.
a) Aufgrund von Einsparungen im Personalwesen soll der Mitarbeiter pers??, welcher eigentlich in der
Personalabteilung tätig ist (und somit der Firma nicht so viel Geld kostet), in den Arbeitsablauf der
Firma integriert werden und Informationen über alle Kunden im Unternehmen abfragen dürfen. Er
soll alle Spalten der Tabelle CUSTOMER, ausgenommen der hochsensiblen Spalte C_ACCTBAL, sehen
dürfen. Weiterhin habe er das Recht, alle Spalten, ausgenommen C_ACCTBAL und C_NATIONKEY, zu
aktualisieren.
Welche Möglichkeiten sehen Sie als Datenbankadministrator für die Absicherung eines derart beschränkten Datenzugriffs? Setzen Sie mindestens eine der Möglichkeiten (als seperate Aufgabe bei
gleicher Ausgangssituation) für Abfragen und mindestens zwei Möglichkeiten für Änderungsoperationen um.
b*) Nehmen Sie an, dass die Nutzer proga?? und progb?? für Programmieraufgaben für die Datenbank ADMIN im Unternehmen angestellt sind. Im Einzelnen sollen sie folgende Aufgaben erfüllen
können:
• Entwickeln/Testen von Anwendungsprogrammen mit Lesezugriff auf die Tabelle ORDERS sowie
• Erstellen von Tabellen mit Testdaten.
Stellen Sie als DBA die für diese Aufgaben notwendigen Rechte zur Verfügung. Welche sind das?
Welche Möglichkeiten haben Sie, die Rechte zu erteilen? Beachten Sie dabei, dass die Anwendungsprogrammierer zur Gruppe gprog?? gehören.
c*) Der Abteilungsleiter names “Clerk#000000926” (Nutzer abt21l??) soll nur Daten der Bestellungen
aus der Tabelle ORDERS von den Kunden mit der Id von 3000 bis 3999 (siehe Tabelle CUSTOMER)
bearbeiten (einfügen, lesen, ändern und löschen) dürfen. Realisieren Sie die Autorisierung dieser
Anforderung in geeigenter Weise. Dabei ist sicherzustellen, dass Änderung von abt21l?? nur die
Daten in seinem Zugriffsbereich vor und nach der Änderung betreffen, auch bei Änderungen der
Id.
Wie würden Sie vorgehen, wenn ähnliche Bedingungen (selektives Zugreifen auf Bestelldaten abhängig von der Kunden-ID) für andere, potentiell sehr viele (> 10000) Nutzer zu bewerkstelligen
sind? Betrachten Sie hier die folgenden Fälle:
• Alle Nutzer können auf Bestelldaten derselben Kunden zugreifen.
• Jeder Nutzer ist für Bestelldaten anderer Kunden zuständig, wobei allerdings die Kunden-IDs
4
zusammenhängend sind.
Aufgabe 3 (Arbeit als Backupoperator (AIX-Nutzer mnt??))
Welche der folgenden Kommandos und Statements können Sie auf der Datenbank ADMIN nicht ausführen? Beachten Sie, dass Sie für bestimmte Befehle nicht nur die entsprechenden Datenbankrechte
besitzen müssen, sondern auch auf Betriebssystemebene Rechte zu setzen sind.
a) db2 BACKUP DB admin TO /home/db2prak/admprak/group??/mnt??/tmp buffer 8
b) db2 LIST TABLESPACES
c) db2 “SELECT * FROM db2i??.REGION”
Begründen Sie kurz das Ergebnis. Zwecks Vermeidung von Speicherplatzverschwendung sollten Sie
eventuell erstellte Backup-Dateien nach Bearbeitung der Aufgabe löschen.
Aufgabe 4 (Arbeit als Programmierer B (AIX-Nutzer progb??)*)
a) In der Controlling-Abteilung des Unternehmens werden statistische Daten gesammelt. Für einen
Bericht benötigt der Nutzer contr?? die Anzahl aller Bestellungen aus dem Jahr 1995. Ihr Kollege, Programmierer A, hat hierfür bereits ein embedded SQL Programm statpro.sqc verfasst, das
diese Anzahl ermittelt. Dieses Programm wertet die Spalte O_ORDERDATE der Tabelle ORDERS aus.
Der Quelltext des Programms kann unter ∼db2i00/src/statpro.sqc gefunden werden. Passen
Sie ihn an ihren Nutzer an und erläutern Sie die theoretische Vorgehensweise, damit der Nutzer
contr?? das Programm ausführen kann. Beachten Sie insbesondere das Erteilen des entsprechenden Ausführungsrechts.
b) Wie muss das entsprechende Paket an die Datenbank gebunden werden, damit die aktuellen Zugriffsrechte des Nutzers contr?? beim Ausführen des Programms Beachtung finden?
Aufgabe 5 (Arbeit als Abteilungsleiter (AIX-Nutzer abt21l??)*)
Dokumentieren Sie die unternommenen Schritte zur Aufgabenlösung.
a) Ermitteln Sie die Daten aller Bestellungen der Ihnen zugeteilten Kunden (siehe Aufgabe 2a).
b) Erhöhen Sie den Kontostand des Kunden mit der ID 3920 um 5%. Der neue Kontostand ist dabei
innerhalb der Anweisung zu errechnen.
c) Ordnen Sie die Bestellung mit der ID 170530 dem Kunden mit der ID 6543 zu.
d) Ermitteln Sie alle Bestelldaten.
Aufgabe 6 (Kaskadierende SELECT-Rechte*)
Angenommen, der Nutzer mit?? erhält das Zugriffsrecht SELECT für die Tabelle NATION und erstellt
eine Sicht, welche alle Spalten dieser Tabelle abfragt. Kann er mit dieser Sicht noch auf die darunterliegende Basistabelle zugreifen, wenn ihm das SELECT-Recht für die Tabelle wieder entzogen
wurde?
Teil 2 LBAC - Label-based Access Control
DB2 bietet seit der Version 9.1 die Möglichkeit der „kennzeichenbasierten Zugriffskontrolle“, mit deren Hilfe auf Spalten- oder Zeilenebene Lese- und Schreibrechte für einzelne Benutzer vergeben und
gesteuert werden können. Hierfür muss der Sicherheitsadministrator (security administrator ) „Sicherheitskennzeichen“ (security label) anlegen, welche einerseits den Benutzern und andererseits den Daten
zugewiesen werden.
Aufgabe 7 (Theoretische Grundlagen)
a) Geben Sie an, welche Rechte der Sicherheitsadministrator (authority SECADM) besitzt.
b) Um den Zugriff auf Tabellen über LBAC zu steuern, müssen folgende Schritte unternommen
werden:
5
(i) Die Benutzer müssen ein „allgemeines“ Lese- bzw. Schreibrecht auf den Tabellen besitzen
(und sich natürlich mit der Datenbank verbinden können).
(ii) Es müssen entsprechende Sicherheitskomponenten (security label component ), Sicherheitspolicies (security policy) und Sicherheitskennzeichen erstellt werden.
(iii) Die Label müssen den entsprechenden Benutzern zugewiesen (grant) werden.
(iv) Die Tabellen müssen jeweils eine Sicherheitspolicy zugewiesen bekommen.
(v) Soll die Zugriffskontrolle auf Zeilenebene passieren, muss den entsprechenden Tabellen eine
weitere Spalte hinzugefügt werden, in welche die entsprechenden Labels (pro Zeile) eingetragen werden.
Erläutern Sie, was Sicherheitskomponenten, Sicherheitspolicies und Sicherheitskennzeichen sind,
welche Möglichkeiten der Sicherheitsadministrator bei ihrer Erstellung hat und was er dabei beachten muss.
c) Vergleichen Sie die Schritte aus der Teilaufgabe b) mit den Rechten, die der Sicherheitsadministrator besitzt (s. Teilaufgabe a)). Welche Schritte kann er nicht selbst vornehmen?
Aufgabe 8 (Zugriffsschutz für die Tabelle db2i??.SUPPLIER)
Für diese Aufgabe nehmen wir an, dass die Lieferanten (supplier) des Unternehmens folgendermaßen
betreut werden:
Für die europäischen Lieferanten ist der Abteilungsleiter der Abteilung 21 zuständig. Um die asiatischen Lieferanten (dazu zählen auch die des mittleren Ostens, für einen einfachen Ausschluss letzterer
gibt es aber zwei Einträge in der Tabelle db2i??.REGION) kümmert sich der Controller. Der Mitarbeiter mit?? ist für die afrikanischen Lieferanten verantwortlich und die amerikanischen Lieferanten
werden vom Personalsachbearbeiter betreut (die Zuständigkeit für die Lieferanten ergab sich übrigens
anhand der Sprachkenntnisse der jeweiligen Verantwortlichen).
Jeder Betreuer soll vollen Zugriff (lesend und schreibend) auf seine Lieferanten haben, die anderen
Lieferanten sollen aber für ihn nicht sichtbar sein. Nur der Controller soll sich über den Stand sämtlicher Lieferanten informieren können.
Dokumentieren Sie die unternommenen Schritte zur Aufgabenlösung.
a) Erteilen Sie als Systemadministrator dem Nutzer mnt?? die SECADM-Authority und geben Sie als
Sicherheitsadministrator den Benutzern pers??, abt21l??, contr?? und mit?? Lese- und Schreibzugriff für die Tabelle db2i??.SUPPLIER.
b) Ermitteln Sie für jeden Benutzer ein Tupel, welches er laut Szenario ändern darf.
c) Erstellen Sie eine passende Sicherheitskomponente, welche den Anforderungen des Szenarios genügt.
d) Legen Sie eine Sicherheitspolicy an, welche die automatische Vergabe des Sicherheitskennzeichens
des Benutzers an den einzufügenden oder zu ändernden Datensatz nur dann zulässt, wenn der
Benutzer das Recht besitzt, explizit Sicherheitskennzeichen zu schreiben.
e) Erstellen Sie nun passende Labels und weisen Sie diese anhand der Vorgaben des Szenarios den
Benutzern zu.
f) Passen Sie nun noch als dba?? die Tabelle db2i??.SUPPLIER an. Beachten Sie hierbei, dass Sie als
Sicherheitsadministrator auch sogenannte „exemptions“ zuweisen können.
g) Testen Sie für jeden Benutzer:
(i) Auf wieviele Tupel kann er (lesend) zugreifen?
(ii) Kann er das von Ihnen in Teilaufgabe b) ermittelte Tupel ändern?
(iii) Kann er eines der Tupel ändern, welche Sie für die anderen Benutzer bestimmt haben?
6
Herunterladen