端到端安全架构设计从入门到精通 - 第1节
1. 信息安全基本概念
咱们先聊聊最基础的东西。信息安全,说白了就是保护信息不受威胁。它有三个核心目标,圈内人常叫“CIA三元组”。
| 要素 | 英文 | 大白话解释 | 我踩过的坑 |
|---|---|---|---|
| 机密性 | Confidentiality | 该看的看,不该看的别看 | 有一次把加密密钥写死在代码里,结果代码泄露,所有数据都暴露了…… |
| 完整性 | Integrity | 数据在传输或存储中没被改过 | 做过一个文件同步系统,没做校验,结果文件在中间被篡改,用户还以为是我们的锅 |
| 可用性 | Availability | 需要的时候,系统得能用 | 用户DDOS打过来,系统直接挂掉,老板问我为什么没做限流…… |
记住:CIA三元组是所有安全工作的基石。你设计的任何一个安全控制,最终都要回答一个问题——它在保护哪个要素?
2. 常见威胁类型
威胁类型多如牛毛,但你可以按来源简单分个类:
- 外部攻击:黑客、病毒、恶意软件、DDOS攻击。我一个朋友的公司,就因为一个钓鱼邮件,整个内网被勒索软件加密了。
- 内部威胁:员工操作失误、权限滥用、内鬼。我见过最典型的案例:一个离职员工带走了数据库密码,直接远程删库跑路。
- 物理威胁:自然灾害、硬件故障、盗窃。别笑,真有人把服务器机房的空调关了,结果夏天过热全机柜宕机。
- 供应链威胁:第三方组件漏洞、供应商被攻破。别忘了 log4j 的教训,一个日志库能搞瘫半个互联网。
你想想看,是不是每个威胁都对应着CIA三元组里的某个要素?这就是我前面强调概念的原因。
3. STRIDE威胁建模方法
STRIDE是微软提出的一套威胁分类法。我个人习惯用它来做设计阶段的威胁识别。为什么好用?因为它把威胁分成了6类,每类对应一种安全属性。咱们用表格来看看:
| 威胁类型 | 英文 | 违反的安全属性 | 举例 |
|---|---|---|---|
| S - 欺骗 | Spoofing | 认证 | 假冒用户身份登录系统 |
| T - 篡改 | Tampering | 完整性 | 中间人修改交易金额 |
| R - 抵赖 | Repudiation | 不可否认性 | 用户说“我没下过单”,但你拿不出证据 |
| I - 信息泄露 | Information Disclosure | 机密性 | API返回了不该返回的密码哈希 |
| D - 拒绝服务 | Denial of Service | 可用性 | 频繁请求耗尽服务器资源 |
| E - 权限提升 | Elevation of Privilege | 授权 | 普通用户获得了管理员权限 |
我的习惯:每次做设计评审时,我都会把系统按数据流切开,然后逐一对每个数据流节点问“S-T-R-I-D-E”。一个都不能少。
4. 攻击树分析
攻击树是一种用树状结构描述攻击方式的方法。根节点是攻击目标,子节点是达成目标的各种路径。我建议你在高威胁场景下用这个工具,因为它能帮你穷举攻击路径。
举个例子:假设攻击目标是“获取数据库中的信用卡信息”。攻击树可能是这样的:
获取信用卡信息 (根节点)
├── 1. 通过网络攻击
│ ├── 1.1 注入SQL (需要Web应用漏洞)
│ └── 1.2 利用未授权API (需要API鉴权缺陷)
└── 2. 通过物理访问
├── 2.1 直接连接数据库 (需要内网访问)
└── 2.2 偷走备份硬盘 (需要物理进入)
用这种树,你能快速评估哪些节点最容易防守。我曾经在一个项目中用攻击树发现了我们都忽略的“后门账户”问题,避免了上线后的安全事件。
避坑指南:攻击树别画得太细。我见过有人画到“使用高级持续威胁APR”之类,结果树长到几十层,根本没法分析。聚焦在能防守的节点上。
5. 安全架构原则
讲完威胁,咱们得聊聊怎么设计安全的架构。以下是我在实战中反复验证的几条核心原则:
| 原则 | 解释 | 我的经验 |
|---|---|---|
| 纵深防御 | 不要依赖单层防护 | 防火墙+WAF+应用层校验,多叠几层才不会被人一波带走 |
| 最小权限 | 只给完成任务所需的最小权限 | 我见过把root权限给应用的,这种设计一出事就是灾难 |
| 默认安全 | 默认配置就是安全的 | 不要指望用户去改配置开安全,默认禁掉所有不必要功能 |
| 失败安全 | 系统失败时也保持安全状态 | 认证服务挂了,应用应该拒绝所有请求,而不是放行 |
| 分离职责 | 不把太强的能力给一个人 | 比如,同一个系统里,配置管理员和运维管理员必须是不同的人 |
| 可审计性 | 所有操作都能追溯 | 没有日志的安全是耍流氓,出事了只能靠猜 |
| 保持简单 | 复杂性是安全的敌人 | 我曾经被一个搞了20层依赖的微服务折磨得怀疑人生 |
| 信任但验证 | 不信任任何输入 | 即使是内部服务请求,也照样校验签名,别偷懒 |
核心思路:安全架构不是加锁,而是设计一个体系,让攻击者花更多的钱才能攻破它,且攻破后也得不到太多东西。
6. 本章核心知识图谱
下面的流程图展示了本章的核心逻辑:从资产识别开始,经过STRIDE建模和攻击树分析,最终落地到安全架构原则。
你看,从资产识别到威胁分析,再到架构原则,是一条清晰的链条。缺了任何一环,设计就会出现漏洞。我个人习惯在每个项目开始时,先把这张图背一遍。