跳转到主要内容
  1. 安全洞察与公告/

把数据与系统分开:以不可变性设计

大多数机构保护服务器的方式,就好像服务器才是值钱的东西。给它们做镜像、做备份、提心吊胆地打补丁,等一台死掉或被攻陷了,再投入大量时间把它原样恢复。而真正值钱的数据,就躺在这些服务器上,享受的不过是那台服务器碰巧得到的保护。

把这个关系倒过来,很多安全问题会变简单。把系统当成耗材,把数据当成宝贝。用代码构建服务器,让它们几分钟能被替换而不是几天被恢复。然后把真正的保护精力集中在它该在的地方:数据本身:全程追踪生命周期、有目的地备份,而且越来越多地,干脆不放在处理它的系统上。

系统用来重新部署,不是用来修理 #

旧模式把服务器当宠物养。每一台都有名字、有脾气、有一段没人完整记录的手工修补史。宠物服务器一死,恢复就成了考古:靠记忆、笔记和希望去重建几年积累下来的变更。

现代模式把服务器当牛群:借用那个比无数流行词活得更久的 DevOps 说法。你不会抢救一头病入膏肓的奶牛;你换掉它,继续往前走。落到实践中:

基础设施即代码。 每台服务器、每个容器、每份配置都以声明式定义:Terraform 管平台层,Ansible 或 cloud-init 管主机层,容器镜像管工作负载。一个运行中的实例只是这份定义的一次实例化,与其他任何实例没有区别。

不可变部署。 不是登进服务器改配置,而是构建新版本、测试后滚动发布,整批替换旧实例。什么都不累积。配置漂移:那些让每个环境都独一无二且无法解释的手工改动悄悄堆积:从结构上就不可能发生。

重新部署取代恢复。 这是让很多人意外的收益:一支正确搭建的"牛群"舰队几乎不需要备份。如果一台服务器被攻陷、损坏或干脆丢了,你不去恢复它,而是按代码重新部署,几分钟的事,因为那份定义就是备份。事故中的对话不再是"怎么把这台机器救回来?",而是"替换实例能起多快?":在真实事件里,这是个好得多的对话。

这也大幅缩小了勒索软件的打击面。加密只能伤害难以重现的东西。由 Git 仓库定义的可抛弃机器,恰恰最容易重现。

所有的注意力转向数据 #

一旦系统变成耗材,一切不可替代的东西都在数据里。数据值得拥有自己的纪律,而这始于一个多数组织从未精确回答过的问题:我们持有哪些数据、存在哪里、谁在接触、随时间如何流转?

全生命周期追踪数据。 创建、处理、复制、归档、销毁:每个阶段都应该被知晓且是有意的。生命周期追踪反复带来回报:它告诉你监管义务附着在哪里(PDPA 及同类法规跟随数据而非机器);它暴露那些无人认账的遗忘副本:泄露真正发生的地方;它还告诉你今天就能删什么,这往往是最便宜的风险削减:不存在的数据无法泄露。

有目的地备份数据,而不是无意识地备份机器。 当系统以代码定义,备份变得聚焦而诚实:数据库转储、对象存储复制、配置仓库、密钥保险库。一小批真正重要的东西,可验证,而不是每晚对一切(包括垃圾)做整机镜像。

考虑让数据根本不在处理它的系统上。 应用可以几乎不在本地持有任何东西:状态放托管数据库,文件放对象存储,机密放保险库。这样处理层就没有值得偷的东西,一台被攻陷的应用服务器就从"需上报事件"降级成"运营麻烦"。附带的好处是,专为存储设计的数据服务通常内置更强的保护:版本控制、不可变选项、细粒度访问控制:比任何通用服务器能做到的都好。

运营一支机队,而不是三支 #

这里面还藏着第二重简化,关于机队本身。看看任何 Windows 与 Linux 混合环境的成本结构,数一数重复建设:

  • 两套技能。 Windows 管理和 Linux 管理是两个职业。两头都支持意味着要么各聘专家,要么接受两头都不深。粗略地说,同样数量的机器,两倍的团队。
  • 两套工具链。 补丁、监控、配置管理、加固基线、Agent 部署:每样都有两份,各自采购、维护、升级。双倍预算、双倍的管理面攻击面、双倍可能悄悄掉队的东西。
  • 两套失效模式。 事件响应手册、取证能力、灾备流程全都按平台分叉。事故发生时,这个分叉消耗的恰好是你最缺的时间。

航空公司的类比在这里站得住脚。没有哪家成功的航司什么机型都飞:每多一种机型,维护项目、备件库存、机组资质、培训管线和机库设备都会成倍增加,而且这些成本永远循环,远在采购决定被遗忘之后。所以航空公司无情地把机型标准化到覆盖航线所需的最小集合。IT 机队值得同样的算术。选定你的标准操作系统并守住阵线,就把所有"两份"变成了"一份",而节省逐年复利。

标准化还直接强化安全。一支机队意味着一条吃透了的加固基线;一条调校到位、可以信赖的补丁流水线;一套贴合实际机队的检测规则。深度每一次都胜过覆盖面。

从哪里开始 #

  1. 挑一个工作负载,让它可抛弃。 反复用代码重建,直到完整替换只需几分钟、没有任何东西是手工配的。
  2. 诚实地盘点数据。 在哪、在哪台系统上、归谁管、哪些明天就能删。
  3. 把状态移出应用服务器, 放进带合适访问控制和不可变选项的专业存储。
  4. 诚实计算机队的分叉成本。 把重复的许可、工具和人头加总,对照整合的价格。像航司评估航线一样呈报领导层:经常性成本对经常性收入。
  5. 立下今后的标准: 新系统一律加入标准机队、以代码定义、尽量无状态。例外必须写下理由。

关注点分离是工程界最古老的教训之一,安全完全可以字面地受益于它:系统是短暂的,数据是永久的,按各自的真面目保护两者,比为两者都保护不好更省钱。

想知道你的关键数据能否在所有相关服务器全部丢失的情况下幸存? 欢迎联系我们做一个直接的可行性判断。通过 LINE(@PureSecurity)或电子邮件(hello@puresecurity.com)联系我。

我们的配置与架构评估 会梳理数据存放与处理的分布并设计分离路径, Linux 加固实践则帮你打下让标准化产生回报的单机队基线。 或者 schedule an Engineering & Scoping Session,和团队一起规划。