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

Preview:

Citation preview

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

Recommended