同城运营后台把看单和改结算拆开之后,还要回答一句:出了事,日志还在不在、能不能查。云上存审计,关键是独立、只追加、可按人按时间检索,而不是和业务库糊在一张表里随便改。
本文从云存储与运维视角谈权限变更审计怎么存。
一、存哪:业务库与审计分离
业务库服务订单与资料;审计日志进独立库或独立索引。应用账号对审计库只有追加权限,没有更新删除权限(运维应急另走审批)。
这样即使业务数据被误改,审计仍可回放「谁改过结算字段」。审计与业务同机房部署可以,但账号权限与备份策略应分开,避免「清业务库顺手清审计」。
app -> business_db (read/write)
app -> audit_db (append only)
ops -> audit export / archive
二、字段最小集
建议至少:操作者、角色、资源类型、资源 ID、字段名、旧值、新值、时间、客户端 IP 或请求号、业务标识(多业务时)。
不要把整单大 JSON 无差别塞进每条日志;按变更字段记,检索更轻。授权变更(授予、回收、复制角色)同样要记,不只记业务字段修改。
三、热冷分层与保留期
近 30~90 天常查日志放热存储;更早的可归档到对象存储。保留期按客户合规需要定,写进运维说明,而不是口头「先堆着」。
导出审计应可按人、按时间、按资源过滤,方便财务与管理复核。归档文件建议不可随意覆写,必要覆写走审批。
四、告警与防护
短时间大量结算变更、同一账号异常登录后立刻改数,可做基础告警。时钟同步要稳,否则跨机日志对不上时间线。容器多副本写入审计时,用服务端时间或统一时序,避免各实例本地钟漂。
前端藏按钮不等于安全;审计也救不了「接口未鉴权」。审计是事后追责与核对,权限模型仍要先拆好看单与结算写。商务结算规则由客户确定;系统侧不抽成客户平台订单。
五、和发布、备份的关系
发布应用时不要清空审计。备份策略里审计库单独保留点。恢复业务库演练时,确认审计仍可按原请求号关联。若使用消息队列异步落审计,要有失败重试与补偿,避免「改成功了、审计丢了」。
六、落地检查清单
- 应用对审计是否仅追加
- 字段是否含旧新值与请求号
- 热数据与对象存储归档是否打通
- 高频改结算是否有告警
- 授权变更是否同样审计
审计检索与合规留存
给运营负责人一个只读审计查询入口:按人、按时间、按订单号。不要只有库管理员能查。查询走只读账号,防止误删。
留存策略写进运维说明:热多久、冷多久、谁能申请延期、谁能审批删除。删除审计应比删除业务更难。异步落审计时监控积压长度;关键结算字段变更建议可靠落库后再归档。
多区域部署时,审计存储选与业务同区域;归档可按合规要求复制。时钟与请求号是跨区域对账的钥匙。权限模型仍要先拆好看单与结算写,审计是事后追责,不是事前替代。
审计告警避免噪声:按「短时间大量结算写」与「异常登录后立即改数」两类起步。告警通知到负责人,并附带请求号方便下钻。保留期与归档路径写进交接文档。
审计查询性能与导出权限
热审计按时间与操作者建索引。列表先出摘要,详情再拉完整前后值。检索变慢就归档冷数据,而不是继续和业务库挤小盘。
审计导出本身也要授权与留痕,防止审计文件外流。告警从「短时间大量结算写」与「异常登录后立即改数」两类起步,附带请求号。留存与归档路径写进交接文档。权限模型先拆好看单与结算写;审计是事后追责,不是事前替代。
审计与业务同发的发布纪律
发版说明里单列是否迁移审计表。漏了迁移导致审计写入失败时,应让结算写失败或降级为可靠本地兜底,而不是静默丢掉审计。静默丢审计比功能不可用更危险。发布检查表增加审计写入探针一项。
审计采样与全量策略
早期可对低频只读操作采样,对结算写与授权变更必须全量。采样比例写进配置并审计配置本身的变更。随着单量上升,再逐步提高采样或分层存储。切忌一开始为了省磁盘对结算写也采样——省下的磁盘买不回信任。全量写的审计才是纠纷时的硬证据。
七、总结
同城运营后台权限拆开只是上半场;云上把审计存独立、可检索、可归档,下半场才算补齐。出事时能回答「谁、何时、改了什么」,比再加两个菜单更有用。
把上述做法写进下一次变更复查:只认证据,不认感觉。复查记录与配置版本号、发布单号交叉引用,方便半年后追溯。若人手不足,先保住可回滚与可审计,再追求体验细节。
对外沟通时用同一套术语:进度码、配置版本、审计流水、导出抽查。术语统一后,研发、运营、财务才不会各说各话。本篇清单可以作为术语对照的附件一起存档。
审计时钟与业务库时钟对齐策略写进部署文档。容器时区统一。对账时差会制造假纠纷。请求号从网关注入,贯穿结算写与审计行。
把本段做法与前文验收清单交叉引用,形成可执行闭环:改完必验,验完留证,证与版本号同存。对外说明时强调:系统提供核对与权限能力,商务规则由客户确定;海外相关篇目中支付税务支持按需定制对接。
审计库扩容优先于业务库同规格盲升。审计变慢时,运营会被迫放弃追查,等于权限模型失去牙齿。容量规划把审计单列为一项成本。
结算写失败时,若原因是审计不可用,应向操作者返回明确提示,而不是只弹「系统繁忙」。提示清楚,才不会有人改走旁路脚本绕过权限。旁路脚本是权限模型的天敌。