Datenschutz in DBMS Benutzerverwaltung Rechteverwaltung

Slides:



Advertisements
Ähnliche Präsentationen
Sicherheitsaspekte Sicherheit im DBMS
Advertisements

ER-Datenmodell und Abfragen in SQL
Folien 2-5, 7-8 © Prof. Dr. Manfred Rössle (FH Aalen)
MySQL.
Prof. Dr. Andreas Schmietendorf
Allgemeine Technologien II
Systemüberblick Beispiele: Microsoft Access Oracle Ingres Informix
KarczewskiDatenbanken II1 Objekt-Relationale (OR) Datenbanken Übersicht Einführung: Objekt-relationale Erweiterungen von SQL (ORSQL) Objekte und Tabellen.
Objektorientierte Datenbanken
SQL als Abfragesprache
Universität zu Köln Kurs Dedizierte Systeme
SQL als Abfragesprache
Datensicherheit in DBMS
IS: Datenbanken, © Till Hänisch 2000 CREATE TABLE Syntax: CREATE TABLE name ( coldef [, coldef] [, tableconstraints] ) coldef := name type [länge], [[NOT]NULL],
SQL/XML. © Prof. T. Kudraß, HTWK Leipzig 2 2 Motivation Speicherung von XML in allen großen kommerziellen DBMS vorhanden proprietäre Lösungen für die.
Otto-von-Guericke-Universität Magdeburg Gamal Kassem 1 Tabellenzeile mit READ lesen READ TABLE itab INDEX idx READ TABLE itab WITH KEY comp1 = f1.... Compn.
Otto-von-Guericke-Universität MagdeburgGamal Kassem Übung 7 Reports mit Datenbankzugriff.
Datenintegrität Referentielle Integrität create table
Kapitel 15: Sicherheit Oliver Vornberger
1 Datenintegrität Statische Bedingung (jeder Zustand) Dynamische Bedingung (bei Zustandsänderung) Bisher: Definition eines Schlüssels 1:N - Beziehung Angabe.
1 Kapitel 8: Datenintegrität. 2 Datenintegrität Statische Bedingung (jeder Zustand) Dynamische Bedingung (bei Zustandsänderung) Bisher: Definition eines.
Datenbanken 10: Einfügen, Ändern, Löschen
Erhard Künzel für Info 9. Klasse: Digitale Schule Bayern © Erhard Künzel.
Einführung MySQL mit PHP
2.2 Definition eines Datenbankschemas (SQL-DDL)
SQL in Visual FoxPro. © 1999 TMN-Systemberatung GmbH SQL Historie n SQL - Structured Query Language n In den 70er Jahren von IBM entwickelt n 1986 zum.
objekt-relationale Datenbanken
Datenbankentwicklung IV-LK
SQL PHP und MySQL Referat von Katharina Stracke und Carina Berning
Relationale Datenbanken III
Betrieb von Datenbanken Marco Skulschus & Marcus Wiederstein Programm-Module Lehrbuch, Kapitel 7.
FH-Hof Standard Query Language Richard Göbel. FH-Hof Geschichte der Sprache SQL System/R-Projekts von IBM zu Beginn der 70er Jahre: Entwicklung der Sprache.
Betrieb von Datenbanken Marco Skulschus & Marcus Wiederstein Datenmanipulation Lehrbuch, Kapitel 4.
WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
WS 2011/12 Datenbanksysteme Mi 15:15 – 16:45 R Vorlesung #9 Physische Datenorganisation.
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #8 SQL (Teil 3)
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #7 SQL (Teil 4)
WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #7 SQL (Teil 4)
WINlearn Technische Spezifikation der Benutzerstruktur Gruppe 4.
Datenbanksysteme für hörer anderer Fachrichtungen
Einführung in Datenbankmodellierung und SQL
Vorlesung #10 Physische Datenorganisation
Relationales Datenmodell und DDL
Datenbankanbindung mit
Transaktionen Dr. Heidrun Bethge Datenbanken II.
Structured Query Language
8 Erzeugen und Verwalten von Tabellen Ziele Kennenlernen der wichtigsten Datenbankobjekte Anlegen von Tabellen Datentypen zur Definition von Spalten.
Vorlesung #5 SQL (Teil 2).
Integritätsbedingungen (Constraints)
10 Sichten (Views) Ziele Verständnis einer View Erzeugen einer View Lesen von Daten durch eine Sicht Ändern der Definition von Views Einfügen, Ändern.
WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
1 Sicherheit durch technischen Schutz Aufgabenkomplexe des technischen Schutzes:  Autorisierung = Festlegung der Schutzregeln, d.h. Vergabe von Zugriffsrechten.
11 Zugriffskontrolle (Access Control) Ziele Privilegien Rollen GRANT und REVOKE Befehl Privilegien Rollen GRANT und REVOKE Befehl.
Datenbank für Skriptenverkauf
WS 2014/15 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #9 SQL Zusammenfassung.
Datenbanken erstellen mit PostgreSQL
Datenbanken abfragen mit SQL
SQL Lutz KleinostendarpJOBELMANN-SCHULE Datendefinition Die Organisation einer Datenbank basiert auf einer Anzahl verschiedener Objekte. Diese können physikalischer.
DB2 UDB im z/VSE Heinz Peter Maassen – Lattwein GmbH COURSE Tagung Bad Hersfeld 2008.
Thomas Tretter, 10. Februar 2004Oracle Label Security1 Oracle Label Security (fine grained access control) 10. Februar 2004.
Reorganisation und Administration großer SAP-DB Manfred Riemer SAP AG (z.B. MCOD-Systeme)
SQL Structured Query Language Enzio Thiem. INHALT CREATE TABLE Anweisung Gängige Datentypen Beispiel CREATE TABLE Beispiel CREATE TABLE - erweitert Beispiel.
SQL Basics Schulung –
Sprachumfang von SQL Vier Kategorien DDL (Data Definition Language)
Vorlesung #5 SQL (Teil 2).
Vorlesung #7 SQL (Teil 4).
Abfragesprache SQL in ORACLE
Create Table, Rechte und Rollen
(Structured Query Language)
 Präsentation transkript:

Datenschutz in DBMS Benutzerverwaltung Rechteverwaltung Rollen und Gruppen Views Audit Dr. Heidrun Bethge Datenbanken II

Datenschutz in DBMS Datenschutz = Schutz der Daten vor unerlaubter Nutzung und Manipulation Datenschutz in Oracle allgemeine Sicherheitsmaßnahmen in DBMS Dr. Heidrun Bethge Datenbanken II

Datenschutz mittels Zugangskontrolle Verhinderung von unerlaubtem Zugriff und Manipulation von Daten durch: Benutzerverwaltung Rechtevergabe (Wer darf was womit?) Rollen (Bündelung von Rechten) Views Dr. Heidrun Bethge Datenbanken II

Datensicherheit sonstige Datenintegrität: Schutz der Konsistenz der Daten z. B. durch Constraints, Trigger Datensicherheit: systembedingte Fehler vermeiden z. B. durch Transaktionen, Recovery Dr. Heidrun Bethge Datenbanken II

Benutzerverwaltung Dr. Heidrun Bethge Datenbanken II

Schema / User Ein Schema ist ein logischer Container für Datenstrukturen, wie z.B. Tabellen oder Indices. Logische Gruppierung erfolgt z.B. nach Anwendung. Jeder User besitzt sein eigenes Schema. Schema und User haben den selben Namen. Ist dem User die Resource-Rolle zugewiesen (Standard), dann darf er seine Schema-Objekte verändern, löschen oder für sie Rechte vergeben. Wird ein Objekt von einem User erstellt, so ist dieser Besitzer des Objekts. Dr. Heidrun Bethge Datenbanken II

CREATE USER CREATE USER <benutzer> identified by <passwort> default tablespace <ts_name> temporary tablespace <ts_name> profile <profilname> account lock|unlock -- nicht gesperrt password expire -- neues PW bei 1. Anmeldung quota 100M|unlimited on <ts_name>; -- 100MB Minimalvariante: CREATE USER <benutzer> IDENTIFIED BY <passwort>; Dr. Heidrun Bethge Datenbanken II

ALTER USER alter user <benutzer> identified by <passwort> default tablespace <ts_name> temporary tablespace <ts_name> profile <profilname> account lock|unlock -- nicht gesperrt password expire -- neues PW bei 1. Anmeldung quota 100M|unlimited on <ts_name>; -- 100MB Dr. Heidrun Bethge Datenbanken II

