DB2 Universal Database - Systemverwaltung


Steuern des Zugriffs auf Datenbankobjekte

Für die Steuerung des Datenzugriffs müssen Sie mit direkten und indirekten Zugriffsrechten, Administratorberechtigungen und Paketen vertraut sein. In diesem Abschnitt werden diese Themen behandelt und einige Beispiele gegeben.

Direkt erteilte Zugriffsrechte werden im Systemkatalog gespeichert. Eine Beschreibung der Methoden, mit denen die Implementierung des Plans zur Steuerung des Datenbankzugriffs überprüft werden kann, finden Sie in Verwenden des Systemkatalogs.

Berechtigungen werden auf drei Arten gesteuert:

Die folgenden Themen werden behandelt:

Erteilen von Zugriffsrechten

Mit der Anweisung GRANT kann ein berechtigter Benutzer Zugriffsrechte erteilen. Ein Zugriffsrecht kann einem oder mehreren Berechtigungsnamen in einer Anweisung erteilt werden. Das Zugriffsrecht kann auch der Gruppe PUBLIC erteilt werden, wodurch es allen Benutzern zur Verfügung gestellt wird. Bei einem Berechtigungsnamen kann es sich um einen Einzelbenutzer oder um eine Gruppe handeln.

Bei Betriebssystemen, unter denen Benutzer denselben Namen wie Gruppen haben können, sollten Sie angeben, ob Sie das Zugriffsrecht dem Benutzer oder der Gruppe erteilen. Die Anweisungen GRANT und REVOKE unterstützen beide die Schlüsselwörter USER und GROUP. Wenn diese wahlfreien Schlüsselwörter nicht verwendet werden, überprüft der Datenbankmanager die Sicherheitseinrichtung des Betriebssystems, um zu ermitteln, ob der Berechtigungsname einen Benutzer oder eine Gruppe bezeichnet. Wenn es sich bei dem Berechtigungsnamen sowohl um einen Benutzer als auch um eine Gruppe handeln könnte, wird ein Fehler zurückgegeben.

Im folgenden Beispiel wird das Zugriffsrecht SELECT für die Tabelle EMPLOYEE dem Benutzer HERON erteilt:

GRANT SELECT
      ON EMPLOYEE TO USER HERON

Im folgenden Beispiel wird das Zugriffsrecht SELECT für die Tabelle EMPLOYEE der Gruppe HERON erteilt:

   GRANT SELECT
      ON EMPLOYEE TO GROUP HERON

Damit ein Benutzer Zugriffsrechte für die meisten Datenbankobjekte erteilen kann, muß er über die Berechtigung SYSADM, die Berechtigung DBADM oder das Zugriffsrecht CONTROL für das betreffende Objekt verfügen. Oder der Benutzer muß das jeweilige Zugriffsrecht mit der Klausel WITH GRANT OPTION besitzen. Zugriffsrechte können nur für existierende Objekte erteilt werden. Damit ein Benutzer das Zugriffsrecht CONTROL an einen anderen Benutzer erteilen kann, muß er über die Berechtigung SYSADM oder DBADM verfügen. Zum Erteilen der Berechtigung DBADM muß der Benutzer die Berechtigung SYSADM haben.

Weitere Informationen zur Anweisung GRANT finden Sie im Handbuch SQL Reference.

Widerrufen von Zugriffsrechten

Die Anweisung REVOKE erlaubt es berechtigten Benutzern, Zugriffsrechte zu widerrufen, die anderen Benutzern zuvor erteilt wurden. Zum Widerrufen von Zugriffsrechten für Datenbankobjekte müssen Sie über die Berechtigung DBADM, die Berechtigung SYSADM oder das Zugriffsrecht CONTROL für das betreffende Objekt verfügen. Beachten Sie, daß es nicht ausreicht, ein Zugriffsrecht mit der Klausel WITH GRANT OPTION zu besitzen, um es widerrufen zu können. Zum Widerrufen des Zugriffsrechts CONTROL eines anderen Benutzers müssen Sie die Berechtigung SYSADM oder DBADM haben. Zum Widerrufen der Berechtigung DBADM müssen Sie über die Berechtigung SYSADM verfügen. Zugriffsrechte können nur für existierende Objekte widerrufen werden.
Anmerkung:Ein Benutzer ohne die Berechtigung DBADM oder das Zugriffsrecht CONTROL für eine Tabelle oder Sicht kann kein Zugriffsrecht widerrufen, das er durch Verwendung der Klausel WITH GRANT OPTION erteilt hat. Auch gibt es kein benutzerübergreifendes Widerrufen für die Benutzer, die Zugriffsrechte besitzen, die ihnen von der Person, deren Zugriffsrechte widerrufen werden, erteilt wurden. Weitere Informationen zur Berechtigung, die zum Widerrufen von Zugriffsrechten erforderlich ist, finden Sie im Handbuch SQL Reference.

