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

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

Transcript of Datenschutz in DBMS Benutzerverwaltung Rechteverwaltung Rollen und Gruppen Views Audit Dr. Heidrun...

Page 1: Datenschutz in DBMS Benutzerverwaltung Rechteverwaltung Rollen und Gruppen Views Audit Dr. Heidrun BethgeDatenbanken II1.

Datenschutz in DBMS

• Benutzerverwaltung• Rechteverwaltung• Rollen und Gruppen• Views• Audit

Dr. Heidrun Bethge Datenbanken II 1

Page 2: Datenschutz in DBMS Benutzerverwaltung Rechteverwaltung Rollen und Gruppen Views Audit Dr. Heidrun BethgeDatenbanken II1.

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

Page 3: Datenschutz in DBMS Benutzerverwaltung Rechteverwaltung Rollen und Gruppen Views Audit Dr. Heidrun BethgeDatenbanken II1.

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

Page 4: Datenschutz in DBMS Benutzerverwaltung Rechteverwaltung Rollen und Gruppen Views Audit Dr. Heidrun BethgeDatenbanken II1.

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

Page 5: Datenschutz in DBMS Benutzerverwaltung Rechteverwaltung Rollen und Gruppen Views Audit Dr. Heidrun BethgeDatenbanken II1.

Dr. Heidrun Bethge Datenbanken II 5

Benutzerverwaltung

Page 6: Datenschutz in DBMS Benutzerverwaltung Rechteverwaltung Rollen und Gruppen Views Audit Dr. Heidrun BethgeDatenbanken II1.

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

Page 7: Datenschutz in DBMS Benutzerverwaltung Rechteverwaltung Rollen und Gruppen Views Audit Dr. Heidrun BethgeDatenbanken II1.

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>;

Page 8: Datenschutz in DBMS Benutzerverwaltung Rechteverwaltung Rollen und Gruppen Views Audit Dr. Heidrun BethgeDatenbanken II1.

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

Page 9: Datenschutz in DBMS Benutzerverwaltung Rechteverwaltung Rollen und Gruppen Views Audit Dr. Heidrun BethgeDatenbanken II1.

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

Page 10: Datenschutz in DBMS Benutzerverwaltung Rechteverwaltung Rollen und Gruppen Views Audit Dr. Heidrun BethgeDatenbanken II1.

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

Page 11: Datenschutz in DBMS Benutzerverwaltung Rechteverwaltung Rollen und Gruppen Views Audit Dr. Heidrun BethgeDatenbanken II1.

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 …;

Page 12: Datenschutz in DBMS Benutzerverwaltung Rechteverwaltung Rollen und Gruppen Views Audit Dr. Heidrun BethgeDatenbanken II1.

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];

Page 13: Datenschutz in DBMS Benutzerverwaltung Rechteverwaltung Rollen und Gruppen Views Audit Dr. Heidrun BethgeDatenbanken II1.

Rechteverwaltung

Grant / Revoke

Dr. Heidrun Bethge Datenbanken II 13

Page 14: Datenschutz in DBMS Benutzerverwaltung Rechteverwaltung Rollen und Gruppen Views Audit Dr. Heidrun BethgeDatenbanken II1.

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..)

Page 15: Datenschutz in DBMS Benutzerverwaltung Rechteverwaltung Rollen und Gruppen Views Audit Dr. Heidrun BethgeDatenbanken II1.

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;

Page 16: Datenschutz in DBMS Benutzerverwaltung Rechteverwaltung Rollen und Gruppen Views Audit Dr. Heidrun BethgeDatenbanken II1.

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

Page 17: Datenschutz in DBMS Benutzerverwaltung Rechteverwaltung Rollen und Gruppen Views Audit Dr. Heidrun BethgeDatenbanken II1.

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 ..

Page 18: Datenschutz in DBMS Benutzerverwaltung Rechteverwaltung Rollen und Gruppen Views Audit Dr. Heidrun BethgeDatenbanken II1.

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