Passwort ändern alter user <benutzer> identified by <neues_pw> [replace <altes_passwort>]; replace ist nur notwendig, wenn im Profil PASSWORD_VERIFY_FUNCTION eingeschaltet ist. ab Oracle 11g sind Passwörter im Standard case-sensitiv dies lässt sich über Initialisierungs-Parameter ausschalten: alter system set sec_case_sensitive_logon=false; Dr. Heidrun Bethge Datenbanken II

Tablespace-Quoten alter user benutzer quota 10M on users quota unlimited on bsp_ts; Quote gilt für die Objekte im Schema. Dabei ist egal, wer sie erstellt. Hat user2 Zugriff auf Schema von user1 und schreibt user2 dessen Schema voll, so gilt die Quote vom Schema user1. Data-Dictionary-Views: dba_ts_quotas, dba_users Dr. Heidrun Bethge Datenbanken II

CREATE PROFILE CREATE PROFILE <profil> limit failed_login_attempts <anzahl> password_life_time <tage> password_reuse_max <anzahl> … Beispiel: CREATE PROFILE praktikant limit failed_login_attempts 5 password_life_time 20 password_reuse_max 3; create user meier … profile praktikant …; Dr. Heidrun Bethge Datenbanken II

ALTER / DROP USER Passwort eines Benutzers ändern: ALTER USER <Benutzer> IDENTIFIED BY <passwort>; Oracle: <passwort> ohne Anführungszeichen, MySQL: mit Anführungszeichen Benutzer und alle Objekte in seinem Schema löschen: DROP USER <Benutzer> [CASCADE]; Dr. Heidrun Bethge Datenbanken II

Rechteverwaltung Grant / Revoke Dr. Heidrun Bethge Datenbanken II

GRANT GRANT privilege_name ON object_name TO {user_name | PUBLIC | role_name} [WITH GRANT OPTION] [WITH ADMIN OPTION]; GRANT SELECT, INSERT, UPDATE, DELETE ON library TO peter; Privilegien: ALTER, CREATE, DELETE, DROP, FILE, INDEX, INSERT, REFERENCES, SELECT, SHUTDOWN, UPDATE ... alle setzen: ALL (setzt jedoch nicht GRANT) keine setzen: USAGE WITH GRANT OPTION: vergibt GRANT-Recht bei Objektberechtigungen (select, insert, update..) WITH ADMIN OPTION: Recht darf weitergegeben werden bei Systemberechtigungen (create table, create user..) Dr. Heidrun Bethge Datenbanken II

Beispiele für GRANT Alle Privilegien an Peter übergeben (außer GRANT):  GRANT ALL on tabellenname to peter; Allen Usern das SELECT-Privileg an einer Tabelle geben: GRANT SELECT on tabellenname to public; Den Zugriff für einzelne Felder innerhalb einer Tabelle erlauben: GRANT UPDATE (feld1),INSERT (feld1, feld2)  on tabellenname to peter; Einem User ein Recht geben an Objekten eines fremden Schemas: GRANT SELECT, INSERT on schemaname.tabellename to peter; Dr. Heidrun Bethge Datenbanken II

GRANT (Forts.) Es können auch System-Privilegien an DBA-User vergeben werden, wie z.B. CREATE SESSION, CREATE USER Privilegien löschen, indem GRANT mit verkleinerter Privilegien-Liste aufgerufen wird, ist nicht möglich. Dafür ist REVOKE erforderlich. Oracle: schema.tabelle MySQL: datenbank.tabelle Dr. Heidrun Bethge Datenbanken II

REVOKE REVOKE privilege_name ON object_name FROM {user_name | PUBLIC | role_name};   z.B. REVOKE INSERT, UPDATE, DELETE ON library FROM peter; Gegenteil von GRANT. Löscht einzelne Privilegien wieder. GRANT .. TO .. REVOKE .. FROM .. Dr. Heidrun Bethge Datenbanken II

