一个朋友的开发者前几天搞了件糟心事。

他在赶一个项目,把代码提交到 GitHub 的时候没注意,.env 文件混了进去。文件里有一串 AWS 的 access key。

他后来跟我说,从 commit 那一刻算起,到第一个挖矿任务在他账号上跑起来,只用了 3 分钟。等他第二天早上看到邮件提醒的时候,账单已经到 5000 美元。

我问他事后怎么想这事,他说了一句让我愣了好久的话:

“我以为内部用的 key 没什么。”

这一句话错得特别整齐。它把网络安全里最底层的三个问题 —— 什么是资产、为什么要分级、怎么分级 —— 一次性全踩中了。

这篇我们就用他这 5000 美元换来的教训,把这三个问题一次讲清。


第一个问题:什么是资产

很多人一听 “资产” 第一反应是钱、设备、楼。这是会计的脑子。

网络安全里的 资产 比那广得多。一个干净的定义是:

任何对组织有价值、值得花力气保护的东西。

注意 “价值” 两个字 —— 它不只是钱。下面这些都是资产:

资产种类例子
数据客户名单、合同、源代码、业务数据
系统服务器、数据库、API 服务、内部工具
凭证密码、API key、SSH 私钥、OAuth token
声誉品牌、客户信任、口碑
业务能力”我们能 7×24 提供服务” 本身就是资产
人员关键技术骨干、有客户关系的销售
物理办公场所、设备、库存

回到那个 5000 美元的故事。他错的第一步,就是没把 SSH key 当成”资产”。在他脑子里,资产是服务器、是客户数据、是网站 —— 一把”内部用的 key” 哪算资产呢?

这就是为什么得把这个概念先掰开。一行字符,只要它有价值,就是资产。一个客户的信任,看不见摸不着,只要它有价值,也是资产


第二个问题:为什么要分级

承认 SSH key 是资产 —— 然后呢?

你回头看自己工作里的全部资产:客户数据、源代码、API key、内部周报、营销文案、公开博客、客户合同、密码本。几十样东西堆在那。

接下来的问题是:全部用同样级别的保护?

听起来公平。但实际操作起来,有两个坑:

坑 1:资源永远不够

你不可能给每一份内部周报装上银行金库级的保护。如果你试图全部最高级,你会:

  • 客户访问任何东西都要 5 层验证 → 业务跑不起来
  • 自己改一个文件都要 3 次审批 → 你自己先疯
  • 安全预算瞬间爆炸 → 老板砍掉一半

全部最高 = 实际等于没分级。因为太烦了,人会绕过去。

坑 2:全靠感觉决策,而且会漏

没分级的开发日常长这样:

合伙人:这份客户合同,要不要加密存储? 你:嗯…感觉应该要吧? 合伙人:这份内部周报呢? 你:呃…也加密吧? 合伙人:这个 GitHub 仓库? 你:…(15 分钟后)…私有就够了吧?

每个决策都是从零开始想,5 分钟一个。一天 20 个决策,2 小时就没了。

更糟的是 —— 你一定会漏。因为靠感觉决策没有规律,你以为想过的东西其实没想过。那 5000 美元就是这么来的。

资产分级解决的就是这两件事

资产分级的本质是:把”每次重新想”换成”想一次,永久受益”

没分级的世界                    有分级的世界
─────────────────              ─────────────────
每次决策:从零思考              每次决策:看标签
耗时:5 分钟                    耗时:5 秒
会漏:必然                      会漏:很少
情绪:焦虑                      情绪:平静

更深一层:分级决定一切下游动作

            数据分级
                │
                │ 决定 ↓
   ┌────────────┼────────────┐
   ▼            ▼            ▼
存哪儿       谁能看        加不加密
备份频率     要不要 MFA    保留多久
访问日志     销毁流程      合规要求

贴对了标签,后面这一长串问题自动有答案。贴错了,后面所有事都跑偏。

这就是为什么分级是地基,不是装饰。


第三个问题:怎么分级

行业标准是 4 级,从公开到机密:

级别谁能看例子
Public 公开任何人公司官网、营销文案、公开博客
Internal-only 内部组织内任何人内部周报、月度复盘、团队 OKR
Confidential 保密项目相关人员客户合同、客户列表、未发布的产品计划
Restricted 受限仅”必须知道”的人客户身份证扫描、银行账号、密码、API key

这张表多数人看完会觉得”嗯,挺合理”。然后回到自己的电脑上,继续把所有东西扔在同一个文件夹里,设同一个密码。

为什么?因为这张表没回答最关键的问题:怎么判断一个具体的东西该归哪一级

下面才是真正值钱的部分。


铁律 1:看”丢了会怎样”,不看”谁在用”

回到那个开发者。他认为 SSH key 是 Internal-only。理由听起来很合理:

  • 不是给客户的
  • 不是给外人的
  • 只在我们内部用

完全符合”内部”二字的字面意思。 但他错得很彻底,因为他用错了判断维度。

他问的是:这东西归谁用? 他应该问的是:这东西丢了会怎样?

第一个问题让 SSH key 看起来像内部周报。 第二个问题让 SSH key 直接跳到最顶级 —— Restricted。

不信看下面这个对比:

同样是”内部用”丢了会怎样真实级别
上个月新客户数量统计业务照常,有点尴尬Internal-only
团队周报业务照常,有点尴尬Internal-only
客户合同模板业务受影响,能恢复Confidential
SSH key / API key / 数据库密码业务停摆 / 5000 美元账单 / 客户数据全泄露Restricted

