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.
- 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.
- 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;
- Prüfrichtlinie erstellen
- Verwenden Sie Ihre Prüfrichtlinie
- Angepasste Prüfrichtlinie konfigurieren
- Alle erstellten Prüfrichtlinien anzeigen
- Prüfen, welche Prüfrichtlinien derzeit verwendet werden
- Prüfung für eine Datenbankentität stoppen
- Prüfung für eine Gruppe stoppen
- Eine geplante Task erstellen
- Geplante Task ändern
- Status der geplanten Prüfaktualisierungstask überwachen
- Neuesten Prüfdatensätze in AUDIT.*- Tabellen sofort laden
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
oderAUDIT_LOGIN_ONLY
. Beginnen Sie den Namen nicht mitSYS
, 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
– ZugriffssteuerungVALIDATE
– AuthentifizierungSECMAINT
– Ü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;
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;
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' );
- 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 );
Status der geplanten Prüfaktualisierungstask überwachen
select * from SYSTOOLS.ADMIN_TASK_STATUS;
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();
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.