REVOKE (Forts.) Peter das Löschrecht auf der Kundentabelle nehmen: REVOKE DELETE on kunden from peter; Peter sämtliche Rechte auf der Kundentabelle nehmen: REVOKE ALL on kunden from peter; Allen Usern sämtliche Rechte auf der Kundentabelle nehmen: REVOKE ALL on kunden from public; GRANT-Privileg löschen: REVOKE GRANT OPTION ON objects FROM users Dr. Heidrun Bethge Datenbanken II

REVOKE Es kann nichts verboten (REVOKE) werden, was auf höherer Ebene erlaubt (GRANT) ist. Es können nur Rechte entzogen werden, die vorher gewährt wurden. Rechte auf Feldern können nicht entzogen werden. Hierzu erst Recht (z.B. INSERT) auf gesamter Tabelle entziehen, dann es den Feldern wieder gewähren, die das INSERT-Recht behalten sollen. Dr. Heidrun Bethge Datenbanken II

Zugriffsrechte ansehen Welche Tabellen-Rechte gewähre ich anderen Usern? SELECT * FROM USER_TAB_PRIVS_MADE; Welche Tabellen-Rechte werden mir von anderen Usern gewährt? SELECT * FROM USER_TAB_PRIVS_RECD; Welche Feld-Rechte gewähre ich anderen Usern? SELECT * FROM USER_COL_PRIVS_MADE Welche Feld-Rechte werden mir von anderen Usern gewährt? SELECT * FROM USER_COL_PRIVS_RECD; Dr. Heidrun Bethge Datenbanken II

Rollen und Gruppen Dr. Heidrun Bethge Datenbanken II

Rollen und Gruppen In vielen großen DB-Systemen implementiert (nicht z.B. in MySQL). Reduzierung des Verwaltungsaufwands für die Rechtevergabe an eine große Anzahl von Benutzern Gleiche Rechte werden zu Rollen zusammengefasst (Oracle, SQL-Server). Rechte werden Rollen gewährt. Rollen werden Benutzern gewährt. Benutzer werden zu Gruppen zusammengefasst (Sybase, DB2). Rechte werden an Gruppen vergeben. Dr. Heidrun Bethge Datenbanken II

Standard-Rollen in Oracle CONNECT Verbindung zur DB, Lesezugriff RESOURCE Erstellung von Objekten im eigenen Schema DBA Administrative Aufgaben, Objekte erstellen in beliebigen Schemata, Rechte zuweisen. Nicht: hoch- und runterfahren der DB. Oracle 11g.2 XE

Beispiel Rolle in Oracle Der Benutzer Bob wird erstellt: create user Bob identified by Bobs_Passwort; Die Rolle Clerk wird erstellt: create role Clerk; Der Rolle Clerk wird ein Select- und Insert-Recht zugewiesen: grant select, insert on tabelle to Clerk; Dem Benutzer Bob wird die Rolle Clerk zugewiesen: grant clerk to Bob; Der Rolle Clerk das insert-Recht entziehen: revoke insert on tabelle from Clerk; Den Benutzer Bob aus der Rolle clerk entfernen: revoke clerk from Bob; Dr. Heidrun Bethge Datenbanken II

Views Dr. Heidrun Bethge Datenbanken II

View CREATE VIEW telefonliste (kunde,telefon) AS SELECT nachname, fonnr FROM tkunde In DBMS gespeicherter SELECT-Befehl Keine Speicherung des Abfrageergebnisses, dieses wird bei jedem Aufruf neu erstellt virtuelle Tabelle: in Abfragen nutzbar Vereinfachung von Abfragen View auf View und/oder Tabellen erstellbar Zugriffskontrolle über GRANT/REVOKE Vor dem Benutzer bleiben die Basistabellen verborgen Basistabellen über View mit Einschränkungen änderbar Codd: logische Datenunabhängigkeit Dr. Heidrun Bethge Datenbanken II

View Definition CREATE OR REPLACE VIEW <sicht> [(<Felddeklaration>)] as <SQL-Abfrage> [with check option]; With check option: Prüfen, ob DML-Operationen in der Sicht den in ihr nicht sichtbaren Teil einer Basistabelle beeinflussen -> dann abweisen der Operation Dr. Heidrun Bethge Datenbanken II

Beispiel INSERT via VIEW I CREATE VIEW kunde AS SELECT firma,plz,ort FROM knd; INSERT INTO kunde (firma,ort) values (´Maier & Söhne´,´Hamburg´); Probleme bei NOT NULL Dr. Heidrun Bethge Datenbanken II

