Prüfrichtlinien

Der Sicherheitsadministrator kann mithilfe von Prüfrichtlinien die Prüffunktion so konfigurieren, dass nur Informationen zu den Daten und Objekten erfasst werden, die benötigt werden.

Der Sicherheitsadministrator kann Prüfrichtlinien erstellen, um zu steuern, welche Elemente in einer einzelnen Datenbank zu prüfen sind. Den folgenden Objekten kann eine Prüfrichtlinie zugeordnet werden:
  • Die gesamte Datenbank

    Alle prüfbaren Ereignisse, die in der Datenbank auftreten, werden der Prüfrichtlinie entsprechend protokolliert.

  • Tabellen

    Alle Zugriffe durch die Datenbearbeitungssprache (DML) und XQUERY-Zugriffe auf die Tabelle (nicht typisiert), die MQT (Materialized Query Table) oder den Kurznamen werden protokolliert. Nur Prüfereignisse der Kategorie EXECUTE werden mit oder ohne Daten generiert, wenn auf die Tabelle zugegriffen wird, selbst wenn die Richtlinie angibt, dass andere Kategorien protokolliert werden sollen.

  • Gesicherter Kontext

    Alle prüfbaren Ereignisse, die in einer gesicherten Verbindung auftreten, die durch den bestimmten gesicherten Kontext definiert wird, werden der Prüfrichtlinie entsprechend protokolliert.

  • Berechtigungs-IDs von Benutzern, Gruppen oder Rollen

    Alle prüfbaren Ereignisse, die von dem angegebenen Benutzer eingeleitet werden, werden der Prüfrichtlinie entsprechend protokolliert.

    Alle prüfbaren Ereignisse, die von Benutzern eingeleitet werden, die zu einer Gruppe oder Rolle gehören, werden der Prüfrichtlinie entsprechend protokolliert. Dies schließt indirekte Rollenzugehörigkeiten zum Beispiel durch andere Rollen und Gruppen mit ein.

    Sie können ähnliche Daten mithilfe der Workload Management-Ereignismonitore, erfassen, indem Sie eine Auslastung (Workload) für eine Gruppe definieren und die Aktivitätsdetails erfassen. Sie sollten sich jedoch darüber im Klaren sein, dass die Zuordnung von Auslastungen neben der Berechtigungs-ID auch auf Attribute zurückgreift, die dazu führen können, dass nicht die gewünschte Granularität beim Prüfen erzielt wird oder, falls diese anderen Attribute geändert werden, dass Verbindungen möglicherweise anderen (eventuell nicht überwachten) Auslastungen zugeordnet werden. Die Lösung der Prüffunktion bietet hingegen die Garantie, dass ein Benutzer, eine Gruppe oder eine Rolle geprüft wird.

  • Berechtigungen (SYSADM, SECADM, DBADM, SQLADM, WLMADM, ACCESSCTRL, DATAACCESS, SYSCTRL, SYSMAINT, SYSMON)

    Alle prüfbaren Ereignisse, die von einem Benutzer eingeleitet werden, der die angegebene Berechtigung hat, selbst wenn diese Berechtigung für das Ereignis nicht erforderlich ist, werden der Prüfrichtlinie entsprechend protokolliert.

Der Sicherheitsadministrator kann mehrere Prüfrichtlinien erstellen. Zum Beispiel kann es für ein Unternehmen sinnvoll sein, eine Richtlinie zur Prüfung schutzwürdiger Daten und eine Richtlinie zur Prüfung der Aktivitäten von Benutzern mit der Berechtigung DBADM zu haben. Wenn mehrere Prüfrichtlinien für eine Anweisung verwendet werden, werden alle Ereignisse, die für jede der Prüfrichtlinien geprüft werden müssen, geprüft (jedoch nur einmal). Wenn zum Beispiel die Prüfrichtlinie der Datenbank eine Prüfung erfolgreicher EXECUTE-Ereignisse für eine bestimmte Tabelle erfordert und die Prüfrichtlinie des Benutzers eine Prüfung fehlgeschlagener EXECUTE-Ereignisse für dieselbe Tabelle erfordert, werden sowohl erfolgreiche als auch fehlgeschlagene Zugriffsversuche für diese Tabelle protokolliert.