Wenn ein Zugriffsrecht einem Benutzer und einer Gruppe mit demselben Namen erteilt wurde, müssen Sie beim Widerrufen des Zugriffsrechts das Schlüsselwort GROUP oder USER angeben. Im folgenden Beispiel wird das Zugriffsrecht SELECT für die Tabelle EMPLOYEE des Benutzers HERON widerrufen:

REVOKE SELECT
     ON EMPLOYEE FROM USER HERON

Im folgenden Beispiel wird das Zugriffsrecht SELECT für die Tabelle EMPLOYEE der Gruppe HERON widerrufen:

   REVOKE SELECT
      ON EMPLOYEE FROM GROUP HERON

Zu beachten ist, daß beim Widerrufen eines Zugriffsrechts für eine Gruppe nicht notwendigerweise das Zugriffsrecht jedes einzelnen Angehörigen dieser Gruppe widerrufen wird. Wenn einem einzelnen Namen ein Zugriffsrecht direkt erteilt wurde, bleibt dieses Zugriffsrecht erhalten, bis es direkt widerrufen wird.

Wenn ein Zugriffsrecht auf eine Tabelle für einen Benutzer widerrufen wird, werden auch Zugriffsrechte für alle Sichten widerrufen, die von dem betreffenden Benutzer erstellt wurden und die von dem widerrufenen Zugriffsrecht auf die Tabelle abhängen. Es werden jedoch nur die vom System implizit erteilten Zugriffsrechte widerrufen. Wenn ein Zugriffsrecht für die Sicht direkt von einem anderen Benutzer erteilt wurde, bleibt dieses erhalten.

Wenn ein explizit erteiltes Zugriffsrecht auf eine Tabelle (oder eine Sicht) für einen Benutzer mit der Berechtigung DBADM widerrufen wird, werden die Zugriffsrechte für andere Sichten, die für diese Tabelle definiert sind, nicht widerrufen. Der Grund hierfür ist, daß die Zugriffsrechte für die Sichten auf der Berechtigung DBADM basieren und nicht von expliziten Zugriffsrechten auf die entsprechenden Tabellen abhängig sind.

Wenn Sie eine Sicht auf eine oder mehrere zugrunde liegende Tabellen oder Sichten definiert haben und Sie das Zugriffsrecht für eine oder mehrere dieser Tabellen oder Sichten verlieren, kann die Sicht nicht verwendet werden.
Anmerkung:Wenn einem Benutzer das Zugriffsrecht CONTROL für eine Tabelle oder Sicht entzogen wird, behält der Benutzer die Möglichkeit, Zugriffsrechte anderen Benutzern zu erteilen. Durch Erhalt des Zugriffsrechts CONTROL empfängt der Benutzer auch alle anderen Zugriffsrechte mit der Klausel WITH GRANT OPTION. Wird das Zugriffsrecht CONTROL widerrufen, bleiben alle anderen Zugriffsrechte mit der Klausel WITH GRANT OPTION erhalten, bis sie explizit widerrufen werden.

Alle Pakete, die von widerrufenen Zugriffsrechten abhängig sind, werden als ungültig markiert, können jedoch wieder zu gültigen Paketen werden, wenn sie von einem Benutzer mit der entsprechenden Berechtigung erneut gebunden werden. Pakete können auch wiederhergestellt werden, wenn die Zugriffsrechte später dem Benutzer, der die Anwendung gebunden hat, wieder erteilt werden. Durch Ausführen der Anwendung wird implizit ein erfolgreiches erneutes Binden ausgelöst. Wenn Zugriffsrechte der Gruppe PUBLIC widerrufen werden, werden alle Pakete ungültig gemacht, die von Benutzern gebunden wurden, die dies nur aufgrund der Zugriffsrechte der Gruppe PUBLIC tun konnten. Wenn die Berechtigung DBADM einem Benutzer entzogen wird, werden alle von diesem Benutzer gebundenen Pakete ungültig gemacht, einschließlich der Pakete, die Dienstprogrammen für Datenbanken zugeordnet sind. Wenn versucht wird, ein Paket zu verwenden, das als ungültig markiert wurde, versucht das System, dieses erneut zu binden. Wenn dieses erneute Binden fehlschlägt, tritt ein Fehler auf (SQLCODE -727). In diesem Fall müssen die Pakete von einem Benutzer explizit neu gebunden werden, der über folgendes verfügt:

Diese Pakete sollten zu dem Zeitpunkt, an dem die Zugriffsrechte widerrufen werden, neu gebunden werden. Weitere Informationen zu den Anweisungen REVOKE und REBIND PACKAGE finden Sie im Handbuch SQL Reference.

Wenn Sie einen Auslöser in Abhängigkeit von einem oder mehreren Zugriffsrechten definiert haben und Sie eines oder mehrere dieser Zugriffsrechte verlieren, kann der Auslöser nicht verwendet werden.

Implizite Berechtigungen durch Erstellen und Löschen von Objekten

Der Datenbankmanager erteilt implizit bestimmte Zugriffsrechte an einen Benutzer, der eine Anweisung CREATE SCHEMA, CREATE TABLESPACE, CREATE TABLE, CREATE VIEW oder CREATE INDEX absetzt oder mit dem Befehl PREP oder BIND ein neues Paket erstellt. Es werden auch Zugriffsrechte erteilt, wenn Objekte von Benutzern mit der Berechtigung SYSADM oder DBADM erstellt werden. In ähnlicher Weise werden Zugriffsrechte entfernt, wenn ein Objekt gelöscht wird.

Wenn das erstellte Objekt ein Tabellenbereich, eine Tabelle, ein Index oder ein Paket ist, erhält der Benutzer das Zugriffsrecht CONTROL für das Objekt. Wenn das Objekt eine Sicht ist, wird das Zugriffsrecht CONTROL für die Sicht nur dann implizit erteilt, wenn der Benutzer über das Zugriffsrecht CONTROL für alle Tabellen und Sichten verfügt, auf die in der Sichtdefinition verwiesen wird.

Wenn das explizit erstellte Objekt ein Schema ist, erhält der Schemeneigner die Zugriffsrechte ALTERIN, CREATEIN und DROPIN mit der Klausel WITH GRANT OPTION. Für ein implizit erstelltes Schema wird das Zugriffsrecht CREATEIN der Gruppe PUBLIC erteilt.

Weitere Informationen zum Festlegen von Zugriffsrechten für Sichten finden Sie im Abschnitt über die Anweisung CREATE VIEW im Handbuch SQL Reference.

Einrichten eines Eigentumsrechts für einen Plan oder ein Paket

Mit den Befehlen BIND und PRECOMPILE kann ein Anwendungspaket erstellt oder geändert werden. Für jeden der Befehle können Sie die Option OWNER angeben, um den Eigner des generierten Pakets zu benennen. Für die Benennung des Paketeigners gibt es die folgenden einfachen Regeln:

Nicht alle Betriebssysteme, die mit DB2-Datenbankprodukten ein Paket binden können, unterstützen die Option OWNER.

Weitere Informationen zu den Befehlen BIND und PRECOMPILE finden Sie im Handbuch Command Reference.

Ermöglichen indirekter Zugriffsberechtigungen durch ein Paket

Der Zugriff auf Daten in einer Datenbank kann durch Anwendungsprogramme sowie durch Personen, die an einer interaktiven Workstation-Sitzung teilnehmen, angefordert werden. Ein Paket enthält Anweisungen, die es Benutzern ermöglichen, eine Vielzahl von Aktionen für viele Datenbankobjekte auszuführen. Für jede dieser Aktionen ist mindestens ein Zugriffsrecht erforderlich.

