本指南說明 Arova Nexus 的稽核紀錄能力。稽核是平台的橫切基礎建設,所有寫入動作都會留下不可竄改的紀錄供合規檢視。本版本範圍涵蓋身分相關事件;其他模組(工單、警報、AI 自動化等)會在後續版本陸續加入。
Arova Nexus 內建 append-only 稽核紀錄機制 — 所有對系統狀態的寫入動作(建帳號、改密碼、調策略、登入鎖定、緊急解鎖)都會自動產生一筆紀錄,包含時間、操作者、動作、對象、結果與來源 IP。
| 性質 | 內容 |
|---|---|
| 寫入方式 | append-only(只能新增,不能改、不能刪) |
| 完整性保障 | DB 層 grant 限制 + 應用層拒絕修改 API |
| 保留期間 | 至少 5 年 |
| 與動作的關聯 | 同 transaction(動作成功 = 稽核也寫入;稽核寫失敗 = 整個動作 rollback) |
| 查詢介面 | 本版本未提供 UI;未來由獨立模組提供合規長 / 資安長使用 |
| 事件 | 觸發來源 | 紀錄欄位 |
|---|---|---|
bootstrap_admin |
首次安裝完成 | actor=system_init、target=新建 Admin username、result=success |
password_changed |
使用者改密成功 | actor=使用者、reason=user/forced |
password_policy_update |
管理員調策略 | actor=管理員、before/after diff |
account_locked |
連續 5 次登入失敗 | actor=系統、target=被鎖帳號、failure_count=5 |
login_blocked_locked |
鎖定期間嘗試登入 | actor=嘗試者、result=denied |
account_auto_unlocked |
15 分鐘自動解鎖後成功登入 | actor=系統、target=帳號 |
account_unlocked_admin |
管理員緊急解鎖 | actor=管理員、target=被解鎖帳號 |
force_password_change_set |
管理員標記強制改密 | actor=管理員、target=使用者 |
password_expired_forced_change |
密碼到期觸發改密流程 | actor=使用者、reason=expired |
每筆稽核紀錄包含以下欄位:
| 欄位 | 範例 | 說明 |
|---|---|---|
timestamp |
2026-05-18T09:23:45.123Z |
動作完成時間(UTC ISO 8601 含毫秒) |
actor |
alice / system_init |
執行動作的帳號或系統識別 |
action |
bootstrap_admin |
動作類型(enum,見上表) |
target |
bob |
動作對象(若適用) |
result |
success / denied |
結果狀態 |
source_ip |
192.168.1.10 |
請求來源 IP(若適用) |
before / after |
{min_length: 12} → {min_length: 16} |
變更前後快照(若適用,如策略變更) |
稽核紀錄不可被任何角色修改或刪除。本平台採雙層防護:
| 層級 | 機制 |
|---|---|
| 資料庫層 | 應用程式角色僅有 INSERT 權限,無 UPDATE / DELETE 權限 |
| 應用程式層 | 不提供任何修改或刪除稽核的 API endpoint |
⚠️ 注意: DB superuser 角色仍可繞過 grant 限制,因此稽核完整性最終仰賴部署環境的 DB 運維權限控管。本平台於安裝指南會建議客戶將 DB 管理權限與平台維運權限分離。
+--------+ 動作觸發 +--------+ DB 層拒絕 +--------+
| 寫入 +--------------> | 已落地 +<-+ 修改/刪除 | 嘗試篡改 |
+--------+ +--------+ | +--------+
| | |
| 寫入失敗 | 5 年內 | (拒絕)
v v |
+--------+ +--------+ |
| Rollback| | 可查詢 +---+
| (整動作)| +--------+
+--------+ | > 5 年
v
+--------+
| 匯出封存|
+--------+
| 情境 | 系統行為 |
|---|---|
| 稽核寫入失敗(disk full / DB error) | 整個動作 transaction rollback,使用者看到「儲存失敗」訊息 |
| 對象使用者後來被刪除 | 稽核紀錄仍保留原 username 字串(不會因刪除而失去意義) |
| 系統時鐘倒退 | 紀錄使用 monotonic clock + sequence number 保證嚴格排序 |
| 災難復原情境 | 稽核紀錄隨 DB backup 一起備份;恢復後完整性與時間序維持 |
| 嘗試從外部 HTTP API 寫稽核 | 拒絕 — 稽核寫入介面僅供應用層內部呼叫 |