Für ein bestimmtes Objekt kann nur eine Prüfrichtlinie in Kraft sein. Es ist zum Beispiel nicht möglich, mehrere Prüfrichtlinien gleichzeitig derselben Tabelle zuzuordnen.

Eine Prüfrichtlinie kann nicht einer Sicht oder einer typisierten Tabelle zugeordnet werden. Sichten, die auf eine Tabelle zugreifen, der eine Prüfrichtlinie zugeordnet ist, werden entsprechend der Prüfrichtlinie der zugrunde liegenden Tabelle geprüft.

Eine Prüfrichtlinie, die für eine Tabelle gilt, gilt nicht automatisch auch für eine MQT (Materialized Query Table), die auf dieser Tabelle basiert. Wenn Sie eine Prüfrichtlinie einer Tabelle zuordnen, sollten Sie dieselbe Richtlinie auch jeder MQT zuordnen, die auf dieser Tabelle basiert.

Eine Prüfung, die während einer Transaktion ausgeführt wird, erfolgt auf der Basis der Prüfrichtlinien und ihrer Zuordnungen zu Beginn der Transaktion. Wenn zum Beispiel der Sicherheitsadministrator eine Prüfrichtlinie einem Benutzer zuordnet und sich dieser Benutzer zu diesem Zeitpunkt in einer Transaktion befindet, wirkt sich die Prüfrichtlinie nicht auf die verbleibenden Anweisungen aus, die in dieser Transaktion ausgeführt werden. Auch Änderungen an einer Prüfrichtlinie treten erst in Kraft, wenn sie festgeschrieben (COMMIT) werden. Wenn ein Sicherheitsadministrator eine Anweisung ALTER AUDIT POLICY ausführt, wird sie erst wirksam, wenn die Anweisung mit COMMIT festgeschrieben wird.

Der Sicherheitsadministrator verwendet die Anweisung CREATE AUDIT POLICY zum Erstellen einer Prüfrichtlinie und die Anweisung ALTER AUDIT POLICY zum Ändern einer Prüfrichtlinie. In diesen Anweisungen können folgende Spezifikationen angegeben werden:
  • Die Statuswerte für zu prüfende Ereignisse: NONE (Kein), SUCCESS (Erfolg), FAILURE (Fehlschlag) oder BOTH (Beides).

    Nur prüfbare Ereignisse, die dem angegebenen Statuswert entsprechen, werden protokolliert.

  • Das Serververhalten, wenn Fehler während der Prüfung auftreten.

Der Sicherheitsadministrator verwendet die Anweisung AUDIT, um eine Prüfrichtlinie der aktuellen Datenbank oder einem Datenbankobjekt auf dem aktuellen Server zuzuordnen. Bei jeder Verwendung dieses Objekts wird es der zugeordneten Prüfrichtlinie entsprechend geprüft.

Der Sicherheitsadministrator verwendet die Anweisung DROP zum Löschen einer Prüfrichtlinie. Eine Prüfrichtlinie kann nicht gelöscht werden, wenn sie einem Objekt zugeordnet ist. Mit der Anweisung AUDIT REMOVE kann jede verbliebene Zuordnung zu einem Objekt entfernt werden. Wenn einer Prüfrichtlinie Metadaten hinzugefügt werden sollen, kann der Sicherheitsadministrator dazu die Anweisung COMMENT verwenden.

Vor Einrichtung einer vollständigen Verbindung generierte Ereignisse

Für einige Ereignisse, die während eines Verbindungsaufbaus und einer Benutzerwechseloperation generiert werden, sind nur die Informationen der Prüfrichtlinie verfügbar, die der Datenbank zugeordnet ist. Diese Ereignisse sind in der folgenden Tabelle aufgeführt:
Tabelle 1. Verbindungsereignisse
Ereignis Prüfkategorie Kommentar
CONNECT KONTEXT  
CONNECT_RESET KONTEXT  
AUTHENTICATION VALIDATE Dieses Ereignis erfasst die Authentifizierung sowohl beim Verbindungsaufbau als auch beim Benutzerwechsel in einer gesicherten Verbindung.
CHECKING_FUNC CHECKING Der versuchte Zugriff ist SWITCH_USER.

