Přeskočit obsah
For the complete DHIS2 documentation index, see llms.txt.

Audit

Úvod

DHIS2 podporuje novou službu auditu založenou na Apache ActiveMQ Artemis. Artemis používá jako asynchronní systém zasílání zpráv DHIS2.

Po uložení entity do databáze bude vytvořena zpráva auditu a odeslána spotřebitelské službě zpráv Artemis. Zpráva bude poté zpracována v jiném vláknu.

Protokoly auditu lze získat z databáze DHIS2. V současné době není k dispozici žádný koncový bod uživatelského rozhraní ani rozhraní API pro načítání záznamů auditu.

Detailed explanation of the audit system architecture can be found here.

What we log

This is the list of operations we log as part of the audit system:

  • Operations on user accounts (like but not limited to creation, profile edits)
  • Operations on user roles, groups and authority groups
  • Operations on metadata objects (like but not limited to categories, organization units, reports)
  • Operations on tracked objects (like but not limited to tracked entities)
  • Jobs configuration
  • Breaking the glass operations

Jedna tabulka auditu

All audit entries, except the ones related to tracked entities, will be saved into one single table named audit

Sloupec Typ Popis
auditid celé číslo Primární klíč.
audittype text READ, CREATE, UPDATE, DELETE, SEARCH
auditscope text METADATA, AGGREGATE, TRACKER
klass text Název entity auditu Java třídy.
atributy jsonb Řetězec JSON s atributy auditovaného objektu. Příklad: {"valueType":"TEXT", "categoryCombo":"SWQW313FQY", "domainType":"TRACKER"}.
data bytea Komprimovaný řetězec JSON auditní entity ve formátu bajtového pole (nečitelný pro lidi).
createdat časové razítko bez časového pásma Doba vytvoření.
createdby text Uživatelské jméno uživatele provádějícího auditovanou operaci.
uid text UID auditlovaného objektu.
code text Kód auditovaného objektu.

Služba auditu využívá dva nové koncepty: Audit Scope a Audit Type.

Rozsah auditu

Rozsah auditu je logická oblast aplikace, kterou lze auditovat. V současné době existují tři rozsahy auditu.

Rozsah Klíč Auditované objekty
Trasovač TRACKER Tracked Entity, Enrollment, Event.
Metadata METADATA Všechny objekty metadat (např. datový prvek, organizační jednotka).
Aggregate AGGREGATE Hodnota souhrnných dat.

Typ auditu

Typ auditu je akce, která spouští operaci auditu. V současné době podporujeme následující čtyři typy.

Název Klíč Popis
Číst READ Objekt byl přečten.
Vytvořit VYTVOŘIT Objekt byl vytvořen.
Aktualizace AKTUALIZACE Objekt byl aktualizován.
Vymazat SMAZAT Objekt byl smazán.
Vypnuto VYPNUTO Vypnout audit

Pozor

Typ auditu READ může generovat velké množství dat v databázi a může mít dopad na výkon.

Tracked entity audits

Operations on tracked entities are stored in the trackedentityaudit table.

trackedentityaudit

Sloupec Typ Popis
trackedentityauditid celé číslo Primární klíč.
trackedentity text Tracked entity name.
created časové razítko bez časového pásma Doba vytvoření.
accessedby text Uživatelské jméno uživatele provádějícího auditovanou operaci.
audittype text READ, CREATE, UPDATE, DELETE, SEARCH
comment text Kód auditovaného objektu.

This data can be retrieved via the API.

Rozbití skla

Funkce prolomení skla umožňuje přístup k záznamům, ke kterým uživatel DHIS2 za zvláštních okolností přístup nemá. V důsledku toho musí uživatelé zadat důvod pro přístup k takovým záznamům.

Video vysvětlující, jak to funguje, najdete na našem kanálu YouTube zde.

Událost rozbití skla je uložena v tabulce programtempownershipaudit, popsané níže:

Sloupec Typ Popis
programtempownershipauditid celé číslo Primární klíč.
programid celé číslo ID programu, ke kterému trasovaná entita patří.
trackedentityid celé číslo Tracked entity ID of which the attribute value belongs to.
created časové razítko bez časového pásma Doba vytvoření.
accessedby text Uživatelské jméno uživatele provádějícího auditovanou operaci.
důvod text Důvod, jak je uvedeno v dialogovém okně.

Nastavení

Systém auditu je standardně povolen pro následující rozsahy a typy.

Rozsahy (rozlišují se malá a velká písmena):

  • READ
  • VYTVOŘIT
  • UPDATE
  • DELETE
  • SEARCH
  • DISABLED

