Benutzerverwaltung, Sichten und Einige Vergleiche zwischen MySQL, Oracle und PostgreSQL OStR Michael Dienert, StR Ahmad Nessar Nazar 29. November und 30. November 2011 1 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Inhaltsverzeichnis 1 Benutzer- und Rechteverwaltung Benutzer und Rollen anlegen Rechtevergabe Rechteentzug 2 Sichtveränderung Sichtveränderung in PostgreSQL (RULEs) 3 Statische Integrität Dynamische Integrität durch Trigger 2 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Benutzer und Rollen anlegen Rechtevergabe Rechteentzug Benutzer und Rollen anlegen 3 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Benutzerverwaltung in PostgreSQL Benutzer und Rollen anlegen Rechtevergabe Rechteentzug Mit SQL:1999 können Zugriffsrechte nicht nur einzelnen Benutzern, sondern auch Rollen zugewiesen werden. Dabei sind Rollen als ein Überbegriff zu verstehen, unter dem sowohl Benutzer als auch Gruppen zusammengefasst werden. Eine Rolle kann wiederum Mitglied weiterer Rollen sein. Eine Rolle (oder einen Benutzer) anlegen CREATE ROLE ottbert WITH LOGIN ; Eine Rolle ändern ALTER ROLE ottbert WITH PASSWORD secret ; 4 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Benutzerverwaltung in PostgreSQL Benutzer und Rollen anlegen Rechtevergabe Rechteentzug Mit SQL:1999 können Zugriffsrechte nicht nur einzelnen Benutzern, sondern auch Rollen zugewiesen werden. Dabei sind Rollen als ein Überbegriff zu verstehen, unter dem sowohl Benutzer als auch Gruppen zusammengefasst werden. Eine Rolle kann wiederum Mitglied weiterer Rollen sein. Eine Rolle (oder einen Benutzer) anlegen CREATE ROLE ottbert WITH LOGIN ; Eine Rolle ändern ALTER ROLE ottbert WITH PASSWORD secret ; 4 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Benutzerverwaltung in PostgreSQL Benutzer und Rollen anlegen Rechtevergabe Rechteentzug Mit SQL:1999 können Zugriffsrechte nicht nur einzelnen Benutzern, sondern auch Rollen zugewiesen werden. Dabei sind Rollen als ein Überbegriff zu verstehen, unter dem sowohl Benutzer als auch Gruppen zusammengefasst werden. Eine Rolle kann wiederum Mitglied weiterer Rollen sein. Eine Rolle (oder einen Benutzer) anlegen CREATE ROLE ottbert WITH LOGIN ; Eine Rolle ändern ALTER ROLE ottbert WITH PASSWORD secret ; 4 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Benutzerverwaltung in PostgreSQL Benutzer und Rollen anlegen Rechtevergabe Rechteentzug Mit SQL:1999 können Zugriffsrechte nicht nur einzelnen Benutzern, sondern auch Rollen zugewiesen werden. Dabei sind Rollen als ein Überbegriff zu verstehen, unter dem sowohl Benutzer als auch Gruppen zusammengefasst werden. Eine Rolle kann wiederum Mitglied weiterer Rollen sein. Eine Rolle (oder einen Benutzer) anlegen CREATE ROLE ottbert WITH LOGIN ; Eine Rolle ändern ALTER ROLE ottbert WITH PASSWORD secret ; 4 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Benutzerverwaltung in PostgreSQL Benutzer und Rollen anlegen Rechtevergabe Rechteentzug Superuser mit Passwort und LOGIN-Option ALTER ROLE admin WITH SUPERUSER PASSWORD secret LOGIN ; Rolle darf weitere Rolle erstellen ALTER ROLE mitarbeiter WITH CREATEROLE ; Rolle als Gruppe (lehrer erbt alle Rechte von mitarbeiter) CREATE ROLE lehrer IN ROLE mitarbeiter ; 5 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Benutzerverwaltung in PostgreSQL Benutzer und Rollen anlegen Rechtevergabe Rechteentzug Superuser mit Passwort und LOGIN-Option ALTER ROLE admin WITH SUPERUSER PASSWORD secret LOGIN ; Rolle darf weitere Rolle erstellen ALTER ROLE mitarbeiter WITH CREATEROLE ; Rolle als Gruppe (lehrer erbt alle Rechte von mitarbeiter) CREATE ROLE lehrer IN ROLE mitarbeiter ; 5 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Benutzerverwaltung in PostgreSQL Benutzer und Rollen anlegen Rechtevergabe Rechteentzug Superuser mit Passwort und LOGIN-Option ALTER ROLE admin WITH SUPERUSER PASSWORD secret LOGIN ; Rolle darf weitere Rolle erstellen ALTER ROLE mitarbeiter WITH CREATEROLE ; Rolle als Gruppe (lehrer erbt alle Rechte von mitarbeiter) CREATE ROLE lehrer IN ROLE mitarbeiter ; 5 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Benutzerverwaltung in PostgreSQL Benutzer und Rollen anlegen Rechtevergabe Rechteentzug Superuser mit Passwort und LOGIN-Option ALTER ROLE admin WITH SUPERUSER PASSWORD secret LOGIN ; Rolle darf weitere Rolle erstellen ALTER ROLE mitarbeiter WITH CREATEROLE ; Rolle als Gruppe (lehrer erbt alle Rechte von mitarbeiter) CREATE ROLE lehrer IN ROLE mitarbeiter ; 5 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Benutzerverwaltung in PostgreSQL Benutzer und Rollen anlegen Rechtevergabe Rechteentzug In PostgreSQL dürfen Rollen nur dann gelöscht werden, wenn sie keine Datenbank-Objekte besitzen. Sollte eine zu löschendes Rolle Objekte wie z.b. Datenbanken, Tabellen usw. angelegt haben, so müssen diese vorher gelöscht werden. Rolle löschen DROP ROLE ottbert ; Nur existierende Rollen löschen DROP ROLE IF EXISTS ottbert ; 6 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Benutzerverwaltung in PostgreSQL Benutzer und Rollen anlegen Rechtevergabe Rechteentzug In PostgreSQL dürfen Rollen nur dann gelöscht werden, wenn sie keine Datenbank-Objekte besitzen. Sollte eine zu löschendes Rolle Objekte wie z.b. Datenbanken, Tabellen usw. angelegt haben, so müssen diese vorher gelöscht werden. Rolle löschen DROP ROLE ottbert ; Nur existierende Rollen löschen DROP ROLE IF EXISTS ottbert ; 6 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Benutzerverwaltung in PostgreSQL Benutzer und Rollen anlegen Rechtevergabe Rechteentzug In PostgreSQL dürfen Rollen nur dann gelöscht werden, wenn sie keine Datenbank-Objekte besitzen. Sollte eine zu löschendes Rolle Objekte wie z.b. Datenbanken, Tabellen usw. angelegt haben, so müssen diese vorher gelöscht werden. Rolle löschen DROP ROLE ottbert ; Nur existierende Rollen löschen DROP ROLE IF EXISTS ottbert ; 6 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Benutzerverwaltung in PostgreSQL Benutzer und Rollen anlegen Rechtevergabe Rechteentzug In PostgreSQL dürfen Rollen nur dann gelöscht werden, wenn sie keine Datenbank-Objekte besitzen. Sollte eine zu löschendes Rolle Objekte wie z.b. Datenbanken, Tabellen usw. angelegt haben, so müssen diese vorher gelöscht werden. Rolle löschen DROP ROLE ottbert ; Nur existierende Rollen löschen DROP ROLE IF EXISTS ottbert ; 6 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Benutzer und Rollen anlegen Rechtevergabe Rechteentzug Client-Authentifizierung in PostgreSQL Die Client-Authentifizierung von PostgreSQL kann über die Konfigurationsdatei pg hba.conf gesteuert werden: 7 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Benutzerverwaltung in MySQL Benutzer und Rollen anlegen Rechtevergabe Rechteentzug Einen Benutzer mit Passwort anlegen CREATE USER ottbert @ localhost IDENTIFIED BY secret ; Einen Benutzer umbenennen RENAME USER ottbert @ 127.0.0.1 TO otti @ 127.0.0.1 ; Nach unserem Kenntnisstand ist es derzeit nicht möglich, mit MySQL Benutzergruppen (ROLE) anzulegen! Damit sich ein Benutzer in der Datenbank anmelden kann, benötigt er das Leserecht für mindestens eine Tabelle in der Datenbank. 8 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Benutzerverwaltung in MySQL Benutzer und Rollen anlegen Rechtevergabe Rechteentzug Einen Benutzer mit Passwort anlegen CREATE USER ottbert @ localhost IDENTIFIED BY secret ; Einen Benutzer umbenennen RENAME USER ottbert @ 127.0.0.1 TO otti @ 127.0.0.1 ; Nach unserem Kenntnisstand ist es derzeit nicht möglich, mit MySQL Benutzergruppen (ROLE) anzulegen! Damit sich ein Benutzer in der Datenbank anmelden kann, benötigt er das Leserecht für mindestens eine Tabelle in der Datenbank. 8 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Benutzerverwaltung in MySQL Benutzer und Rollen anlegen Rechtevergabe Rechteentzug Einen Benutzer mit Passwort anlegen CREATE USER ottbert @ localhost IDENTIFIED BY secret ; Einen Benutzer umbenennen RENAME USER ottbert @ 127.0.0.1 TO otti @ 127.0.0.1 ; Nach unserem Kenntnisstand ist es derzeit nicht möglich, mit MySQL Benutzergruppen (ROLE) anzulegen! Damit sich ein Benutzer in der Datenbank anmelden kann, benötigt er das Leserecht für mindestens eine Tabelle in der Datenbank. 8 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Benutzerverwaltung in MySQL Benutzer und Rollen anlegen Rechtevergabe Rechteentzug Einen Benutzer mit Passwort anlegen CREATE USER ottbert @ localhost IDENTIFIED BY secret ; Einen Benutzer umbenennen RENAME USER ottbert @ 127.0.0.1 TO otti @ 127.0.0.1 ; Nach unserem Kenntnisstand ist es derzeit nicht möglich, mit MySQL Benutzergruppen (ROLE) anzulegen! Damit sich ein Benutzer in der Datenbank anmelden kann, benötigt er das Leserecht für mindestens eine Tabelle in der Datenbank. 8 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Benutzerverwaltung in MySQL Benutzer und Rollen anlegen Rechtevergabe Rechteentzug Das Passwort ändern SET PASSWORD FOR ottbert @ localhost = PASSWORD ( secret ); Einen Benutzer wieder entfernen DROP USER ottbert ; In MySQL können Benutzer entfernt werden, auch wenn sie Besitzer von Objekten sind. Ihre Objekte bleiben erhalten. 9 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Benutzerverwaltung in MySQL Benutzer und Rollen anlegen Rechtevergabe Rechteentzug Das Passwort ändern SET PASSWORD FOR ottbert @ localhost = PASSWORD ( secret ); Einen Benutzer wieder entfernen DROP USER ottbert ; In MySQL können Benutzer entfernt werden, auch wenn sie Besitzer von Objekten sind. Ihre Objekte bleiben erhalten. 9 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Benutzerverwaltung in MySQL Benutzer und Rollen anlegen Rechtevergabe Rechteentzug Das Passwort ändern SET PASSWORD FOR ottbert @ localhost = PASSWORD ( secret ); Einen Benutzer wieder entfernen DROP USER ottbert ; In MySQL können Benutzer entfernt werden, auch wenn sie Besitzer von Objekten sind. Ihre Objekte bleiben erhalten. 9 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Benutzerverwaltung in MySQL Benutzer und Rollen anlegen Rechtevergabe Rechteentzug Das Passwort ändern SET PASSWORD FOR ottbert @ localhost = PASSWORD ( secret ); Einen Benutzer wieder entfernen DROP USER ottbert ; In MySQL können Benutzer entfernt werden, auch wenn sie Besitzer von Objekten sind. Ihre Objekte bleiben erhalten. 9 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Client-Authentifizierung in MySQL Benutzer und Rollen anlegen Rechtevergabe Rechteentzug MySQL identifiziert Benutzer über Rechner- und Benutzernamen (user@host). Die user- und host-angaben werden getrennt in verschiedenen Systemtabellen der automatisch angelegten mysql-datenbank gespeichert: user-tabelle: Enthält allgemeine Zugriffsrechte für alle Datenbanken db-tabelle: Enthält die Rechte für einzelne Datenbanken host-tabelle: Enthält Rechte für ein host auf Datenbanken tables priv-tabelle: Enthält Rechte für einzelne Tabellen columns priv-tabelle: Enthält die Rechte für die Tabellenspalten 10 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Benutzerverwaltung in Oracle Benutzer und Rollen anlegen Rechtevergabe Rechteentzug CREATE USER ottbert IDENTIFIED BY " secret "; -- Benutzer umbennen ( nicht mit Oracle 10 g) ALTER USER ottbert RENAME TO otti ; -- Benutzer ( mit seinen Objekten ) loeschen DROP USER ottbert CASCADE ; Oracle erlaubt die Definition von Rollen, die mit Rechten versehen, existierenden Benutzern (Gruppen) zugeordnet werden können. Damit ein Benutzer sich anmelden kann, benötigt er das CREATE SESSION-Recht. Die Rolle DBA enthält die Rechte für einen Administrator. Mehr zu Oracle Authentifizierungspolicy siehe: http://docs.oracle.com/cd/b13789_01/network.101/ b10773/admnauth.htm#1006145 11 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Benutzerverwaltung in Oracle Benutzer und Rollen anlegen Rechtevergabe Rechteentzug CREATE USER ottbert IDENTIFIED BY " secret "; -- Benutzer umbennen ( nicht mit Oracle 10 g) ALTER USER ottbert RENAME TO otti ; -- Benutzer ( mit seinen Objekten ) loeschen DROP USER ottbert CASCADE ; Oracle erlaubt die Definition von Rollen, die mit Rechten versehen, existierenden Benutzern (Gruppen) zugeordnet werden können. Damit ein Benutzer sich anmelden kann, benötigt er das CREATE SESSION-Recht. Die Rolle DBA enthält die Rechte für einen Administrator. Mehr zu Oracle Authentifizierungspolicy siehe: http://docs.oracle.com/cd/b13789_01/network.101/ b10773/admnauth.htm#1006145 11 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Benutzerverwaltung in Oracle Benutzer und Rollen anlegen Rechtevergabe Rechteentzug CREATE USER ottbert IDENTIFIED BY " secret "; -- Benutzer umbennen ( nicht mit Oracle 10 g) ALTER USER ottbert RENAME TO otti ; -- Benutzer ( mit seinen Objekten ) loeschen DROP USER ottbert CASCADE ; Oracle erlaubt die Definition von Rollen, die mit Rechten versehen, existierenden Benutzern (Gruppen) zugeordnet werden können. Damit ein Benutzer sich anmelden kann, benötigt er das CREATE SESSION-Recht. Die Rolle DBA enthält die Rechte für einen Administrator. Mehr zu Oracle Authentifizierungspolicy siehe: http://docs.oracle.com/cd/b13789_01/network.101/ b10773/admnauth.htm#1006145 11 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Benutzer und Rollen anlegen Rechtevergabe Rechteentzug Rechtevergabe 12 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Rechtevergabe in SQL-Standard Benutzer und Rollen anlegen Rechtevergabe Rechteentzug In SQL-Standard kann zunächst nur der Eigentümer eines Objektes mit seinen Objekten arbeiten. Will er auch an andere Benutzer Rechte auf seine Objekte vergeben, muss er dazu den im Standard definierten GRANT-Befehl verwenden. Der Standard definiert zwei Formen der GRANT-Anweisung: GRANT < privliste > ON < objekt > TO < benutzerliste > PUBLIC [ WITH GRANT OPTION ]; GRANT < privliste > ALL ON TABLE < tabellenname > TO < benutzerliste > PUBLIC [ WITH GRANT OPTION ]; 13 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Rechtevergabe in SQL-Standard Benutzer und Rollen anlegen Rechtevergabe Rechteentzug In SQL-Standard kann zunächst nur der Eigentümer eines Objektes mit seinen Objekten arbeiten. Will er auch an andere Benutzer Rechte auf seine Objekte vergeben, muss er dazu den im Standard definierten GRANT-Befehl verwenden. Der Standard definiert zwei Formen der GRANT-Anweisung: GRANT < privliste > ON < objekt > TO < benutzerliste > PUBLIC [ WITH GRANT OPTION ]; GRANT < privliste > ALL ON TABLE < tabellenname > TO < benutzerliste > PUBLIC [ WITH GRANT OPTION ]; 13 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Rechtevergabe in SQL-Standard Benutzer und Rollen anlegen Rechtevergabe Rechteentzug In SQL-Standard kann zunächst nur der Eigentümer eines Objektes mit seinen Objekten arbeiten. Will er auch an andere Benutzer Rechte auf seine Objekte vergeben, muss er dazu den im Standard definierten GRANT-Befehl verwenden. Der Standard definiert zwei Formen der GRANT-Anweisung: GRANT < privliste > ON < objekt > TO < benutzerliste > PUBLIC [ WITH GRANT OPTION ]; GRANT < privliste > ALL ON TABLE < tabellenname > TO < benutzerliste > PUBLIC [ WITH GRANT OPTION ]; 13 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Rechtevergabe in SQL-Standard Benutzer und Rollen anlegen Rechtevergabe Rechteentzug In SQL-Standard kann zunächst nur der Eigentümer eines Objektes mit seinen Objekten arbeiten. Will er auch an andere Benutzer Rechte auf seine Objekte vergeben, muss er dazu den im Standard definierten GRANT-Befehl verwenden. Der Standard definiert zwei Formen der GRANT-Anweisung: GRANT < privliste > ON < objekt > TO < benutzerliste > PUBLIC [ WITH GRANT OPTION ]; GRANT < privliste > ALL ON TABLE < tabellenname > TO < benutzerliste > PUBLIC [ WITH GRANT OPTION ]; 13 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Rechtevergabe in SQL-Standard Benutzer und Rollen anlegen Rechtevergabe Rechteentzug Spezielle Rechte für besondere Objekte GRANT < privliste > ON < objekt > TO < benutzerliste > PUBLIC [ WITH GRANT OPTION ]; Beispiele für besondere Objekte: DOMAIN, CHARACTER SET, DATA TYPE,... Beispiele für spezielle Rechte: USAGE, UNDER, EXECUTE, TRIGGER... Die besonderen Objekte und deren Rechte sind extrem herstellerabhängig. Wir beschränken uns deshalb auf die Verwaltung von Rechten über Tabellen (und Sichten). 14 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Rechtevergabe in SQL-Standard Benutzer und Rollen anlegen Rechtevergabe Rechteentzug Spezielle Rechte für besondere Objekte GRANT < privliste > ON < objekt > TO < benutzerliste > PUBLIC [ WITH GRANT OPTION ]; Beispiele für besondere Objekte: DOMAIN, CHARACTER SET, DATA TYPE,... Beispiele für spezielle Rechte: USAGE, UNDER, EXECUTE, TRIGGER... Die besonderen Objekte und deren Rechte sind extrem herstellerabhängig. Wir beschränken uns deshalb auf die Verwaltung von Rechten über Tabellen (und Sichten). 14 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Rechtevergabe in SQL-Standard Benutzer und Rollen anlegen Rechtevergabe Rechteentzug Spezielle Rechte für besondere Objekte GRANT < privliste > ON < objekt > TO < benutzerliste > PUBLIC [ WITH GRANT OPTION ]; Beispiele für besondere Objekte: DOMAIN, CHARACTER SET, DATA TYPE,... Beispiele für spezielle Rechte: USAGE, UNDER, EXECUTE, TRIGGER... Die besonderen Objekte und deren Rechte sind extrem herstellerabhängig. Wir beschränken uns deshalb auf die Verwaltung von Rechten über Tabellen (und Sichten). 14 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Rechtevergabe in SQL-Standard Benutzer und Rollen anlegen Rechtevergabe Rechteentzug Spezielle Rechte für besondere Objekte GRANT < privliste > ON < objekt > TO < benutzerliste > PUBLIC [ WITH GRANT OPTION ]; Beispiele für besondere Objekte: DOMAIN, CHARACTER SET, DATA TYPE,... Beispiele für spezielle Rechte: USAGE, UNDER, EXECUTE, TRIGGER... Die besonderen Objekte und deren Rechte sind extrem herstellerabhängig. Wir beschränken uns deshalb auf die Verwaltung von Rechten über Tabellen (und Sichten). 14 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Rechtevergabe in SQL-Standard Benutzer und Rollen anlegen Rechtevergabe Rechteentzug Spezielle Rechte für besondere Objekte GRANT < privliste > ON < objekt > TO < benutzerliste > PUBLIC [ WITH GRANT OPTION ]; Beispiele für besondere Objekte: DOMAIN, CHARACTER SET, DATA TYPE,... Beispiele für spezielle Rechte: USAGE, UNDER, EXECUTE, TRIGGER... Die besonderen Objekte und deren Rechte sind extrem herstellerabhängig. Wir beschränken uns deshalb auf die Verwaltung von Rechten über Tabellen (und Sichten). 14 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Rechtevergabe in SQL-Standard Benutzer und Rollen anlegen Rechtevergabe Rechteentzug GRANT < privliste > ALL ON TABLE < tabellenname > TO < benutzerliste > PUBLIC [ WITH GRANT OPTION ]; Dabei sind die folgenden Rechte für Tabellen möglich: SELECT [(<spaltenliste>)] INSERT [(<spaltenliste>)] UPDATE [(<spaltenliste>)] DELETE REFERENCES [(<spaltenliste>)] Das REFERENCES-Recht erlaubt die Verwendung von Spalten der Tabelle in einer FOREIGN KEY-Klausel einer anderen CREATE TABLE-Anweisung. 15 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Rechtevergabe in SQL-Standard Benutzer und Rollen anlegen Rechtevergabe Rechteentzug GRANT < privliste > ALL ON TABLE < tabellenname > TO < benutzerliste > PUBLIC [ WITH GRANT OPTION ]; Dabei sind die folgenden Rechte für Tabellen möglich: SELECT [(<spaltenliste>)] INSERT [(<spaltenliste>)] UPDATE [(<spaltenliste>)] DELETE REFERENCES [(<spaltenliste>)] Das REFERENCES-Recht erlaubt die Verwendung von Spalten der Tabelle in einer FOREIGN KEY-Klausel einer anderen CREATE TABLE-Anweisung. 15 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Rechtevergabe in SQL-Standard Benutzer und Rollen anlegen Rechtevergabe Rechteentzug GRANT < privliste > ALL ON TABLE < tabellenname > TO < benutzerliste > PUBLIC [ WITH GRANT OPTION ]; Dabei sind die folgenden Rechte für Tabellen möglich: SELECT [(<spaltenliste>)] INSERT [(<spaltenliste>)] UPDATE [(<spaltenliste>)] DELETE REFERENCES [(<spaltenliste>)] Das REFERENCES-Recht erlaubt die Verwendung von Spalten der Tabelle in einer FOREIGN KEY-Klausel einer anderen CREATE TABLE-Anweisung. 15 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Beispielsdatenbank Benutzer- und Rechteverwaltung Benutzer und Rollen anlegen Rechtevergabe Rechteentzug 16 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Beispiele für Rechtevergabe Benutzer und Rollen anlegen Rechtevergabe Rechteentzug Jedem alle vorhandenen Rechte auf die Tabelle Medium gewähren GRANT ALL PRIVILEGES ON Medium TO PUBLIC ; Leserecht in einem Befehl für mehrere Tabellen vergeben GRANT SELECT ON Ausleihe, Kunde, Medium, Ort TO admin ; MySQL und Oracle verbieten die Vergabe von Rechten an mehreren Tabellen durch eine Anweisung! 17 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Beispiele für Rechtevergabe Benutzer und Rollen anlegen Rechtevergabe Rechteentzug Jedem alle vorhandenen Rechte auf die Tabelle Medium gewähren GRANT ALL PRIVILEGES ON Medium TO PUBLIC ; Leserecht in einem Befehl für mehrere Tabellen vergeben GRANT SELECT ON Ausleihe, Kunde, Medium, Ort TO admin ; MySQL und Oracle verbieten die Vergabe von Rechten an mehreren Tabellen durch eine Anweisung! 17 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Beispiele für Rechtevergabe Benutzer und Rollen anlegen Rechtevergabe Rechteentzug Jedem alle vorhandenen Rechte auf die Tabelle Medium gewähren GRANT ALL PRIVILEGES ON Medium TO PUBLIC ; Leserecht in einem Befehl für mehrere Tabellen vergeben GRANT SELECT ON Ausleihe, Kunde, Medium, Ort TO admin ; MySQL und Oracle verbieten die Vergabe von Rechten an mehreren Tabellen durch eine Anweisung! 17 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Beispiele für Rechtevergabe Benutzer und Rollen anlegen Rechtevergabe Rechteentzug Jedem alle vorhandenen Rechte auf die Tabelle Medium gewähren GRANT ALL PRIVILEGES ON Medium TO PUBLIC ; Leserecht in einem Befehl für mehrere Tabellen vergeben GRANT SELECT ON Ausleihe, Kunde, Medium, Ort TO admin ; MySQL und Oracle verbieten die Vergabe von Rechten an mehreren Tabellen durch eine Anweisung! 17 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Rechte dürfen weitergegeben werden Benutzer und Rollen anlegen Rechtevergabe Rechteentzug superuser 18 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Rechte dürfen weitergegeben werden Benutzer und Rollen anlegen Rechtevergabe Rechteentzug superuser GRANT SELECT ON Medium TO hans, peter WITH GRANT OPTION; 18 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Rechte dürfen weitergegeben werden Benutzer und Rollen anlegen Rechtevergabe Rechteentzug superuser GRANT SELECT ON Medium TO hans, peter WITH GRANT OPTION; hans peter 18 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Rechte dürfen weitergegeben werden Benutzer und Rollen anlegen Rechtevergabe Rechteentzug superuser GRANT SELECT ON Medium TO hans, peter WITH GRANT OPTION; GRANT SELECT ON Medium TO moritz; hans peter 18 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Rechte dürfen weitergegeben werden Benutzer und Rollen anlegen Rechtevergabe Rechteentzug superuser GRANT SELECT ON Medium TO hans, peter WITH GRANT OPTION; GRANT SELECT ON Medium TO moritz; hans peter moritz 18 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Rechte dürfen weitergegeben werden Benutzer und Rollen anlegen Rechtevergabe Rechteentzug superuser GRANT SELECT ON Medium TO hans, peter WITH GRANT OPTION; GRANT SELECT ON Medium TO moritz; hans peter GRANT SELECT ON Medium TO moritz, max; moritz 18 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Rechte dürfen weitergegeben werden Benutzer und Rollen anlegen Rechtevergabe Rechteentzug superuser GRANT SELECT ON Medium TO hans, peter WITH GRANT OPTION; GRANT SELECT ON Medium TO moritz; hans peter GRANT SELECT ON Medium TO moritz, max; moritz 18 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Rechte dürfen weitergegeben werden Benutzer und Rollen anlegen Rechtevergabe Rechteentzug superuser GRANT SELECT ON Medium TO hans, peter WITH GRANT OPTION; GRANT SELECT ON Medium TO moritz; hans peter GRANT SELECT ON Medium TO moritz, max; moritz max 18 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Benutzer und Rollen anlegen Rechtevergabe Rechteentzug Rechteweitergabe mit WITH GRANT OPTION Rechte dürfen weitergegeben werden GRANT SELECT, INSERT, DELETE, UPDATE ON Ausleihe, Kunde, Medium, Orte TO hans, peter WITH GRANT OPTION ; Die Option WITH GRANT OPTION erlaubt den Benutzern ottbert und gottfried, ihre erhaltenen Rechte an andere Benutzer weiterzugeben. 19 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Superuser in MySQL Benutzer und Rollen anlegen Rechtevergabe Rechteentzug GRANT ALL PRIVILEGES ON *.* TO admin @ localhost IDENTIFIED BY top secret WITH GRANT OPTION ; Der Superuser admin muss nicht extra mittels CREATE USER angelegt werden. In MySQL kann auch mittels des GRANT-Befehls ein Benutzer erstellt werden. Damit der Benutzer admin sich auch von einem beliebigen anderen Host aus mit der Datenbank verbinden kann, benötigt er zusätzlich ein zweites Konto wie folgt: GRANT ALL PRIVILEGES ON *.* TO admin @ % IDENTIFIED BY top secret WITH GRANT OPTION ; 20 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Superuser in MySQL Benutzer und Rollen anlegen Rechtevergabe Rechteentzug GRANT ALL PRIVILEGES ON *.* TO admin @ localhost IDENTIFIED BY top secret WITH GRANT OPTION ; Der Superuser admin muss nicht extra mittels CREATE USER angelegt werden. In MySQL kann auch mittels des GRANT-Befehls ein Benutzer erstellt werden. Damit der Benutzer admin sich auch von einem beliebigen anderen Host aus mit der Datenbank verbinden kann, benötigt er zusätzlich ein zweites Konto wie folgt: GRANT ALL PRIVILEGES ON *.* TO admin @ % IDENTIFIED BY top secret WITH GRANT OPTION ; 20 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Superuser in MySQL Benutzer und Rollen anlegen Rechtevergabe Rechteentzug GRANT ALL PRIVILEGES ON *.* TO admin @ localhost IDENTIFIED BY top secret WITH GRANT OPTION ; Der Superuser admin muss nicht extra mittels CREATE USER angelegt werden. In MySQL kann auch mittels des GRANT-Befehls ein Benutzer erstellt werden. Damit der Benutzer admin sich auch von einem beliebigen anderen Host aus mit der Datenbank verbinden kann, benötigt er zusätzlich ein zweites Konto wie folgt: GRANT ALL PRIVILEGES ON *.* TO admin @ % IDENTIFIED BY top secret WITH GRANT OPTION ; 20 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Superuser in MySQL Benutzer und Rollen anlegen Rechtevergabe Rechteentzug GRANT ALL PRIVILEGES ON *.* TO admin @ localhost IDENTIFIED BY top secret WITH GRANT OPTION ; Der Superuser admin muss nicht extra mittels CREATE USER angelegt werden. In MySQL kann auch mittels des GRANT-Befehls ein Benutzer erstellt werden. Damit der Benutzer admin sich auch von einem beliebigen anderen Host aus mit der Datenbank verbinden kann, benötigt er zusätzlich ein zweites Konto wie folgt: GRANT ALL PRIVILEGES ON *.* TO admin @ % IDENTIFIED BY top secret WITH GRANT OPTION ; 20 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
REFERENCES-Recht Benutzer- und Rechteverwaltung Benutzer und Rollen anlegen Rechtevergabe Rechteentzug erlaubt FOREIGN KEY-Definitionen GRANT REFERENCES ON Medium TO ottbert ; Tabellendefinition führt ottbert durch CREATE TABLE Mediumhuelle ( Bezeichnung VARCHAR, Mdnr INTEGER REFERENCES Medium ( Mdnr ) ); ottbert benötigt kein zusätzliches SELECT-Recht, um die referenzierten Daten zu sehen! 21 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
REFERENCES-Recht Benutzer- und Rechteverwaltung Benutzer und Rollen anlegen Rechtevergabe Rechteentzug erlaubt FOREIGN KEY-Definitionen GRANT REFERENCES ON Medium TO ottbert ; Tabellendefinition führt ottbert durch CREATE TABLE Mediumhuelle ( Bezeichnung VARCHAR, Mdnr INTEGER REFERENCES Medium ( Mdnr ) ); ottbert benötigt kein zusätzliches SELECT-Recht, um die referenzierten Daten zu sehen! 21 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
REFERENCES-Recht Benutzer- und Rechteverwaltung Benutzer und Rollen anlegen Rechtevergabe Rechteentzug erlaubt FOREIGN KEY-Definitionen GRANT REFERENCES ON Medium TO ottbert ; Tabellendefinition führt ottbert durch CREATE TABLE Mediumhuelle ( Bezeichnung VARCHAR, Mdnr INTEGER REFERENCES Medium ( Mdnr ) ); ottbert benötigt kein zusätzliches SELECT-Recht, um die referenzierten Daten zu sehen! 21 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
REFERENCES-Recht Benutzer- und Rechteverwaltung Benutzer und Rollen anlegen Rechtevergabe Rechteentzug erlaubt FOREIGN KEY-Definitionen GRANT REFERENCES ON Medium TO ottbert ; Tabellendefinition führt ottbert durch CREATE TABLE Mediumhuelle ( Bezeichnung VARCHAR, Mdnr INTEGER REFERENCES Medium ( Mdnr ) ); ottbert benötigt kein zusätzliches SELECT-Recht, um die referenzierten Daten zu sehen! 21 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Spaltenrechte Benutzer- und Rechteverwaltung Benutzer und Rollen anlegen Rechtevergabe Rechteentzug UPDATE-Recht für bestimmte Spalten GRANT UPDATE ( Bezeichnung, Genre, Leihstatus ) ON Medium TO ottbert ; Leserecht für bestimmte Spalten GRANT SELECT ( Mdnr, Bezeichnung ) ON Medium TO ottbert ; In Oracle können Leserechte für Spalten nur durch den Umweg über Sichten (Views) definiert werden. 22 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Noch etwas... Benutzer- und Rechteverwaltung Benutzer und Rollen anlegen Rechtevergabe Rechteentzug Rechte der mitarbeiter-rolle auf lehrer übertragen GRANT mitarbeiter TO lehrer ; -- nicht mit MySQL Während in MySQL ein einfaches DROP-Recht ausreicht, um als Nicht-Eigentümer eine Tabelle zu löschen, benötigt man in Oracle das DROP ANY TABLE-Recht dazu. PostgreSQL kennt gar kein DROP-Recht. Eine Tabelle (Objekt) kann nur durch seinen Eigentümer oder durch einen Superuser gelöscht werden. PostgreSQL: Eigentümer ändern ALTER TABLE Medium OWNER TO ottbert ; 23 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Benutzer und Rollen anlegen Rechtevergabe Rechteentzug PostgreSQL: Objekt-Rechte anzeigen mit psql Anders als bei MySQL oder Oracle gibt es in PostgreSQL unserer Kenntnis nach keine Systemtabellen, die die Rechte von Benutzern oder Objekten anzeigen. Auf der folgenden Seite finden Sie eine Übersicht aller Systemtabellen von PostgreSQL 9.0. http: //www.postgresql.org/docs/9.0/static/catalogs.html 24 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Mögliche Rechte in PostgreSQL Benutzer und Rollen anlegen Rechtevergabe Rechteentzug r: SELECT (Lesen aus Tabellen, Views und Sequenzen) w: UPDATE (auf Tabellen und Sequenzen anwendbar) a: INSERT (nur auf Tabellen anwendbar) d: DELETE (nur auf Tabellen anwendbar) x: REFERENCES (für FOREIGN KEY-Definitionen) t: TRIGGER (Anlegen von TRIGGER auf Tabellen) X: EXECUTE (für Funktionsaufrufe) U: USAGE (Nutzen diverser Objekte) C: CREATE (Erstellen von Objekten) ALL PRIVILEGES (alle verfügbaren Rechte) 25 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
MySQL: Rechte anzeigen Benutzer und Rollen anlegen Rechtevergabe Rechteentzug Tabellen- oder Benutzerrechte anzeigen SELECT * FROM information_ schema. TABLE_ PRIVILEGES ; SELECT * FROM information_ schema. USER_ PRIVILEGES ; Benutzerrechte anzeigen SHOW GRANTS FOR ottbert@ localhost ; Eine Auflistung der MySQL-Schema-Tabellen finden Sie unter der folgenden Adresse: http://dev.mysql.com/doc/refman/5.1/ de/information-schema.html 26 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Oracle: Rechte anzeigen Benutzer und Rollen anlegen Rechtevergabe Rechteentzug Login-Rechte für ottbert GRANT CONNECT TO ottbert ; Allgemeine Rechte anzeigen SELECT privilege FROM dba_ sys_ privs WHERE grantee = OTTBERT : Tabellenrechte anzeigen SELECT * FROM user_ tab_ privs_ made WHERE grantee = OTTBERT ; 27 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Benutzer und Rollen anlegen Rechtevergabe Rechteentzug Einige Systemtabellen (Views von Oracle) user objects: Alle Objekte, die ein Benutzer angelegt hat. user constraints: Zeigt alle definierten Integritätsbedingungen. session privs: Alle aktuellen Rechte eines Benutzers. session roles: Alle Rollen, die ein Benutzer aktuell nutzt. user role privs: Alle Rollen, die ein Benutzer nutzen kann. user tab privs made: Alle Privilegien, die ein Benutzer vergeben hat. user tab privs recd: Alle Privilegien, die ein Benutzer erhalten hat. role tab privs: Alle Privilegien, die eine Rolle enthält 28 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Benutzer und Rollen anlegen Rechtevergabe Rechteentzug Rechteentzug 29 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Rechteentzug mit REVOKE Benutzer und Rollen anlegen Rechtevergabe Rechteentzug Zugriffsrechte entziehen REVOKE SELECT, INSERT, UPDATE, DELETE ON Ausleihe, Kunde, Medium, Orte FROM ottbert ; Zugriffsrechte kaskadierend entziehen REVOKE SELECT, INSERT, UPDATE, DELETE ON Ausleihe, Kunde, Medium, Orte FROM ottbert CASCADE ; 30 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Benutzer und Rollen anlegen Rechtevergabe Rechteentzug Besonderheit bei PostgreSQL und SQL-Standard superuser GRANT SELECT ON Medium TO hans, peter WITH GRANT OPTION; GRANT SELECT ON Medium TO moritz; hans peter GRANT SELECT ON Medium TO moritz, max; moritz max 31 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Benutzer und Rollen anlegen Rechtevergabe Rechteentzug Besonderheit bei PostgreSQL und SQL-Standard superuser hans peter moritz max 32 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Benutzer und Rollen anlegen Rechtevergabe Rechteentzug Besonderheit bei PostgreSQL und SQL-Standard superuser REVOKE SELECT ON Medium FROM moritz; hans peter moritz max 32 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Benutzer und Rollen anlegen Rechtevergabe Rechteentzug Besonderheit bei PostgreSQL und SQL-Standard superuser Der Benutzer moritz behält aber immer noch das SELECT Recht, da er es unabhängig von zwei Benutzern erhielt. REVOKE SELECT ON Medium FROM moritz; hans peter moritz max 32 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Benutzer und Rollen anlegen Rechtevergabe Rechteentzug Besonderheit bei PostgreSQL und SQL-Standard superuser hans peter moritz max 33 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Benutzer und Rollen anlegen Rechtevergabe Rechteentzug Besonderheit bei PostgreSQL und SQL-Standard REVOKE SELECT ON Medium FROM peter CASCADE; superuser REVOKE SELECT ON Medium FROM hans CASCADE; hans peter moritz max 33 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Benutzer und Rollen anlegen Rechtevergabe Rechteentzug Besonderheit bei PostgreSQL und SQL-Standard REVOKE SELECT ON Medium FROM peter CASCADE; superuser REVOKE SELECT ON Medium FROM hans CASCADE; hans peter moritz max 33 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Benutzer und Rollen anlegen Rechtevergabe Rechteentzug Besonderheit bei PostgreSQL und SQL-Standard REVOKE SELECT ON Medium FROM peter CASCADE; superuser REVOKE SELECT ON Medium FROM hans CASCADE; Jetzt kann sich der superuser sicher sein, dass moritz kein SELECT Recht mehr besitzt. Aber leider verlieren hans, peter und sogar max ebenfalls ihr SELECT Recht auf die Medium Tabelle. hans peter moritz max 33 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Benutzer und Rollen anlegen Rechtevergabe Rechteentzug Besonderheit bei PostgreSQL und SQL-Standard superuser hans peter moritz max 34 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Benutzer und Rollen anlegen Rechtevergabe Rechteentzug Besonderheit bei PostgreSQL und SQL-Standard REVOKE GRANT OPTION FOR SELECT ON Medium FROM peter CASCADE; superuser REVOKE GRANT OPTION FOR SELECT ON Medium FROM hans CASCADE; hans peter moritz max 34 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Benutzer und Rollen anlegen Rechtevergabe Rechteentzug Besonderheit bei PostgreSQL und SQL-Standard REVOKE GRANT OPTION FOR SELECT ON Medium FROM peter CASCADE; superuser REVOKE GRANT OPTION FOR SELECT ON Medium FROM hans CASCADE; hans peter moritz max 34 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Benutzer und Rollen anlegen Rechtevergabe Rechteentzug Besonderheit bei PostgreSQL und SQL-Standard REVOKE GRANT OPTION FOR SELECT ON Medium FROM peter CASCADE; superuser REVOKE GRANT OPTION FOR SELECT ON Medium FROM hans CASCADE; Jetzt aber können hans und peter das SELECT Recht nicht mehr an weitere Benutzer weitergeben. Der Benutzer max verliert so auch sein SELECT Recht. hans peter moritz max 34 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Benutzer und Rollen anlegen Rechtevergabe Rechteentzug Besonderheit bei PostgreSQL und SQL-Standard Der Superuser kann zwar nach dem Entziehen der GRANT OPTION-Klausel den Benutzern hans und peter erneut erlauben, die SELECT-Rechte auf die Medium-Tabelle an Dritte weiterzugeben. hans und ottbert aber müssen dann wieder von vorne beginnen, allen weiteren Benutzern, an die sie vorher das SELECT-Recht auf die Tabelle Medium vergeben hatten, dieses erneut zu übertragen. Dies kann eine Kettenreaktion nach sich ziehen. Oracle und MySQL? In Oracle dürfen aus diesem Grund nur die Benutzer, die die Reche vergeben haben, diese wieder entziehen. In MySQL kann ein Superuser jedem seine Rechte entziehen, auch wenn er dieses Recht nicht explizit vergeben hat. 35 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Benutzer und Rollen anlegen Rechtevergabe Rechteentzug Besonderheit bei PostgreSQL und SQL-Standard Der Superuser kann zwar nach dem Entziehen der GRANT OPTION-Klausel den Benutzern hans und peter erneut erlauben, die SELECT-Rechte auf die Medium-Tabelle an Dritte weiterzugeben. hans und ottbert aber müssen dann wieder von vorne beginnen, allen weiteren Benutzern, an die sie vorher das SELECT-Recht auf die Tabelle Medium vergeben hatten, dieses erneut zu übertragen. Dies kann eine Kettenreaktion nach sich ziehen. Oracle und MySQL? In Oracle dürfen aus diesem Grund nur die Benutzer, die die Reche vergeben haben, diese wieder entziehen. In MySQL kann ein Superuser jedem seine Rechte entziehen, auch wenn er dieses Recht nicht explizit vergeben hat. 35 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Benutzer und Rollen anlegen Rechtevergabe Rechteentzug Besonderheit bei PostgreSQL und SQL-Standard Der Superuser kann zwar nach dem Entziehen der GRANT OPTION-Klausel den Benutzern hans und peter erneut erlauben, die SELECT-Rechte auf die Medium-Tabelle an Dritte weiterzugeben. hans und ottbert aber müssen dann wieder von vorne beginnen, allen weiteren Benutzern, an die sie vorher das SELECT-Recht auf die Tabelle Medium vergeben hatten, dieses erneut zu übertragen. Dies kann eine Kettenreaktion nach sich ziehen. Oracle und MySQL? In Oracle dürfen aus diesem Grund nur die Benutzer, die die Reche vergeben haben, diese wieder entziehen. In MySQL kann ein Superuser jedem seine Rechte entziehen, auch wenn er dieses Recht nicht explizit vergeben hat. 35 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Sichtveränderung Sichtveränderung in PostgreSQL (RULEs) 36 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Sichten Benutzer- und Rechteverwaltung Sichtveränderung Sichtveränderung in PostgreSQL (RULEs) Mit den Sichten (VIEW s) können Benutzern ein Ausschnitt der Datenbank zur Verfügung gestellt werden. CREATE VIEW filmeab5 SELECT Beschreibung, Leihpreis FROM Medium WHERE Leihpreis > 5; Zeilenbasitertes Zugriffsrecht GRANT SELECT ON filmeab5 TO ottbert ; Medium Mdnr Beschreibung Mtyp Leihstatus Leihpreis Erscheinungsjahr Genre 37 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Sichten Benutzer- und Rechteverwaltung Sichtveränderung Sichtveränderung in PostgreSQL (RULEs) Eine Sicht darf im Allgemeinen überall dort eingesetzt werden, wo eine Tabelle erwartet wird. Abfragen an Sichten können genauso wie Anfragen an Tabellen formuliert werden. Sichten können auch als Verbunde mehrer Tabellen oder anderen Sichten definiert werden. Sichten werden oftmals aus Datenschutzgründen eingesetzt. Sie bieten aber auch die Möglichkeit, gerade bei normaliserten Tabellen, eine bessere Benutzerfreundlichkeit zu schaffen. Mittels Sichten können zudem komplexere Anfragen einfacher formuliert werden. 38 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Sichten Benutzer- und Rechteverwaltung Sichtveränderung Sichtveränderung in PostgreSQL (RULEs) Eine Sicht darf im Allgemeinen überall dort eingesetzt werden, wo eine Tabelle erwartet wird. Abfragen an Sichten können genauso wie Anfragen an Tabellen formuliert werden. Sichten können auch als Verbunde mehrer Tabellen oder anderen Sichten definiert werden. Sichten werden oftmals aus Datenschutzgründen eingesetzt. Sie bieten aber auch die Möglichkeit, gerade bei normaliserten Tabellen, eine bessere Benutzerfreundlichkeit zu schaffen. Mittels Sichten können zudem komplexere Anfragen einfacher formuliert werden. 38 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Sichten Benutzer- und Rechteverwaltung Sichtveränderung Sichtveränderung in PostgreSQL (RULEs) Eine Sicht darf im Allgemeinen überall dort eingesetzt werden, wo eine Tabelle erwartet wird. Abfragen an Sichten können genauso wie Anfragen an Tabellen formuliert werden. Sichten können auch als Verbunde mehrer Tabellen oder anderen Sichten definiert werden. Sichten werden oftmals aus Datenschutzgründen eingesetzt. Sie bieten aber auch die Möglichkeit, gerade bei normaliserten Tabellen, eine bessere Benutzerfreundlichkeit zu schaffen. Mittels Sichten können zudem komplexere Anfragen einfacher formuliert werden. 38 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Sichten Benutzer- und Rechteverwaltung Sichtveränderung Sichtveränderung in PostgreSQL (RULEs) Eine Sicht darf im Allgemeinen überall dort eingesetzt werden, wo eine Tabelle erwartet wird. Abfragen an Sichten können genauso wie Anfragen an Tabellen formuliert werden. Sichten können auch als Verbunde mehrer Tabellen oder anderen Sichten definiert werden. Sichten werden oftmals aus Datenschutzgründen eingesetzt. Sie bieten aber auch die Möglichkeit, gerade bei normaliserten Tabellen, eine bessere Benutzerfreundlichkeit zu schaffen. Mittels Sichten können zudem komplexere Anfragen einfacher formuliert werden. 38 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Sichten Benutzer- und Rechteverwaltung Sichtveränderung Sichtveränderung in PostgreSQL (RULEs) Eine Sicht darf im Allgemeinen überall dort eingesetzt werden, wo eine Tabelle erwartet wird. Abfragen an Sichten können genauso wie Anfragen an Tabellen formuliert werden. Sichten können auch als Verbunde mehrer Tabellen oder anderen Sichten definiert werden. Sichten werden oftmals aus Datenschutzgründen eingesetzt. Sie bieten aber auch die Möglichkeit, gerade bei normaliserten Tabellen, eine bessere Benutzerfreundlichkeit zu schaffen. Mittels Sichten können zudem komplexere Anfragen einfacher formuliert werden. 38 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Sichten Benutzer- und Rechteverwaltung Sichtveränderung Sichtveränderung in PostgreSQL (RULEs) Eine Sicht darf im Allgemeinen überall dort eingesetzt werden, wo eine Tabelle erwartet wird. Abfragen an Sichten können genauso wie Anfragen an Tabellen formuliert werden. Sichten können auch als Verbunde mehrer Tabellen oder anderen Sichten definiert werden. Sichten werden oftmals aus Datenschutzgründen eingesetzt. Sie bieten aber auch die Möglichkeit, gerade bei normaliserten Tabellen, eine bessere Benutzerfreundlichkeit zu schaffen. Mittels Sichten können zudem komplexere Anfragen einfacher formuliert werden. 38 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Sichtveränderung Sichtveränderung in PostgreSQL (RULEs) Eine Sicht von mehreren Tabellen (Join-View) CREATE OR REPLACE VIEW KundenMedien AS SELECT k.kdnr, k. Nachname, m.mdnr, m. Beschreibung FROM Kunde k, Ausleihe a, Medium m WHERE k. Kdnr = a. Kdnr AND a. Mdnr = m. Mdnr ; Um eine View anzulegen wird in der Regel das CREATE VIEW-Recht benötigt. Da PostgreSQL dieses Recht nicht kennt, kann jeder Benutzer eine View anlegen. Er benötigt aber das Leserecht für die in der SELECT-Anweisung aufgelisteten Tabellenspalten. Fehlt das SELECT-Recht, kann ein Benutzer zwar eine Sicht anlegen, diese aber nicht sehen. 39 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Sichtveränderung Sichtveränderung in PostgreSQL (RULEs) Eine Sicht von mehreren Tabellen (Join-View) CREATE OR REPLACE VIEW KundenMedien AS SELECT k.kdnr, k. Nachname, m.mdnr, m. Beschreibung FROM Kunde k, Ausleihe a, Medium m WHERE k. Kdnr = a. Kdnr AND a. Mdnr = m. Mdnr ; Um eine View anzulegen wird in der Regel das CREATE VIEW-Recht benötigt. Da PostgreSQL dieses Recht nicht kennt, kann jeder Benutzer eine View anlegen. Er benötigt aber das Leserecht für die in der SELECT-Anweisung aufgelisteten Tabellenspalten. Fehlt das SELECT-Recht, kann ein Benutzer zwar eine Sicht anlegen, diese aber nicht sehen. 39 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Sichtveränderung Sichtveränderung in PostgreSQL (RULEs) Eine Sicht von mehreren Tabellen (Join-View) CREATE OR REPLACE VIEW KundenMedien AS SELECT k.kdnr, k. Nachname, m.mdnr, m. Beschreibung FROM Kunde k, Ausleihe a, Medium m WHERE k. Kdnr = a. Kdnr AND a. Mdnr = m. Mdnr ; Um eine View anzulegen wird in der Regel das CREATE VIEW-Recht benötigt. Da PostgreSQL dieses Recht nicht kennt, kann jeder Benutzer eine View anlegen. Er benötigt aber das Leserecht für die in der SELECT-Anweisung aufgelisteten Tabellenspalten. Fehlt das SELECT-Recht, kann ein Benutzer zwar eine Sicht anlegen, diese aber nicht sehen. 39 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Virtuelle und materialisierte Sichten Sichtveränderung Sichtveränderung in PostgreSQL (RULEs) Ein Datenbanksystem kann bei Bedarf eine Sicht entweder neu berechnen (virtual view) oder eine einmal berechnete Sicht für weitere Anfragen permanent speichern (materialized view). Virtuelle Sichten garantieren immer den aktuellen Zustand der Datenbank. Materialisierte Sichten haben in der Regel eine bessere Effizienz, da sie nicht jedes Mal neu berechnet werden müssen. PostgreSQL und MySQL erlauben nur die Definition von virtuellen Sichten. Oracle dagegen gestattet auch die Definition von materialisierten Sichten. 40 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und
Virtuelle und materialisierte Sichten Sichtveränderung Sichtveränderung in PostgreSQL (RULEs) Ein Datenbanksystem kann bei Bedarf eine Sicht entweder neu berechnen (virtual view) oder eine einmal berechnete Sicht für weitere Anfragen permanent speichern (materialized view). Virtuelle Sichten garantieren immer den aktuellen Zustand der Datenbank. Materialisierte Sichten haben in der Regel eine bessere Effizienz, da sie nicht jedes Mal neu berechnet werden müssen. PostgreSQL und MySQL erlauben nur die Definition von virtuellen Sichten. Oracle dagegen gestattet auch die Definition von materialisierten Sichten. 40 von 113 OStR Michael Dienert, StR Ahmad Nessar Nazar Benutzerverwaltung, Sichten und