0 / 0
Zurück zur englischen Version der Dokumentation
Überwachung des Datenzugriffs mit der Audit-Funktion " Db2 in der Data Virtualization
Letzte Aktualisierung: 26. Nov. 2024
Überwachung des Datenzugriffs mit Hilfe von Audit-Richtlinien in der Data Virtualization

Um den Zugriff auf Ihre sensiblen Daten zu verwalten, können Sie mithilfe von Authentifizierungs- und Zugriffssteuerungsmechanismen Regeln und Steuerelemente für den Datenzugriff einrichten. Zum Schutz vor unbekanntem oder nicht akzeptablem Verhalten können Sie den Datenzugriff mithilfe der Db2®-Prüffunktion überwachen.

Die erfolgreiche Überwachung unerwünschter Datenzugriffe mit anschließender Analyse dieser Vorgänge kann zu verbesserter Datenzugriffssteuerung und damit zur Verhinderung böswilliger oder unbedachter Datenzugriffe beitragen. Durch Überwachung von Anwendungs- und Benutzerzugriffen, einschließlich der Systemverwaltungsaktionen, kann ein fortlaufendes Protokoll aller an Ihrer Datenbank ausgeführten Aktivitäten erstellt werden.

Mit der Db2-Prüffunktion können Sie ein Prüfprotokoll für eine Reihe vordefinierter Datenbankereignisse generieren und verwalten. Für jede Ereigniskategorie, die für die Prüfung verfügbar ist, wird ein aus einem Wort bestehendes Schlüsselwort verwendet, um den Kategorietyp nach dem Namen der Kategorie anzugeben. Die folgenden Ereigniskategorien sind für die Prüfung verfügbar:
Prüfung (AUDIT)
Generiert Prüfsätze, wenn Prüfeinstellungen geändert werden oder auf das Prüfprotokoll zugegriffen wird.
Berechtigungsprüfung (CHECKING)
Generiert Datensätze während der Berechtigungsprüfung von Versuchen, auf Db2-Datenbankobjekte oder -funktionen zuzugreifen oder diese zu bearbeiten.
Objektverwaltung (OBJMAINT)
Generiert Prüfsätze beim Erstellen oder Löschen von Datenobjekten sowie beim Ändern bestimmter Objekte.
Sicherheitsverwaltung (SECMAINT)
Generiert Datensätze für die folgenden Bedingungen:
  • Objektzugriffsrechte oder Datenbankberechtigungen erteilen oder entziehen.
  • Sicherheitskennsätze oder Freistellungen erteilen oder widerrufen.
  • Gruppenberechtigung, Rollenberechtigung ändern oder Attribute einer LBAC-Sicherheitsrichtlinie überschreiben oder beschränken.
  • Zugriffsrecht SETSESSIONUSER erteilen oder entziehen.
  • Ändern der Konfigurationsparameter SYSADM_GROUP, SYSCTRL_GROUP, SYSMAINT_GROUP oder SYSMON_GROUP
Systemverwaltung (SYSADMIN)
Generiert Datensätze, wenn Operationen ausgeführt werden, für die die Berechtigung SYSADM, SYSMAINT oder SYSCTRL erforderlich ist.
Benutzervalidierung (VALIDATE)
Generiert Prüfsätze bei der Vergabe von Benutzerberechtigungen und beim Abrufen von Systemsicherheitsdaten.
Operationskontext (CONTEXT)
Generiert Prüfsätze, die den Operationskontext darstellen, wenn eine Datenbankoperation ausgeführt wird. Diese Prüfkategorie erleichtert die Interpretation der Prüfprotokolldatei. Bei Verwendung zusammen mit dem Ereigniskorrelationsfeld des Protokolls kann eine Gruppe von Ereignissen auf eine einzige Datenbankoperation zurückgeführt werden. Beispiel: Eine Abfrageanweisung für dynamische Abfragen, eine Paketkennung für statische Abfragen oder ein Indikator des ausgeführten Operationstyps (z. B. CONNECT) kann den erforderlichen Kontext zum Analysieren der Prüfergebnisse liefern.
Ausführen (EXECUTE)
Generiert Prüfsätze während der Ausführung von SQL-Anweisungen.

