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