Zugriffsrechte, die Einzelbenutzern, die das Paket binden, und der Gruppe PUBLIC erteilt werden, werden beim Binden von statischem SQL zur Berechtigungsprüfung verwendet. Zugriffsrechte, die über Gruppen erteilt wurden, werden beim Binden von statischem SQL nicht zur Berechtigungsprüfung verwendet. Dem Benutzer mit einer gültigen authID, der ein Paket bindet, müssen entweder alle zum Ausführen der statischen SQL-Anweisungen im Paket erforderlichen Zugriffsrechte explizit oder implizit die erforderlichen Zugriffsrechte über PUBLIC erteilt worden sein, sofern beim Binden des Pakets nicht VALIDATE RUN angegeben wurde. Wurde während der Ausführung von BIND die Option VALIDATE RUN angegeben, schlägt BIND beim Auftreten von Berechtigungsfehlern für statische SQL-Anweisungen innerhalb des Pakets nicht fehl. Die entsprechenden SQL-Anweisungen werden dann während der Laufzeit nochmals geprüft. Zugriffsrechte über PUBLIC sowie Gruppen- und Einzelbenutzerzugriffsrechte werden alle bei der Überprüfung verwendet, um sicherzustellen, daß der Benutzer die nötige Berechtigung (Zugriffsrecht BIND oder BINDADD) zum Binden des Pakets besitzt.

Pakete können sowohl statisches als auch dynamisches SQL enthalten. Zum Verarbeiten eines Pakets mit statischem SQL muß ein Benutzer lediglich über das Zugriffsrecht EXECUTE für das Paket verfügen. Der Benutzer kann anschließend indirekt die Zugriffsrechte des Paketbinders für statisches SQL im Paket erhalten; dies ist allerdings nur im Rahmen der durch das Paket festgelegten Einschränkungen möglich.

Zum Verarbeiten eines Pakets mit dynamischen SQL-Anweisungen muß der Benutzer über das Zugriffsrecht EXECUTE für das Paket verfügen. Der Benutzer benötigt das Zugriffsrecht EXECUTE für das Paket und alle Zugriffsrechte, die zur Ausführung der dynamischen SQL-Anweisungen im Paket erforderlich sind. Die Berechtigungen und Zugriffsrechte des Binders werden für jedes statische SQL in dem Paket verwendet.

Ermöglichen indirekter Zugriffsberechtigungen durch ein Paket mit Kurznamen

Wenn ein Paket Verweise auf Kurznamen enthält, ist die Berechtigungsverarbeitung für Ersteller und Benutzer von Paketen etwas komplexer. Wenn ein Paketersteller Pakete, die Kurznamen enthalten, erfolgreich bindet, muß der Paketersteller keine Authentifizierung oder Überprüfung von Zugriffsrechten für Tabellen und Sichten durchlaufen, auf die an der Datenquelle mit den Kurznamen verwiesen wird. Wer jedoch das Paket ausführt, muß eine Authentifizierung und eine Berechtigungsprüfung an den Datenquellen durchlaufen.

Nehmen Sie z. B. an, daß eine .SQC-Datei eines Paketerstellers mehrere SQL-Anweisungen enthält. Eine statische Anweisung verweist auf eine lokale Tabelle. Eine weitere dynamische Anweisung verweist auf einen Kurznamen. Wenn das Paket gebunden wird, wird die Berechtigungs-ID des Paketerstellers verwendet, um Zugriffsrechte für die lokale Tabelle zu überprüfen. Allerdings findet für die Datenquellenobjekte, die durch den Kurznamen gekennzeichnet sind, keine Überprüfung statt. Wenn ein anderer Benutzer das Paket ausführt und das Zugriffsrecht EXECUTE für dieses Paket gegeben ist, muß dieser Benutzer für die Anweisung, die auf die Tabelle verweist, keinerlei weitere Überprüfung seiner Zugriffsrechte durchlaufen. Allerdings muß der Benutzer, der das Paket ausführt, für die Anweisung mit dem Kurznamen eine Authentifizierung und eine Überprüfung der Zugriffsrechte an der Datenquelle durchlaufen.

Wenn die .SQC-Datei nur dynamische SQL-Anweisungen und eine Kombination von Tabellennamen und Kurznamen enthält, ist die DB2-Berechtigungsprüfung für lokale Objekte und Kurznamen gleich. Paketbenutzer müssen die Überprüfung der Zugriffsrechte für beliebige lokale Objekte (Tabellen, Sichten), die sich in der Anweisung befinden, durchlaufen. Außerdem werden die Zugriffsrechte für Objekte mit Kurznamen überprüft. (Paketbenutzer müssen eine Authentifizierung und eine Überprüfung der Zugriffsrechte an der Datenquelle durchlaufen, die die Objekte mit den Kurznamen enthält.) In beiden Fällen müssen die Benutzer des Pakets über das Zugriffsrecht EXECUTE verfügen.