Beispiel INSERT via VIEW II CREATE VIEW kunde_auftrag AS SELECT auf_id,kunde,plz,ort FROM knd INNER JOIN auftrag ON knd.knd_id = auftrag.knd_id; insert into kunde_auftrag values (1,´Maier´,´30419´,´Hannover´) Dr. Heidrun Bethge Datenbanken II

INSERT via VIEW: Probleme NOT NULL Attribute könnten unausgefüllt bleiben -> INSERT wird verhindert Lösung: DEFAULT-Werte 1 Tupel in View gegenüber n Tupeln in Relation Schlüsselattribute ggf. nicht vorhanden in View –> kein eindeutiger Zugriff auf Tupel Dr. Heidrun Bethge Datenbanken II

VIEW mit Aggregatfunktion CREATE VIEW gehalt (abteilung, gehalt_mittel) AS SELECT abteilung_id, avg(gehalt) FROM mitarbeiter GROUP BY abteilung_id; UPDATE gehalt SET gehalt_mittel=gehalt_mittel+100 WHERE abteilung=10 nicht umsetzbar! Dr. Heidrun Bethge Datenbanken II

Views ermöglichen Zeilen-Sicherheit Zugriffsrechte auf Views: Auf diese Weise auch Zeilen-Sicherheit erreichbar Auch Sicherheit für dynamisch erzeugte Daten create view anggehalt as select angnr, gehalt from angest where gehalt < 3000; GRANT SELECT ON anggehalt to peter; Dr. Heidrun Bethge Datenbanken II

Gefilterte Views: Tupelmigration CREATE VIEW edv_mitarbeiter AS SELECT * FROM mitarbeiter WHERE abteilung = 12 UPDATE edv_mitarbeiter SET abteilung = 11 WHERE mitarbeiter_id = 2 Tupelmigration kann verhindert werden durch: WITH CHECK OPTION; Dr. Heidrun Bethge Datenbanken II

Audit Dr. Heidrun Bethge Datenbanken II

Auditing Aufzeichnen von kritischen Operationen, z. B. delete, insert, grant, update Wurde ein DBMS gehackt, so ist wichtig herauszufinden: - Wie fand der Zugriff statt? - Wann fand der Zugriff statt? - Was wurde verändert? - Worauf wurde zugegriffen? Protokoll in Tabelle aud$ des Benutzers sys. Performanz-Beeinträchtigung durch Auditing Automatisches Audit über Anmeldungen mit administrativen Rechten, Datenbankstarts und -stops Dr. Heidrun Bethge Datenbanken II

Audit AUDIT {<Liste der Systemprivilegien> | <Liste der DBAnweisungen>} [BY <nutzer>] [WHENEVER [NOT] SUCCESSFUL]; Über Auditing keine Dokumentation von alten und neuen Werten -> dazu Protokolltrigger nötig! Dr. Heidrun Bethge Datenbanken II

Audit Beispiele audit delete any table; audit delete on kunde; noaudit delete any table; audit update on angestellte whenever not successful; audit update(gehalt) on angestellte; Dr. Heidrun Bethge Datenbanken II

Audit aktivieren SHOW PARAMETER AUDIT; ALTER SYSTEM SET audit_trail=db SCOPE=SPFILE; DB-Services neu starten AUDIT ALL BY <user> BY ACCESS; CREATE TABLE test (id integer, nachname varchar(10)); DROP TABLE test; SELECT * FROM DBA_COMMON_AUDIT_TRAIL; SELECT * FROM sys.aud$; NOAUDIT ALL BY <user>; ALTER SYSTEM SET audit_trail=none SCOPE=SPFILE; SCOPE=SPFILE Änderungen werden in der Server Parameter File festgeschrieben und sind dann nach Neustart des Servers wieder verfügbar. AUDIT .. BY ACCESS: Pro SQL-Befehl mit Audit-Einstellung ein Eintrag in aud$ Alternative: BY SESSION: Gleichartige SQL-Befehle (z.B. mehrere SELECT) werden zu einem einzigen Eintrag in aud$ zusammengefasst Dr. Heidrun Bethge Datenbanken II