Diese Ereignisse werden nur auf der Basis der Prüfrichtlinie, die der Datenbank zugeordnet ist, und nicht durch Prüfrichtlinien, die anderen Objekten, wie Benutzern, deren Gruppen oder Berechtigungen, zugeordnet sind, protokolliert. Für die Ereignisse CONNECT und AUTHENTICATION, die während des Verbindungsaufbaus auftreten, werden die Prüfeinstellungen auf der Instanzebene verwendet, bis die Datenbank aktiviert wird. Die Datenbank wird aktiviert, wenn die erste Verbindung zu ihr hergestellt wird oder wenn der Befehl ACTIVATE DATABASE ausgeführt wird.

Wirkung des Benutzerwechsels

Wenn ein Benutzer innerhalb einer gesicherten Verbindung gewechselt wird, bleiben keine Spuren des ursprünglichen Benutzers zurück. In diesem Fall wird eine Prüfrichtlinie, die dem ursprünglichen Benutzer zugeordnet ist, nicht mehr berücksichtigt, und die anzuwendenden Prüfrichtlinien werden auf der Basis des neuen Benutzers erneut ausgewertet. Eine der gesicherten Verbindung zugeordnete Prüfrichtlinie bleibt weiterhin in Kraft.

Wenn die Anweisung SET SESSION USER verwendet wird, wird nur die Sitzungsberechtigungs-ID gewechselt. Die Prüfrichtlinie der Berechtigungs-ID des ursprünglichen Benutzers (die Systemberechtigungs-ID) bleibt in Kraft und die Prüfrichtlinie des neuen Benutzers wird zusätzlich verwendet. Wenn mehrere Anweisungen SET SESSION USER innerhalb einer Sitzung ausgeführt werden, werden nur die Prüfrichtlinie, die dem ursprünglichen Benutzer (die Systemberechtigungs-ID) zugeordnet ist, und die Prüfrichtlinie, die dem aktuellen Benutzer (die Sitzungsberechtigungs-ID) zugeordnet ist, berücksichtigt.

Einschränkungen für die Datendefinitionssprache (DDL)

Die folgenden Anweisungen der Datendefinitionssprache (DDL-Anweisungen) werden als exklusive SQL-Anweisungen der Prüffunktion (exklusive AUDIT-Anweisungen) bezeichnet:
  • PRÜFUNG
  • CREATE AUDIT POLICY, ALTER AUDIT POLICY und DROP AUDIT POLICY
  • DROP ROLE und DROP TRUSTED CONTEXT, wenn die Rolle bzw. der gesicherte Kontext, die bzw. der gelöscht wird, einer Prüfrichtlinie zugeordnet ist
Exklusive AUDIT-Anweisungen unterliegen in ihrer Verwendung bestimmten Einschränkungen:
  • Auf jede Anweisung muss eine Anweisung COMMIT oder ROLLBACK folgen.
  • Diese Anweisungen können nicht innerhalb einer globalen Transaktion, zum Beispiel einer XA-Transaktion, ausgeführt werden.

Nur eine nicht festgeschriebene exklusive DDL-Anweisung der Prüffunktion ist für alle Partitionen gleichzeitig zulässig. Wenn eine nicht festgeschriebene exklusive DDL-Anweisung der Prüffunktion ausgeführt wird, warten nachfolgende exklusive DDL-Anweisungen der Prüffunktion, bis die aktuelle Anweisung festgeschrieben (COMMIT) oder rückgängig gemacht (ROLLBACK) wird.

Hinweis: Änderungen werden in den Katalog geschrieben, werden jedoch bis zum Festschreiben (COMMIT) nicht wirksam, auch nicht für die Verbindung, die die Anweisung ausgibt.

Anwendungsfälle

Beispiel für das Prüfen eines beliebigen Zugriffs auf eine bestimmte Tabelle

Betrachten Sie zum Beispiel ein Unternehmen, bei dem die Tabelle EMPLOYEE extrem sensible Informationen enthält, sodass das Unternehmen sämtliche SQL-Zugriffe auf die Daten in dieser Tabelle prüfen möchte. Zur Verfolgung aller Zugriffe auf eine Tabelle kann die Kategorie EXECUTE verwendet werden. Sie prüft die SQL-Anweisung und optional den für diese Anweisung bei der Ausführung angegebenen Eingabedatenwert.