Die ID und das Kennwort des Benutzers, der das Paket ausführt, werden für die gesamte Verarbeitung der Authentifizierungen und Zugriffsrechte verwendet. Diese Daten können geändert werden, indem eine Benutzerzuordnung erstellt wird.
Anmerkung:Beim statischen SQL können Kurznamen nicht angegeben werden. Verwenden Sie mit Paketen, die Kurznamen enthalten, nicht den Parameter DYNAMICRULES (auf BIND gesetzt).

Für Pakete mit Kurznamen sind möglicherweise weitere Berechtigungsschritte erforderlich, da DB2 dynamisches SQL verwendet, um mit Datenquellen der DB2-Produktfamilie Daten auszutauschen. Die Berechtigungs-ID, die das Paket an der Datenquelle ausführt, muß mit der entsprechenden Berechtigung ausgestattet sein, um das Paket an dieser Datenquelle dynamisch ausführen zu können. Weitere Informationen dazu, wie DB2 statisches und dynamisches SQL verarbeitet, finden Sie im Handbuch SQL Reference.

Steuern des Zugriffs auf Daten mit Sichten

Eine Sicht bietet eine Möglichkeit, den Zugriff auf eine Tabelle zu beschränken bzw. die Zugriffsrechte für eine Tabelle zu erweitern. Dies geschieht wie folgt:

Zum Erstellen einer Sicht muß ein Benutzer über die Berechtigung SYSADM, die Berechtigung DBADM oder das Zugriffsrecht CONTROL oder SELECT für jede Tabelle oder Sicht, auf die in der Sichtdefinition verwiesen wird, verfügen. Der Benutzer muß darüber hinaus in der Lage sein, ein Objekt in dem für die Sicht angegebenen Schema zu erstellen. Das heißt, er muß über das Zugriffsrecht CREATEIN für ein vorhandenes Schema oder die Berechtigung IMPLICIT_SCHEMA für die Datenbank haben, wenn das Schema noch nicht existiert. Weitere Informationen finden Sie in Erstellen einer Sicht.

Wenn Sie Sichten mit Verweisen auf Kurznamen erstellen, müssen Sie über keine weitere Berechtigung auf die Datenquellen (Tabellen oder Sichten) verfügen, auf die mit den Kurznamen in der Sicht verwiesen wird. Allerdings müssen die Benutzer die Berechtigung SELECT oder eine gleichwertige Berechtigungsstufe für die zugrundeliegenden Datenquellenobjekte haben, wenn sie auf die Sicht zugreifen.

Wenn die Benutzer an der Datenquelle nicht die entsprechende Berechtigung für die zugrundeliegenden Objekte (Tabellen und Sichten) haben, können Sie wie folgt vorgehen:

Anschließend können die Benutzer auf die Spalten zugreifen, indem Sie eine SELECT-Anweisung absetzen, die den neuen Kurznamen als Verweis enthält.

Im folgenden Szenario erhalten Sie ein genaueres Beispiel, wie Sichten zur Einschränkung des Datenzugriffs verwendet werden können.

Viele Benutzer benötigen vielleicht aus unterschiedlichen Gründen Zugriff auf Informationen der Tabelle STAFF. Beispiel:

Überwachen des Zugriffs auf Daten mit Hilfe der Audit-Einrichtung

Die DB2-Prüffunktion generiert ein Prüfprotokoll für eine Reihe vordefinierter Datenbankereignisse und ermöglicht Ihnen die Verwaltung des Protokolls. Auch wenn es keine Einrichtung zur Verweigerung des Datenzugriffs ist, kann die Audit-Einrichtung Versuche, auf Datenobjekte zuzugreifen bzw. diese zu ändern, überwachen und einen Protokollsatz darüber anlegen.

Zur Verwendung der Audit-Einrichtung db2audit ist die Berechtigung SYSADM erforderlich.

In Kapitel 17, Protokollieren von DB2-Aktivitäten finden Sie eine detaillierte Beschreibung der DB2-Prüffunktion.


[ Seitenanfang | Vorherige Seite | Nächste Seite | Inhaltsverzeichnis | Index ]