Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Datenschutz in DBMS Benutzerverwaltung Rechteverwaltung

Ähnliche Präsentationen


Präsentation zum Thema: "Datenschutz in DBMS Benutzerverwaltung Rechteverwaltung"—  Präsentation transkript:

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

2 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

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 Dr. Heidrun Bethge Datenbanken II

6 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

7 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>; MB 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. Anmeldung quota 100M|unlimited on <ts_name>; MB Dr. Heidrun Bethge Datenbanken II

9 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

10 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

11 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

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]; Dr. Heidrun Bethge Datenbanken II

13 Rechteverwaltung Grant / Revoke Dr. Heidrun Bethge Datenbanken II

14 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

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, DELETE ON 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 Dr. Heidrun Bethge Datenbanken II

19 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

20 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

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. Dr. Heidrun Bethge Datenbanken II

23 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

24 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

25 Views Dr. Heidrun Bethge Datenbanken II

26 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

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´); Probleme bei NOT NULL 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 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

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 as select angnr, gehalt from angest where 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: WITH CHECK OPTION; Dr. Heidrun Bethge Datenbanken II

34 Audit Dr. Heidrun Bethge Datenbanken II

35 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

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; Dr. Heidrun Bethge Datenbanken II

38 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


Herunterladen ppt "Datenschutz in DBMS Benutzerverwaltung Rechteverwaltung"

Ähnliche Präsentationen


Google-Anzeigen