Die Verfolgung der Aktivitäten an der Tabelle erfolgt in zwei Schritten. Zunächst erstellt der Sicherheitsadministrator eine Prüfrichtlinie, die die Kategorie EXECUTE angibt. Anschließend ordnet der Sicherheitsadministrator diese Richtlinie der Tabelle zu:
CREATE AUDIT POLICY SENSITIVEDATAPOLICY
    CATEGORIES EXECUTE STATUS BOTH ERROR TYPE AUDIT
COMMIT

AUDIT TABLE EMPLOYEE USING POLICY SENSITIVEDATAPOLICY
COMMIT

Beispiel für das Prüfen beliebiger Aktionen durch bestimmte Berechtigungen

Ein Unternehmen muss zur Erfüllung einer Sicherheitszertifizierung nachweisen, dass alle Aktivitäten in der Datenbank durch Personen, die die Berechtigung SYSADM (Systemverwaltung) oder DBADM (Datenbankverwaltung) besitzen, überwacht werden können.

Zur Erfassung aller Aktionen in der Datenbank sollten sowohl die Kategorie EXECUTE als auch die Kategorie SYSADMIN geprüft werden. Der Sicherheitsadministrator erstellt eine Prüfrichtlinie, die diese beiden Kategorie prüft. Der Sicherheitsadministrator kann diese Prüfrichtlinie mit der Anweisung AUDIT den Berechtigungen SYSADM und DBADM zuordnen. Für jeden Benutzer, der entweder über die Berechtigung SYSADM oder die Berechtigung DBADM verfügt, werden anschließend alle prüfbaren Ereignisse protokolliert. Das folgende Beispiel zeigt, wie eine solche Prüfrichtlinie erstellt und den Berechtigungen SYSADM und DBADM zugeordnet wird:
CREATE AUDIT POLICY ADMINSPOLICY CATEGORIES EXECUTE STATUS BOTH,
   SYSADMIN STATUS BOTH ERROR TYPE AUDIT
COMMIT
AUDIT SYSADM, DBADM USING POLICY ADMINSPOLICY
COMMIT

Beispiel für das Prüfen eines beliebigen Zugriffs durch eine bestimmte Rolle

In einem Unternehmen können die Webanwendungen des Unternehmens auf die Unternehmensdatenbank zugreifen. Die genauen Personen, die mit den Webanwendungen arbeiten, sind nicht bekannt. Bekannt sind nur die verwendeten Rollen, die daher zur Verwaltung der Datenbankberechtigungen verwendet werden. Das Unternehmen möchte die Aktionen aller Benutzer überwachen, die zu dieser Rolle gehören, um die Anforderungen zu untersuchen, die sie an die Datenbank übergeben. Dadurch soll sichergestellt werden, dass sie nur über die Webanwendungen auf die Datenbank zugreifen.

Die Kategorie EXECUTE enthält die erforderliche Prüfstufe, um die Aktivitäten der Benutzer in diesem Fall zu verfolgen. Der erste Schritt besteht darin, die entsprechende Prüfrichtlinie zu erstellen und sie den Rollen zuzuordnen, die von den Webanwendungen verwendet werden (in diesem Beispiel sind dies die Rollen TELLER und CLERK):
CREATE AUDIT POLICY WEBAPPPOLICY CATEGORIES EXECUTE WITH DATA
   STATUS BOTH ERROR TYPE AUDIT
COMMIT
AUDIT ROLE TELLER, ROLE CLERK USING POLICY WEBAPPPOLICY
COMMIT

Beispiel zum Aktivieren der Prüfung für eine Datenbank

Ein Unternehmen möchte feststellen, wer DDL-Änderungen (z. B. ALTER TABLE) an der Datenbank namens SAMPLE vornimmt.

CONNECT TO SAMPLE

CREATE AUDIT POLICY ALTPOLICY CATEGORIES AUDIT STATUS BOTH,
				OBJMAINT STATUS BOTH,  CHECKING STATUS BOTH,
				EXECUTE STATUS BOTH, ERROR TYPE NORMAL

AUDIT DATABASE USING POLICY ALTPOLICY