Für alle aufgelisteten Kategorien können Sie Fehler und/oder Erfolge prüfen.

Alle Operationen auf dem Datenbankserver können mehrere Datensätze generieren. Die tatsächliche Anzahl der im Prüfprotokoll generierten Prüfsätze hängt von der Anzahl der aufzuzeichnenden Ereigniskategorien ab, die in der Konfiguration der Prüffunktion angegeben werden. Sie ist außerdem davon abhängig, ob erfolgreiche oder fehlgeschlagene Operationen oder beide geprüft werden. Es ist wichtig, bei der Auswahl der zu prüfenden Ereignisse selektiv vorzugehen.

Die von dieser Funktion generierten Datensätze können über eine Gruppe von Auditprotokolltabellen angezeigt werden, wobei jede Tabelle jeder Kategorie entspricht. Die Analyse dieser Datensätze kann Verwendungsmuster aufdecken, die einen Systemmissbrauch erkennen können. Wenn Missbrauch erkannt wird, können Maßnahmen ergriffen werden, um den Systemmissbrauch zu reduzieren oder zu beseitigen.

Die Prüffunktion bietet die Möglichkeit zur Prüfung auf Datenbankebene. Jedes Mitglied der Administratorgruppe kann eine Prüfrichtlinie konfigurieren, um zu steuern, wann solche Prüfinformationen erfasst werden, z. B. Überwachungsberechtigungs-IDs, Datenbankberechtigungen, gesicherte Kontexte oder bestimmte Tabellen.

Schnelleinstieg

  • AUDIT_ALL ist eine vordefinierte Richtlinie, die während der Implementierung konfiguriert wird. Diese Richtlinie prüft alle Erfolge und Fehler für jede Kategorie von Prüfsätzen. Es wird empfohlen, eine angepasste Richtlinie zu erstellen, die Ihren Anforderungen entspricht.
  • AUDIT_UPDATE ist eine vordefinierte Prozedur, die Prüfsätze in AUDIT.*- Tabellen.
  • AUDIT-Anweisungen setzen voraus, dass Benutzer die Berechtigung SECADM besitzen. Zum Anzeigen der Daten in AUDIT.*- Tabellen können Benutzer, denen das Zugriffsrecht SELECT für diese Tabellen erteilt wurde, auf sie zugreifen.
Wichtig: Wenn eine Prüfrichtlinie aktiviert ist und die Prüftask geplant ist, wird AUDIT.* Tabellen Speicherplatz auf Ihrem System. Sie müssen den von AUDIT.*- Tabellen. Sie müssen die Prüfdaten regelmäßig exportieren, um sie offline zu speichern und die Daten in den AUDIT.*- Tabellen.
AUDIT so aktivieren, dass alle Ereignisse im Service für jede Rolle erfasst werden
AUDIT ROLE DV_ADMIN USING POLICY AUDIT_ALL;
AUDIT ROLE DV_ENGINEER USING POLICY AUDIT_ALL;
AUDIT ROLE DV_STEWARD USING POLICY AUDIT_ALL;
AUDIT ROLE DV_WORKER USING POLICY AUDIT_ALL;
Eine geplante Prüfaktualisierungstask erstellen, die alle 15 Minuten die neuesten Prüfsätze in die Prüftabellen abruft (das Mindestintervall zwischen Aktualisierungen)
CALL SYSPROC.ADMIN_TASK_ADD( 'AUDIT_UPDATE', NULL, NULL, NULL, '*/15 * * * *', 'AUDIT', 'UPDATE', NULL, NULL, 'Periodically update to audit tables' );
Prüfsätze aus den 8 Prüfereigniskategorien anzeigen
select * from AUDIT.AUDIT;
select * from AUDIT.CHECKING;
select * from AUDIT.CONTEXT;
select * from AUDIT.EXCUTE;
select * from AUDIT.OBJMAINT;
select * from AUDIT.SECMAINT;
select * from AUDIT.SYSADMIN;
select * from AUDIT.VALIDATE;

