@generazioneai/audit-catalog
v0.5.0
Published
Catalogo chiuso delle azioni d'audit della piattaforma (codici, categorie, conservazione, campi ammessi in meta) e catena di hash del registro curato. Comune a ID, Ops e GENAI-AUDIT-BE.
Readme
@generazioneai/audit-catalog
Il catalogo chiuso delle azioni del registro d'audit curato della piattaforma e la catena di hash delle sue righe.
Prima stava dentro GENAI-ID-BE (src/shared/audit/); ora è comune a ID, Ops (C3) e GENAI-AUDIT-BE (archivio WORM, M2), così un
codice e la formula dell'hash esistono in un posto solo. Nessuna dipendenza.
npm i @generazioneai/audit-catalogimport { AUDIT_ACTIONS, auditCategory, minRetentionMonths, chainHash, verifyAuditChain, type AuditActionCode } from '@generazioneai/audit-catalog';
const code: AuditActionCode = 'rbac.system.approved';
auditCategory(code); // 'security'
minRetentionMonths(code); // 24 (classe `sec`); le `std` 6, il minimo che un'azienda può impostare
const rowHash = chainHash(prevHash /* null per la prima */, row);Cosa c'è
AUDIT_ACTIONS: codice →{ label, category, retention: 'std' | 'sec', meta: campi ammessi }. Un'azione che non è qui non si scrive.metanon porta mai valori di dati personali. Stessi codici di ID, più quelli del Rilascio 2:rbac.role.assigned|revoked|reconciled,rbac.rule.reset,rbac.system.requested|approved|rejected|expired.- Dalla 0.5.0
auth.login.succeeded|failedammettono ancheamr(lista di codici),acr(URN del livello) essoRequired(login con SPID e CIE), e ci sono le azioni dei quattro occhi dell'archivio WORM (auditArchive.*). AuditActionCode,AuditCategory,AuditRetentionClass,AuditActionDef,AUDIT_CATEGORY_LABELS,AUTH_METHODS.auditActionDef(code),auditCategory(code),minRetentionMonths(code)(nullse il codice non c'è),isAuditCategory,actionsOfCategory,auditCatalogView()(la risposta diaudit.catalog),AUDIT_RETENTION(13 mesi di serie, 6–84,secalmeno 24).chainHash(prevHash, row)=sha256(prevHash | "GENESIS" + "\n" + JSON canonico dei campi), la formula di ID di oggi (un test riproduce due hash calcolati dal codice di ID: gli hash già scritti restano validi);canonicalJson,GENESIS,verifyAuditChain(rows)(righe in ordine diseq), tipiAuditHashFieldseChainCheck.
hashIp (HMAC dell'IP con la sottochiave di ID_DATA_KEY) resta in ID: dipende dalla chiave del servizio.
Aggiungere un'azione
Si aggiunge in src/catalog.ts (con label, category, retention e i soli meta ammessi), si alza la versione minore e
si aggiorna il CHANGELOG. Mai togliere o rinominare un codice: le righe già scritte lo portano.
