-- ═══════════════════════════════════════════════════════════════════ -- NIS2 Agile - Migration 055: Audit interni (ISO 27001 §9.2) -- ─────────────────────────────────────────────────────────────────── -- MODULO A del design DESIGN_AUDIT_INTERNI_RIESAME_DIREZIONE.md -- Ciclo: programma audit -> checklist di conduzione -> esiti -> finding NC. -- Additivo, runner-safe (CREATE TABLE IF NOT EXISTS + FK inline). -- I finding NC confluiscono in non_conformities (source='audit', -- source_entity_type='internal_audit_item'); le evidenze su evidence_files -- (entity_type='internal_audit'). Nessuna nuova tabella file. -- ═══════════════════════════════════════════════════════════════════ -- Programma / sessioni di audit interno CREATE TABLE IF NOT EXISTS internal_audits ( id INT NOT NULL AUTO_INCREMENT, organization_id INT NOT NULL, code VARCHAR(20) NULL, title VARCHAR(255) NOT NULL, scope TEXT NULL, criteria TEXT NULL, planned_date DATE NULL, executed_date DATE NULL, status ENUM('planned','in_progress','completed','cancelled') NOT NULL DEFAULT 'planned', lead_auditor_user_id INT NULL, lead_auditor_role_id INT NULL, conclusion TEXT NULL, created_by INT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY idx_intaud_org (organization_id), CONSTRAINT fk_intaud_org FOREIGN KEY (organization_id) REFERENCES organizations (id) ON DELETE CASCADE, CONSTRAINT fk_intaud_lead_user FOREIGN KEY (lead_auditor_user_id) REFERENCES users (id) ON DELETE SET NULL, CONSTRAINT fk_intaud_lead_role FOREIGN KEY (lead_auditor_role_id) REFERENCES org_roles (id) ON DELETE SET NULL, CONSTRAINT fk_intaud_creator FOREIGN KEY (created_by) REFERENCES users (id) ON DELETE SET NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- Voci di checklist (clausole 4-10, controlli Annex A, misure NIS2, custom) CREATE TABLE IF NOT EXISTS internal_audit_items ( id INT NOT NULL AUTO_INCREMENT, audit_id INT NOT NULL, ref_type ENUM('clause','annex_control','nis2_measure','custom') NOT NULL DEFAULT 'clause', ref_code VARCHAR(32) NULL, checkpoint TEXT NOT NULL, result ENUM('da_verificare','conforme','non_conforme','osservazione','opportunita','non_applicabile') NOT NULL DEFAULT 'da_verificare', note TEXT NULL, ord INT NOT NULL DEFAULT 0, PRIMARY KEY (id), KEY idx_intauditem_audit (audit_id), CONSTRAINT fk_intauditem_audit FOREIGN KEY (audit_id) REFERENCES internal_audits (id) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;