Weitere Informationen finden Sie unter Prüfrichtlinien.


Prüfrichtlinie erstellen
CREATE AUDIT POLICY policy_name CATEGORIES category or ALL STATUS status ERROR TYPE NORMAL;

Weitere Informationen finden Sie unter CREATE AUDIT POLICY, Anweisung.

Namen von Prüfrichtlinien
Stellen Sie sicher, dass der Name eindeutig ist und der Zweck der Richtlinie leicht erkennbar ist, z. B. AUDIT_SOC2_COMPLIANCE oder AUDIT_LOGIN_ONLY. Beginnen Sie den Namen nicht mit SYS, da dies für interne Systemnamen in der Datenbank reserviert ist.
Zu prüfende Kategorien
Die Richtlinie bestimmt, welche Kategorien geprüft werden sollen. Diese Richtlinie kann auf andere Datenbankobjekte angewendet werden, um festzulegen, wie die Verwendung dieser Objekte geprüft werden soll. Es stehen acht Kategorien für die Prüfung zur Verfügung. Je mehr Kategorien konfiguriert sind, desto mehr Informationen werden geprüft und im Prüfpuffer kumuliert, wodurch Rechenspeicher belegt wird. Es ist wichtig zu verstehen, was für Ihren Zweck erforderlich ist, um eine Überlastung des Rechenbereichs Ihres Systems zu verhindern. In der Zusammenfassung sind alle verfügbaren Kategorien beschrieben. Wenn ALL als Kategorieoption angegeben ist, kann keine andere Kategorie angegeben werden.
Zur Einhaltung der meisten Sicherheitsstandards gelten die empfohlenen Kategorien in der folgenden Liste für die Zugriffssteuerung, die Authentifizierung und die Überwachung berechtigter Zugriffe. Durch die Konfiguration von Richtlinien mit diesen Kategorien wird sichergestellt, dass der Systemaufwand minimal ist und gleichzeitig die Sicherheit gewahrt ist.
  • EXECUTE WITHOUT DATA – Zugriffssteuerung
  • VALIDATE – Authentifizierung
  • SECMAINT – Überwachung des berechtigten Zugriffs
Außerdem sollten für jede Kategorie Erfolgs- und Fehlerszenarios geprüft werden und der Fehlertyp sollte nur SQL-Codefehler protokollieren.
  • STATUS BOTH
  • ERROR TYPE NORMAL


Beginnen Sie mit der Verwendung Ihrer Prüfrichtlinie
AUDIT database_entity USING POLICY policy_name;

Weitere Informationen finden Sie unter AUDIT-Anweisung.



Angepasste Prüfrichtlinie konfigurieren

Sie können eine angepasste Prüfrichtlinie konfigurieren, um Authentifizierungsanforderungen und erfolgreich ausgeführte SQL-Befehle zu erfassen und zu aktivieren.

CREATE AUDIT POLICY AUDIT_VALIDATE_EXECUTE CATEGORIES VALIDATE STATUS BOTH, EXECUTE STATUS SUCCESS ERROR TYPE NORMAL;
Zu prüfende Datenbankobjekte
Die Prüfung der gesamten Datenbank führt zu einer Überlastung des Rechenbereichs. Es wird empfohlen, festzustellen, auf welche Tabelle und zugehörige MQT (Materialized Query Table) eine Richtlinie angewendet werden soll.
Hinweis: Die Prüfrichtlinie, die für eine Tabelle gilt, gilt nicht für eine MQT (Materialized Query Table), die auf dieser Tabelle basiert. Wenn Sie eine Prüfrichtlinie einer Tabelle zuordnen, wird empfohlen, diese Richtlinie auch einer MQT zuzuordnen, die auf dieser Tabelle basiert. Der Compiler verwendet möglicherweise automatisch eine MQT, obwohl eine SQL-Anweisung auf die Basistabelle verweist. Die Prüfrichtlinie, die für die Basistabelle verwendet wird, ist jedoch weiterhin wirksam.