Page 19: Datenschutz in DBMS Benutzerverwaltung Rechteverwaltung Rollen und Gruppen Views Audit Dr. Heidrun BethgeDatenbanken II1.

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

Page 20: Datenschutz in DBMS Benutzerverwaltung Rechteverwaltung Rollen und Gruppen Views Audit Dr. Heidrun BethgeDatenbanken II1.

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;

Page 21: Datenschutz in DBMS Benutzerverwaltung Rechteverwaltung Rollen und Gruppen Views Audit Dr. Heidrun BethgeDatenbanken II1.

Dr. Heidrun Bethge Datenbanken II 21

Rollen und Gruppen

Page 22: Datenschutz in DBMS Benutzerverwaltung Rechteverwaltung Rollen und Gruppen Views Audit Dr. Heidrun BethgeDatenbanken II1.

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.

Page 23: Datenschutz in DBMS Benutzerverwaltung Rechteverwaltung Rollen und Gruppen Views Audit Dr. Heidrun BethgeDatenbanken II1.

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

Page 24: Datenschutz in DBMS Benutzerverwaltung Rechteverwaltung Rollen und Gruppen Views Audit Dr. Heidrun BethgeDatenbanken II1.

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;

Page 25: Datenschutz in DBMS Benutzerverwaltung Rechteverwaltung Rollen und Gruppen Views Audit Dr. Heidrun BethgeDatenbanken II1.

Dr. Heidrun Bethge Datenbanken II 25

Views

Page 26: Datenschutz in DBMS Benutzerverwaltung Rechteverwaltung Rollen und Gruppen Views Audit Dr. Heidrun BethgeDatenbanken II1.

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

Page 27: Datenschutz in DBMS Benutzerverwaltung Rechteverwaltung Rollen und Gruppen Views Audit Dr. Heidrun BethgeDatenbanken II1.

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

Page 28: Datenschutz in DBMS Benutzerverwaltung Rechteverwaltung Rollen und Gruppen Views Audit Dr. Heidrun BethgeDatenbanken II1.

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´);

Page 29: Datenschutz in DBMS Benutzerverwaltung Rechteverwaltung Rollen und Gruppen Views Audit Dr. Heidrun BethgeDatenbanken II1.

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´)

Page 30: Datenschutz in DBMS Benutzerverwaltung Rechteverwaltung Rollen und Gruppen Views Audit Dr. Heidrun BethgeDatenbanken II1.

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

Page 31: Datenschutz in DBMS Benutzerverwaltung Rechteverwaltung Rollen und Gruppen Views Audit Dr. Heidrun BethgeDatenbanken II1.

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!

Page 32: Datenschutz in DBMS Benutzerverwaltung Rechteverwaltung Rollen und Gruppen Views Audit Dr. Heidrun BethgeDatenbanken II1.

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;

Page 33: Datenschutz in DBMS Benutzerverwaltung Rechteverwaltung Rollen und Gruppen Views Audit Dr. Heidrun BethgeDatenbanken II1.

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;

Page 34: Datenschutz in DBMS Benutzerverwaltung Rechteverwaltung Rollen und Gruppen Views Audit Dr. Heidrun BethgeDatenbanken II1.

Dr. Heidrun Bethge Datenbanken II 34

Audit

Page 35: Datenschutz in DBMS Benutzerverwaltung Rechteverwaltung Rollen und Gruppen Views Audit Dr. Heidrun BethgeDatenbanken II1.

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

Page 36: Datenschutz in DBMS Benutzerverwaltung Rechteverwaltung Rollen und Gruppen Views Audit Dr. Heidrun BethgeDatenbanken II1.

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!

Page 37: Datenschutz in DBMS Benutzerverwaltung Rechteverwaltung Rollen und Gruppen Views Audit Dr. Heidrun BethgeDatenbanken II1.

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;

Page 38: Datenschutz in DBMS Benutzerverwaltung Rechteverwaltung Rollen und Gruppen Views Audit Dr. Heidrun BethgeDatenbanken II1.

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