Typy:

  • METADATA
  • TRACKER
  • AGGREGATE

To znamená, že není vyžadována žádná akce k aktivaci výchozího systému auditu. Výchozí nastavení je ekvivalentní následující konfiguraci dhis.conf.

audit.metadata = CREATE;UPDATE;DELETE
audit.tracker = CREATE;UPDATE;DELETE
audit.aggregate = CREATE;UPDATE;DELETE

Audit lze nakonfigurovat pomocí audit matrix. Matice auditu představuje platné kombinace rozsahů a typů a je definována pomocí následujících vlastností v konfiguračním souboru dhis.conf. Každá vlastnost přijímá seznam typů auditu oddělený středníkem (;).

  • audit.metadata
  • audit.tracker
  • audit.aggregate

Artemis

Apache ActiveMQ Artemis je projekt s otevřeným zdrojovým kódem, jehož cílem je vybudovat multiprotokolový, embeddovatelný, velmi výkonný, klastrovaný asynchronní systém zasílání zpráv. Je součástí DHIS2 od verze 2.31 a používá se jako systém pro zpracování protokolů auditu.

Ve výchozím nastavení DHIS2 spustí vestavěný server Artemis, který aplikace interně používá k ukládání událostí auditu a přístupu k nim.

Pokud však již máte server Artemis, můžete se k němu připojit z DHIS2 a odesílat události auditu, jak je popsáno v naší oficiální dokumentaci: v tomto nastavení budou události auditu proudit z DHIS2 do externího systému Artemis .

log4j2

log4j2 je výchozí knihovna protokolování DHIS2 používaná ke zpracování výstupních zpráv. Používá se k ovládání toho, jaké události se zaznamenávají do kterého souboru.

Aplikace dodává výchozí konfigurační soubor log4j2, který dává pokyn, jaké informace se mají protokolovat a kam (konzole). DHIS2 se poté postará o import tohoto souboru a protokolování instrukcí, jak je popsáno v třída konfigurace log4j, tedy přesměrování výstupu z konzole do souborů.

Od 2.36 do 2.38 se soubor protokolu auditu dhis-audit.log otočí každý den o půlnoci.

Příklad vlastní konfigurace log4j2 lze nalézt zde: ukazuje, jak nakonfigurovat DHIS2 tak, aby ukládal všechny protokoly do externího úložiště, střídal je na týdenní bázi a uchovával je po dobu 30 dnů. Přečtěte si prosím sekci protokolování aplikací, jak jej používat.

Příklady

Tato část ukazuje, jak nakonfigurovat systém auditu v dhis.conf.

Chcete-li povolit audit vytváření a aktualizace pouze metadat a sledování:

audit.metadata = CREATE;UPDATE
audit.tracker = CREATE;UPDATE
audit.aggregate = DISABLED

Chcete-li pouze vytvořit a odstranit objekty související se sledováním:

audit.metadata = DISABLED
audit.tracker = CREATE;DELETE
audit.aggregate = DISABLED

Chcete-li úplně zakázat audit pro všechny rozsahy:

audit.metadata = DISABLED
audit.tracker = DISABLED
audit.aggregate = DISABLED

Doporučujeme uchovávat auditní záznamy v souboru, jako standardně ve verzi 2.38. U starších verzí následující konfigurace ukládá protokoly auditu do souboru $DHIS2_HOME/logs/dhis-audit.log:

audit.database = off
audit.logger = on

Chcete-li uložit data auditu do databáze, přidejte do svého souboru dhis.conf následující (výchozí do verze 2.38):

audit.database = on
audit.logger = off

Chcete-li extrahovat protokoly z tabulky audit, můžete použít dhis2-audit-data-extractor ze systému, kde běží DHIS2:

$ python extract_audit.py extract

Úplné podrobnosti naleznete v dokumentaci.

Chcete-li analyzovat položky ze souboru protokolu, můžete použít skript python takto:

$ grep "auditType" dhis-audit.log | python extract_audit.py parse

Nebo použijte jq následovně:

$ grep "auditType" dhis-audit.log | jq -r .

Chcete-li vybrat události v určitém datu, můžete použít jq následovně (v tomto příkladu vybíráme všechny události, které se staly mezi lednem 2022 a koncem června 2022):

$ grep "auditType" dhis-audit.log | jq -r '.[] | select ( (.datetime >="2022-01-01") and (.datetime <= "2022-06-30") )'

Totéž s extract_audit:

$ python3 extract_audit.py extract -m stdout -f JSON | jq -r '.[] | select ( (.datetime >="2022-01-01") and (.datetime <= "2022-06-30") )'