Eine weitere empfohlene Konfiguration ist die Anwendung einer Richtlinie auf eine Gruppe oder Rolle. Mit dieser Konfiguration können Sie überwachen, welche Benutzer in welcher Gruppe und Rolle nicht erwartete Aktionen ausführen. Wenn Sie eine Richtlinie auf die gesamte Datenbank anwenden möchten, stellen Sie sicher, dass die Richtlinie nicht alle Kategorien aufzeichnet.

Prüfrichtlinie für eine Tabelle aktivieren
AUDIT TABLE CUSTOMTABLE USING POLICY AUDIT_VALIDATE_EXECUTE;

Sie können auch eine angepasste Prüfrichtlinie konfigurieren, um nur Authentifizierungsanforderungen (erfolgreiche und fehlgeschlagene) zu erfassen und zu aktivieren.

CREATE AUDIT POLICY AUDIT_VALIDATE_ONLY CATEGORIES VALIDATE STATUS BOTH ERROR TYPE NORMAL;


Alle erstellten Prüfrichtlinien anzeigen
select * from SYSCAT.AUDITPOLICIES;
Die folgende Beispielausgabe ist das Ergebnis der Ausführung der vorhergehenden SELECT-Anweisung:

AUDITPOLICYNAME              AUDITPOLICYID CREATE_TIME                ALTER_TIME                 AUDITSTATUS CONTEXTSTATUS VALIDATESTATUS CHECKINGSTATUS SECMAINTSTATUS OBJMAINTSTATUS SYSADMINSTATUS EXECUTESTATUS EXECUTEWITHDATA ERRORTYPE REMARKS

---------------------------- ------------- -------------------------- -------------------------- ----------- ------------- -------------- -------------- -------------- -------------- -------------- ------------- --------------- --------- -------

AUDIT_VALIDATE_ONLY                    108 2018-07-23-21.00.57.024758 2018-07-23-21.00.57.024758 N           N             B              N              N              N              N              N             N               N         -

AUDIT_ALL                              106 2018-07-23-20.51.18.017062 2018-07-23-20.51.18.017062 B           B             B              B              B              B              B              B             N               N         -

  2 record(s) selected.


Prüfen, welche Prüfrichtlinien derzeit verwendet werden
select * from SYSCAT.AUDITUSE;
Die folgende Beispielausgabe ist das Ergebnis der Ausführung der vorhergehenden SELECT-Anweisung:

AUDITPOLICYNAME           AUDITPOLICYID OBJECTTYPE SUBOBJECTTYPE OBJECTSCHEMA  OBJECTNAME        AUDITEXCEPTIONENABLED

------------------------- ------------- ---------- ------------- ------------- ----------------- ---------------------

AUDIT_VALIDATE_ONLY                 108                          -             CURRENT SERVER    N

  1 record(s) selected.


Audit für eine Datenbankentität stoppen

Zum Stoppen einer Prüfung für eine Datenbankentität muss die Richtlinie entfernt werden.

AUDIT database_entity REMOVE POLICY;

Weitere Informationen finden Sie unter AUDIT-Anweisung.



Prüfung für eine Gruppe stoppen
AUDIT GROUP BLUUSERS REMOVE POLICY;


Eine geplante Task erstellen

Weitere Informationen finden Sie unter Prozedur ADMIN_TASK_ADD – Eine neue Task planen.

