完整指南:記錄、篩選、脫敏與文件導出)
ToolJet 審計日志Audit Logs完整指南記錄、篩選、脫敏與文件導出【免費下載鏈接】ToolJetOpen-source foundation of ToolJet AI - the enterprise app generation platform for internal tools, dashboards, business applications, workflows and AI agents. Build visually, from a prompt, or from Claude Code, Codex and Cursor over MCP 項目地址: https://gitcode.com/GitHub_Trending/to/ToolJet本文圍繞 ToolJet 的審計日志Audit Logs功能展開系統(tǒng)講解如何通過日期范圍與多維度篩選檢索賬戶內全部操作記錄、如何解讀每條日志的完整字段結構以及如何通過環(huán)境變量配置日志文件的生成路徑、每日輪轉與敏感信息脫敏。讀完本文你將能夠在自托管部署中開啟審計日志文件輸出并結合 環(huán)境變量配置 與 syslog 集成方案 落地合規(guī)審計與安全追蹤。付費功能提示Audit Logs 屬于 ToolJet 的付費功能Paid feature需要對應的許可證支持。什么是審計日志審計日志是 ToolJet 賬戶內所有操作行為的自動記錄報告。它自動捕獲并展示事件記錄誰who在何時when、何地where執(zhí)行了什么操作what同時附帶 IP 地址等信息。簡單來說每一次登錄、建應用、跑查詢、改權限等動作都會被記錄成一條可檢索、可追溯的事件。在服務端每條審計事件對應一張數據庫表記錄其實體定義位于 server/src/entities/audit_log.entity.ts對應數據庫表audit_logs。核心字段包括idUUID 主鍵唯一事件 IDuser_id/organization_id執(zhí)行者用戶與所屬組織resource_id/resource_name/resource_type被操作資源的 ID、名稱與類型resource_type使用枚舉取值見 server/src/modules/app/constants/modules.ts包含APP、USER、DataQueries、GroupPermissions等action_type動作類型如APP_CREATE、USER_LOGINip_address來源 IPmetadataJSON 結構包含tooljet_version與user_agentcreated_at事件產生時間。日志寫入側還使用了 winston 自定義格式auditLog見 server/src/modules/audit-logs/constants/index.ts把審計數據注入auditLog字段并提取resourceType作為日志label這解釋了下方示例日志文件中的結構。在界面中查看與檢索日志打開賬戶的 Audit Logs 頁面即可看到日志列表視圖默認展示最近 24 小時的日志并提供日期范圍選擇、篩選與分頁能力。日期范圍Date Range使用范圍選擇器range picker檢索指定日期與時間區(qū)間內發(fā)生的事件默認加載最近 24 小時的日志作為初始視圖from 與 to 之間可指定的最大跨度是 30 天超出范圍無法檢索頁面底部提供分頁導航每頁最多展示 7 條日志。30 天最大查詢跨度由許可證條款控制。前端通過getMaxDurationForAuditLogs()請求/license/audit-logs/max-duration接口獲取上限見 frontend/src/_services/auditLogsService.js服務端對應控制器定義在 server/src/modules/licensing/controllers/audit-logs.controller.ts其能力受許可證字段MAX_DURATION_FOR_AUDIT_LOGSmaxDaysForAuditLogs約束見 server/src/modules/licensing/constants/index.ts。篩選審計日志Audit Logs 頁面提供四組篩選條件可組合使用以快速定位目標事件。按用戶篩選Select Users從下拉列表中選擇特定用戶即可查看該用戶的所有活動記錄。按應用篩選Select Apps下拉列表會展示當前賬戶關聯的全部應用。選擇某個應用后日志將只保留與該應用相關的記錄。按資源篩選Select Resources資源Resources說明User過濾全部用戶類事件如USER_LOGIN、USER_SIGNUP、USER_INVITE、USER_INVITE_REDEEM。App過濾全部應用類事件如APP_CREATE、APP_UPDATE、APP_VIEW、APP_DELETE、APP_IMPORT、APP_EXPORT、APP_CLONE。Data Query過濾與數據查詢關聯的事件如DATA_QUERY_RUN。Group Permission過濾全部與用戶組權限關聯的事件包括GROUP_CREATE、GROUP_UPDATE、GROUP_DELETE。App Group Permission每個用戶組內可為應用設置只讀或可編輯權限這些變更會作為應用組權限事件被記錄。前端獲取資源列表調用getResources()請求/audit-logs/resources接口見 frontend/src/_services/auditLogsService.js。需要說明的是資源枚舉在代碼層面是可擴展的除上表外server/src/modules/app/constants/modules.ts 中還定義了Workflows、AppGit、AppHistory、DataQueryFolders等更多模塊類型界面中是否展示取決于當前版本與許可證能力。按動作篩選Select Actions動作Actions說明USER_LOGIN每次用戶登錄時記錄。USER_SIGNUP每次新用戶注冊時記錄。USER_INVITE在Manage Users中邀請用戶時每次發(fā)送邀請都會記錄一條事件。USER_INVITE_REDEEM邀請被兌換接受時記錄。APP_CREATE用戶創(chuàng)建新應用時記錄。APP_UPDATE對應用重命名、設為公開、編輯分享鏈接或部署應用等操作時記錄。APP_VIEW有人查看已發(fā)布應用時記錄公開應用不計入。APP_DELETE用戶從儀表盤刪除應用時記錄。APP_IMPORT用戶導入應用時記錄。APP_EXPORT應用被導出時記錄。APP_CLONE復制現有應用生成克隆時記錄。DATA_QUERY_RUN添加數據源、創(chuàng)建查詢或從查詢編輯器/已發(fā)布應用中運行查詢時記錄。GROUP_PERMISSION_CREATE創(chuàng)建用戶組時記錄。GROUP_PERMISSION_UPDATE向組中添加/移除應用或用戶或更新組權限時記錄。GROUP_PERMISSION_DELETE從賬戶中刪除用戶組時記錄。APP_GROUP_PERMISSION_UPDATE為用戶組中的應用設置View查看或Edit編輯權限且權限被更新時記錄默認情況下應用對用戶組的權限為View。理解日志信息展開任一條日志可以看到完整的結構化信息。下面對照 readinglogv2 截圖 逐字段解讀。屬性Property說明action_type該事件記錄的動作類型具體取值見上文 按動作篩選 一節(jié)。created_at事件被記錄時的日期與時間。id每條事件被分配的唯一事件 ID。ip_address產生該事件來源的 IP 地址。metadata包含兩個子屬性tooljet_version事件發(fā)生時 ToolJet 的版本與user_agent使用的設備與瀏覽器信息。organization_idToolJet 中每個組織都有唯一 ID事件發(fā)生時會被一并記錄。resource_id不同 資源 在創(chuàng)建時被分配各自關聯的 ID。resource_name參與事件記錄的 資源 名稱例如創(chuàng)建或刪除應用時會顯示該應用的名稱。resource_type指示參與事件的 資源 類型。user_id每個用戶賬戶在 ToolJet 中有唯一 ID事件發(fā)生時一并記錄。這些字段與數據庫實體一一對應見 server/src/entities/audit_log.entity.ts其中resource_type是枚舉列取值源自MODULES常量server/src/modules/app/constants/modules.tsmetadata以 JSON 存儲。日志文件導出、輪轉、脫敏與路徑除界面內查看外審計日志還可以輸出為本地文件便于歸檔、投遞到 syslog 或第三方分析平臺。日志文件Log File日志文件會包含審計日志的全部數據。只要在環(huán)境變量中指定了路徑系統(tǒng)就會在該路徑下生成日志文件并且每生成一條新審計日志文件都會被動態(tài)更新。關于如何啟用日志文件生成可參考 syslog 集成指南只需將環(huán)境變量LOG_FILE_PATH設為期望的路徑例如rsyslog即可激活該功能。詳細的啟動與驗證步驟包括如何檢查生成的目錄結構都在該文檔中。日志輪轉Log Rotation日志文件按每日輪轉每天都會創(chuàng)建一個新日志文件從而高效地管理與組織審計數據。實現上服務端基于winston-daily-rotate-file的DailyRotateFiletransport 完成輪轉目錄名為{process_id}-%DATE%文件名固定為audit.log日期模式為YYYY-MM-DD輪轉時還會把舊文件的內容整理并寫出為.json格式的歸檔文件相關代碼見 server/src/modules/log-to-file/constants/index.ts。日志脫敏Log RedactionToolJet 實現了日志脫敏以保護敏感信息。默認情況下以下請求/響應頭在日志中被掩碼authorizationcookieset-cookiex-api-keyproxy-authorizationwww-authenticateauthentication-infox-forwarded-for在服務端這些默認脫敏路徑被硬編碼在 pino logger 的redact.paths配置中并統(tǒng)一使用[REDACTED]作為掩碼內容同時會把環(huán)境變量LOGGER_REDACT中的逗號分隔字段合并進脫敏路徑列表見 server/src/modules/app/loader.ts。此外你還可以通過LOGGER_REDACT環(huán)境變量指定自定義脫敏字段變量說明LOGGER_REDACT需要被掩碼的額外字段的逗號分隔列表例如req.headers[x-session-id],req.headers[x-device-fingerprint]例如LOGGER_REDACTres.headers[x-rate-limit-remaining],res.headers[x-request-id]注意LOGGER_REDACT中的每個條目會被直接拼接到 pino 的redact.paths數組server/src/modules/app/loader.ts因此請使用與示例一致的 pino 路徑語法如req.headers[xxx]、res.headers[xxx]。日志文件路徑Log File Path日志文件的路徑由環(huán)境變量LOG_FILE_PATH定義。該路徑相對于機器的主目錄home directory。例如若LOG_FILE_PATH設為hsbc/dashboard/log則最終生成的日志文件路徑結構如下homepath/hsbc/dashboard/log/tooljet_log/{process_id}-{date}/audit.log其中{process_id}是唯一進程標識符的占位符{date}表示當前日期。這種結構化路徑確保審計日志按進程與日期雙重組織便于追蹤與分析。變量說明LOG_FILE_PATH日志文件將被創(chuàng)建的路徑例如tooljet/log/tooljet-audit.log該行為與代碼實現一致服務端使用path.join(os.homedir(), filePath, tooljet_log)計算絕對目錄目錄不存在時會自動遞歸創(chuàng)建再以{processId}-%DATE%作為子目錄寫入audit.log見 server/src/modules/log-to-file/constants/index.ts。示例日志文件數據以下是一條APP_CREATE事件的真實日志結構展開查看{ level: info, message: PERFORM APP_CREATE OF awdasdawdwd APP, timestamp: 2023-11-02 17:12:40, auditLog: { userId: 0ad48e21-e7a2-4597-9568-c4535aedf687, organizationId: cf8e132f-a68a-4c81-a0d4-3617b79e7b17, resourceId: eac02f79-b8e2-495a-bffe-82633416c829, resourceType: APP, actionType: APP_CREATE, resourceName: awdasdawdwd, ipAddress: ::1, metadata: { userAgent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36, tooljetVersion: 2.22.2-ee2.8.3 } }, label: APP }可以看到auditLog內的字段與界面展示的日志屬性一一對應且與數據庫實體字段保持一致頂層timestamp使用YYYY-MM-DD HH:mm:ss格式label取自resourceType二者均由 winston 日志格式在寫入時注入見 server/src/modules/log-to-file/constants/index.ts 與 server/src/modules/audit-logs/constants/index.ts。數據保留策略審計日志在數據庫中會按保留期自動清理。服務端通過AuditLogsClearScheduler定時任務server/src/modules/audit-logs/scheduler.ts實現任務每天凌晨 2:00CronExpression.EVERY_DAY_AT_2AM運行刪除早于保留期截止日期的日志截止日期 當前日期 - 保留天數保留天數由環(huán)境變量AUDIT_LOGS_RETENTION_PERIOD控制默認 90 天將該變量設為0可跳過清理永久保留審計日志。# 默認保留 90 天不設置時 # 自定義保留天數例如 30 天 AUDIT_LOGS_RETENTION_PERIOD30 # 禁用自動清理永久保留 AUDIT_LOGS_RETENTION_PERIOD0權限與可用性說明審計日志受許可證license控制屬于付費能力服務端通過FeatureAbilityGuard結合許可證字段LICENSE_FIELD.AUDIT_LOGSauditLogsEnabled進行能力校驗前端在無權限時僅渲染空頁面見 frontend/src/modules/auditLogs/pages/AuditLogsPage/AuditLogsPage.jsx后端提供/audit-logs、/audit-logs/resources、/license/audit-logs/license-terms、/license/audit-logs/max-duration等接口見 frontend/src/_services/auditLogsService.js 與 server/src/modules/licensing/controllers/audit-logs.controller.ts在 server/src/modules/licensing/constants/index.ts 的計劃定義中Audit logs 屬于 Teambusiness及以上計劃的功能。最佳實踐小結按需設置保留期默認 90 天的清理策略適合大多數場景若有合規(guī)留存要求可通過AUDIT_LOGS_RETENTION_PERIOD0關閉清理或設置更長天數。開啟日志文件輸出設置LOG_FILE_PATH相對主目錄即可生成每日輪轉的audit.log輪轉時自動產出 JSON 歸檔方便投遞 syslog 或導入分析平臺。主動脫敏敏感頭默認脫敏列表覆蓋authorization、cookie、x-api-key等常見敏感頭自定義頭如會話 ID、設備指紋務必通過LOGGER_REDACT補充掩碼避免敏感信息進入日志。善用篩選組合結合「用戶 應用 資源 動作」四維篩選與 30 天范圍查詢可快速定位安全事件如異常的USER_LOGIN、越權的APP_GROUP_PERMISSION_UPDATE。留意許可證邊界審計日志是付費功能查詢最大時間跨度也受許可證maxDaysForAuditLogs約束自托管部署前請確認許可證與版本支持情況。【免費下載鏈接】ToolJetOpen-source foundation of ToolJet AI - the enterprise app generation platform for internal tools, dashboards, business applications, workflows and AI agents. Build visually, from a prompt, or from Claude Code, Codex and Cursor over MCP 項目地址: https://gitcode.com/GitHub_Trending/to/ToolJet創(chuàng)作聲明:本文部分內容由AI輔助生成(AIGC),僅供參考