全是”内部”,分级天差地别


铁律 2:凭证永远是 Restricted

一把资产的价值,不是看它本身长什么样。一把钥匙本身不值钱 —— 它就是几克金属。钥匙的价值,等于它能打开的所有东西的价值之和。

SSH key 本身     →  几行字符
    ↓ 能开
你所有的服务器    →  其中跑着客户业务
    ↓ 服务器上有
所有客户数据      →  Restricted 级
    ↓ 所以
SSH key 的价值   ≥  所有客户数据的价值之和

只要你拿这个角度去看,所有 “凭证类” 数据自动归 Restricted —— 不需要思考。包括但不限于:

这是无脑规则。看到任何一个,直接归 Restricted。


铁律 3:复合资产取最高(木桶原理)

讲完凭证,我们看另一个特别容易踩坑的地方 —— 复合资产。

问开发者”这个 GitHub 仓库归哪一级”,他十有八九会答 “Confidential” —— 毕竟是商业代码,不公开,但也不是个人身份信息。

听起来合理,但仍然错了。

一个代码仓库不是一个东西,它是一堆东西打包在一起。拆开看是这样的:

代码仓库
  ├── HTML / CSS / JS 前端代码  →  Public(用户浏览器就能看到)
  ├── 业务逻辑                  →  Confidential
  ├── 数据库 schema             →  Confidential
  ├── .env 文件                 →  Restricted 🔴
  ├── 部署脚本                  →  Restricted 🔴
  └── 注释里的内部讨论          →  Confidential

那么整个仓库该归哪一级?

答案是 Restricted。因为铁律是:

一份复合资产的分级 = 它内部最敏感那一项的分级。

不是平均值。不是大多数。是最高那一项。

这个原理用在哪都成立。一份 100 页的 PDF,前 99 页是公开营销文案,夹了 1 张客户护照扫描 —— 整份文档是 Restricted。一个 Notion 库,99% 是公开 FAQ,有 1 条字段存了 API key —— 整个库是 Restricted。

最弱的环节决定整体的级别。


铁律 4:间接 PII 的聚合陷阱

最后这一层,是经验丰富的人也常犯的错。

很多人知道 PII 个人可识别信息 要严格保护。但 PII 本身分两层,这一点几乎没人说清楚:

                    PII 个人可识别信息
                         │
        ┌────────────────┴────────────────┐
        ▼                                 ▼
   直接 PII                          间接 PII
   单独一项就能识别身份               需要多项聚合才能识别
        │                                 │
    身份证号                          婚姻状况
    护照号                            出生日期
    驾照号                            邮编 + 性别
    生物特征                          职业 + 公司

直接 PII 的危险大家都懂。但间接 PII 的陷阱在于:

单独看每一项都无害。聚合起来变成炸弹。

举个例子:

  • 单独看 “X 已婚” → 这能干啥?啥也干不了。
  • 单独看 “Y 住悉尼某个区” → 那这个区有 5 万人,也没用。
  • 单独看 “Z 在某科技公司当 PM” → 没什么。

三条合起来 → 锁定具体一个人,姓名都不用知道,精准诈骗就能开始了。

这就是为什么涉及个人的复合表单 —— 像申请贷款的征信报告、申请签证的家庭背景表 —— 整体必须按 Restricted 处理。它本身就是个 “把无害数据聚合成有毒数据” 的容器。

PII 之上还有个更严的子集叫 SPII —— 泄露后果严重得多的那些,身份证号、银行账号、生物特征、健康记录这类。处理标准比 PII 更高,出事的法律责任也更重。

记忆口诀:SPII = PII 里带剧毒的那部分。


10 秒决策法

讲了这么多原理,落到实际操作 —— 看到一个具体的资产,怎么定级?

三个问题,顺序很重要:

问题 1:这东西放到公开网页上,会怎样?

  • 没事 → Public
  • 不行 → 继续问 2

问题 2:这东西在组织外部泄露,会怎样?

  • 业务照常,只是面子上挂不住 → Internal-only
  • 业务受影响 → 继续问 3

问题 3:这东西涉及下面任何一个吗?

  • 个人身份信息(姓名+地址+生日组合等)
  • 健康信息
  • 金融信息(账号、卡号、税号)
  • 知识产权(源代码、专利、配方)
  • 任何形式的凭证(密码、key、token)

回答 “是” 中任一项 → Restricted 🔴 都不是,但业务上敏感 → Confidential

这套问完,90% 的资产能在 10 秒内定级。剩下 10% 模糊地带,默认往高了定


一个练习

现在打开你自己的云盘 —— OneDrive 也好,Google Drive 也好,iCloud 也好。

随便挑三个文件夹,用上面的 10 秒决策法,各贴一个标签。

我猜你贴完会发现两件事:

第一,你过去把它们全堆在同一层,设同一个密码 —— 因为你从来没分过级。

第二,贴完标签之后,你接下来该做什么变得清晰了。Public 的可以随便分享;Internal-only 的不要发朋友圈但内部群没问题;Confidential 的应该有 访问控制 记录;Restricted 的应该加密、应该开 MFA、应该只放在该放的地方。

回到 5000 美元的那个故事。

他的错不是因为 SSH key 不够安全。他的错是 —— 他从来没把 SSH key 当成一个值得贴标签的资产。所以这把”钥匙”被随便塞进了仓库,跟一份团队周报一样的待遇。

承认它是资产,是第一步。 给它贴对标签,是第二步。 后面所有具体的防护动作,都从这两步流出来

贴标签是免费的。账单可不是。