Gehen Sie wie folgt vor, um alle 20 Minuten eine geplante Prüfaktualisierungstask zum Abrufen der neuesten Prüfsätze in die Prüftabellen zu erstellen:
CALL SYSPROC.ADMIN_TASK_ADD( 'AUDIT_UPDATE', NULL, NULL, NULL, '*/20 * * * *', 'AUDIT', 'UPDATE', NULL, NULL, 'Periodically update to audit tables' );
Weitere Informationen zum Zeitplanformat finden Sie unter UNIX-cron-Format.
Häufigkeit planen
Die Häufigkeit, mit der die vordefinierte Task zum Archivieren der Prüfprotokolle ausgeführt wird, lag außerhalb des Geltungsbereichs dieses Tests. Es ist jedoch erwähnenswert, dass die Empfehlungen aus realen Kundensituationen zusammengestellt wurden. Bei größeren Datenbanken wird empfohlen, die Archivierungstask täglich 15 Minuten lang auszuführen. Dadurch kann die Datenbank bei unerwarteten Leistungsproblemen wiederhergestellt werden. Wenn die Richtlinien wie empfohlen konfiguriert sind, sollten die Prüfpuffer die Workload innerhalb dieses Zeitrahmens aufnehmen können. Wie die Leistungstests gezeigt haben, gibt es erwartete Leistungsprobleme, wenn komplizierte Abfragen gleichzeitig mit der Archivierung der Prüfdatensätze ausgeführt werden.


Geplante Task ändern

Weitere Informationen finden Sie unter Prozedur ADMIN_TASK_UPDATE – Eine vorhandene Task aktualisieren.

Gehen Sie wie folgt vor, um eine geplante Prüfaktualisierungstask so zu ändern, dass alle 20 Minuten die neuesten Prüfsätze in die Prüfprotokolltabellen abgerufen werden:
CALL SYSPROC.ADMIN_TASK_UPDATE( 'AUDIT_UPDATE', NULL, NULL, NULL, '*/20 * * * *', 'Periodically update to audit tables every 20 minutes' );
Gehen Sie wie folgt vor, um die geplante Prüfaktualisierungstask zu entfernen:
CALL SYSPROC.ADMIN_TASK_REMOVE( 'AUDIT_UPDATE', NULL );
Weitere Informationen finden Sie unter Prozedur ADMIN_TASK_REMOVE – Geplante Tasks oder Taskstatusdatensätze entfernen.


Status der geplanten Prüfaktualisierungstask überwachen
select * from SYSTOOLS.ADMIN_TASK_STATUS;
Die folgende Beispielausgabe ist das Ergebnis der Ausführung der vorhergehenden SELECT-Anweisung:

  NAME          TASKID  STATUS     AGENT_ID     INVOCATION  BEGIN_TIME                 END_TIME                   SQLCODE  SQLSTATE SQLERRMC RC
  ------------- ------- ---------- ------------ ----------- -------------------------- -------------------------- -------- -------- -------- -----
  AUDIT_UPDATE        1 COMPLETE          16433           1 2018-07-23-21.50.00.135211 2018-07-23-21.50.10.584127        0          x''          0
  AUDIT_UPDATE        1 RUNNING           16448           2 2018-07-23-21.55.00.608060 -                                 - -        -            -

    2 record(s) selected.
  


Neuesten Prüfdatensätze in AUDIT.*- Tabellen sofort laden
CALL AUDIT.UPDATE();
Hinweis Nach Ausführung dieses Prozeduraufrufs wird möglicherweise die folgende Nachricht angezeigt:
SQL1307N Beim Aufrufen der Sicherheitsprüffunktion ist ein Fehler aufgetreten.  Ursachencode: "9".

Diese Nachricht weist darauf hin, dass es seit dem letzten Laden der Prüftabellen mit Daten keine Aktivität gab. Sie weist nicht auf einen Systemfehler hin.


Generative KI-Suche und -Antwort
Diese Antworten werden von einem großen Sprachmodell in watsonx.ai basierend auf dem Inhalt der Produktdokumentation generiert. Weitere Informationen