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.
- 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.
- 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
| 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)
- 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
- 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.
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.
CREATE AUDIT POLICY SENSITIVEDATAPOLICY
CATEGORIES EXECUTE STATUS BOTH ERROR TYPE AUDIT
COMMIT
AUDIT TABLE EMPLOYEE USING POLICY SENSITIVEDATAPOLICY
COMMITBeispiel 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.
CREATE AUDIT POLICY ADMINSPOLICY CATEGORIES EXECUTE STATUS BOTH,
SYSADMIN STATUS BOTH ERROR TYPE AUDIT
COMMIT
AUDIT SYSADM, DBADM USING POLICY ADMINSPOLICY
COMMITBeispiel 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.
CREATE AUDIT POLICY WEBAPPPOLICY CATEGORIES EXECUTE WITH DATA
STATUS BOTH ERROR TYPE AUDIT
COMMIT
AUDIT ROLE TELLER, ROLE CLERK USING POLICY WEBAPPPOLICY
COMMITBeispiel 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