Datenschutz in DBMS
• Benutzerverwaltung• Rechteverwaltung• Rollen und Gruppen• Views• Audit
Dr. Heidrun Bethge Datenbanken II 1
Dr. Heidrun Bethge Datenbanken II 2
Datenschutzin DBMS
• Datenschutz = Schutz der Daten vor unerlaubter Nutzung und Manipulation
• Datenschutz in Oracle• allgemeine Sicherheitsmaßnahmen in
DBMS
Dr. Heidrun Bethge Datenbanken II 3
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 4
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 5
Benutzerverwaltung
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 6
Dr. Heidrun Bethge Datenbanken II 7
CREATE USERCREATE 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. Anmeldungquota 100M|unlimited on <ts_name>; -- 100MB
Minimalvariante:
CREATE USER <benutzer> IDENTIFIED BY <passwort>;
Dr. Heidrun Bethge Datenbanken II 8
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. Anmeldungquota 100M|unlimited on <ts_name>; -- 100MB
Passwort ändernalter 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 9
Tablespace-Quoten• alter user benutzer
quota 10M on usersquota 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 10
Dr. Heidrun Bethge Datenbanken II 11
CREATE PROFILECREATE PROFILE <profil> limitfailed_login_attempts <anzahl>password_life_time <tage>password_reuse_max <anzahl> …
Beispiel:CREATE PROFILE praktikant limitfailed_login_attempts 5password_life_time 20password_reuse_max 3;
create user meier …profile praktikant …;
Dr. Heidrun Bethge Datenbanken II 12
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];
Rechteverwaltung
Grant / Revoke
Dr. Heidrun Bethge Datenbanken II 13
Dr. Heidrun Bethge Datenbanken II 14
GRANTGRANT privilege_name
ON object_name TO {user_name | PUBLIC | role_name} [WITH GRANT OPTION][WITH ADMIN OPTION];
GRANT SELECT, INSERT, UPDATE, DELETEON library TO peter;
Privilegien: ALTER, CREATE, DELETE, DROP, FILE, INDEX, INSERT, REFERENCES, SELECT, SHUTDOWN, UPDATE ...
alle setzen: ALL (setzt jedoch nicht GRANT)keine setzen: USAGEWITH 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 15
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 16
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 17
REVOKE REVOKE privilege_name ON object_name FROM {user_name | PUBLIC | role_name}; z.B.REVOKE INSERT, UPDATE, DELETEON library FROM peter; Gegenteil von GRANT. Löscht einzelne Privilegien wieder.GRANT .. TO ..REVOKE .. FROM ..
Dr. Heidrun Bethge Datenbanken II 18
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
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 19
Dr. Heidrun Bethge Datenbanken II 20
Zugriffsrechte ansehenWelche 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 21
Rollen und Gruppen
Dr. Heidrun Bethge Datenbanken II 22
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.
Standard-Rollen in Oracle• CONNECT
Verbindung zur DB, Lesezugriff• RESOURCE
Erstellung von Objekten im eigenen Schema
• DBAAdministrative Aufgaben, Objekte erstellen in beliebigen Schemata, Rechte zuweisen. Nicht: hoch- und runterfahren der DB.
Oracle 11g.2 XE 23
Dr. Heidrun Bethge Datenbanken II 24
Beispiel Rolle in OracleDer 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 25
Views
Dr. Heidrun Bethge Datenbanken II 26
ViewCREATE 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 27
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 28
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´);
Dr. Heidrun Bethge Datenbanken II 29
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 30
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 31
VIEW mit AggregatfunktionCREATE VIEW gehalt (abteilung, gehalt_mittel)AS SELECT abteilung_id, avg(gehalt)FROM mitarbeiterGROUP BY abteilung_id;
UPDATE gehaltSET gehalt_mittel=gehalt_mittel+100WHERE abteilung=10
nicht umsetzbar!
Dr. Heidrun Bethge Datenbanken II 32
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 asselect angnr, gehalt from angestwhere gehalt < 3000;
GRANT SELECT ON anggehalt to peter;
Dr. Heidrun Bethge Datenbanken II 33
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:
CREATE VIEW edv_mitarbeiter AS
SELECT * FROM mitarbeiter WHERE abteilung = 12
WITH CHECK OPTION;
Dr. Heidrun Bethge Datenbanken II 34
Audit
Dr. Heidrun Bethge Datenbanken II 35
AuditingAufzeichnen 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 36
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 37
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;
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;
Dr. Heidrun Bethge Datenbanken II 38
Top Related