A-A+

信息安全角度应考虑的整体安全架构的点有哪些

2026年04月15日 16:59 汪洋大海 暂无评论 共4620字 (阅读77 views次)

可以把安全架构理解为一句话:

以业务风险为核心,以数据保护为重点,以纵深防御为手段,以可监测、可审计、可响应为保障。


一、先明确:安全架构要解决什么问题

上线前,首先要回答 4 个问题:

  1. 系统最重要的资产是什么
    • 用户数据
    • 核心业务逻辑
    • 交易/支付能力
    • 管理后台权限
    • 源代码、密钥、证书、配置
    • 日志和审计数据
  2. 可能面临哪些威胁
    • 外部攻击:漏洞利用、爬虫、撞库、DDoS、勒索、供应链攻击
    • 内部风险:越权访问、误操作、数据泄露、权限滥用
    • 第三方风险:SDK、开源组件、云服务、外包接口
    • 合规风险:隐私、跨境、等保、行业监管要求
  3. 安全目标是什么
    • 机密性:数据不被未授权访问
    • 完整性:数据和交易不能被篡改
    • 可用性:服务稳定可恢复
    • 可审计性:事后可追溯
    • 可控性:权限、变更、发布、应急都可控
  4. 业务可接受的风险边界是什么
    • 哪些系统必须高可用
    • 哪些数据必须强加密
    • 哪些场景必须双重认证
    • 哪些接口必须限流、验签、审计

二、整体安全架构应覆盖的核心模块


1. 安全治理与制度设计

这是最容易被忽略、但最基础的一层。

需要考虑的内容

  • 安全责任边界
    • 业务负责人
    • 开发负责人
    • 运维负责人
    • 安全负责人
    • 第三方供应商责任
  • 安全制度
    • 权限管理制度
    • 变更管理制度
    • 漏洞管理制度
    • 日志审计制度
    • 数据分级分类制度
    • 应急响应制度
    • 第三方接入安全规范
  • 安全基线
    • 操作系统基线
    • 中间件基线
    • 数据库基线
    • 容器/K8s 基线
    • 云资源基线
    • 开发安全基线

目标

确保安全不是“靠个人经验”,而是“有标准、有流程、有责任人”。


2. 业务安全与风险建模

很多项目“技术安全做得不错”,但业务逻辑被绕过,依然会出事。

要做的事情

  • 梳理核心业务流程
  • 识别关键风险点
    • 注册/登录
    • 找回密码
    • 支付/退款
    • 营销活动
    • 优惠券/积分
    • 文件上传
    • 管理后台
    • 对外开放 API

典型业务安全问题

  • 越权访问
  • 批量刷接口
  • 薅羊毛
  • 价格篡改
  • 订单状态绕过
  • 重放攻击
  • 参数污染
  • 并发漏洞
  • 伪造回调
  • 机器人注册/登录/下单

建议方法

可以基于 STRIDE、攻击树、业务流程图、数据流图做威胁建模。


3. 身份认证与访问控制架构

这是整个项目最核心的安全能力之一。

重点关注

3.1 身份认证

  • 用户认证机制
    • 密码策略
    • MFA 多因素认证
    • 验证码/滑块防机器人
    • 短信/邮箱验证码安全
    • SSO 单点登录
    • OAuth2 / OpenID Connect / SAML
  • 管理员认证必须强化
    • 强密码
    • MFA
    • 异地登录告警
    • 高危操作二次确认

3.2 会话安全

  • Token 生命周期设计
  • Refresh Token 管理
  • Cookie 安全属性
    • HttpOnly
    • Secure
    • SameSite
  • 防会话固定
  • 退出登录失效机制
  • 并发会话控制

3.3 权限控制

  • RBAC:基于角色
  • ABAC:基于属性
  • 最小权限原则
  • 默认拒绝原则
  • 高危操作审批或双人复核
  • 接口级、菜单级、数据级权限分离

3.4 越权防护

  • 水平越权
  • 垂直越权
  • 资源 ID 猜测
  • 仅前端控制权限而后端不校验

核心原则

认证要可信,授权要精细,鉴权要后端强校验,权限变更要可审计。


4. 数据安全架构

数据安全通常是上线项目最重要的一部分。

4.1 数据分类分级

至少要识别:

  • 公开数据
  • 内部数据
  • 敏感数据
  • 重要数据
  • 核心数据

比如:

  • 用户手机号、身份证、银行卡号
  • 健康数据、位置数据
  • 商业合同、财务数据
  • 密码、密钥、令牌、证书

4.2 数据生命周期保护

需要覆盖:

  • 采集
  • 传输
  • 存储
  • 使用
  • 共享
  • 归档
  • 销毁

4.3 关键控制措施

传输安全

  • 全站 HTTPS
  • TLS 合理版本和套件
  • 内部服务通信加密
  • API 验签、防篡改、防重放

存储安全

  • 敏感字段加密
  • 密码不可逆哈希存储
  • 数据库透明加密或应用层加密
  • 备份加密
  • 对象存储权限隔离
  • 防止公开桶、公开快照

数据脱敏

  • 日志脱敏
  • 测试数据脱敏
  • 报表导出脱敏
  • 页面展示掩码

数据访问控制

  • 最小权限访问数据库
  • 禁止开发直接连生产库
  • 审批式访问
  • 敏感数据操作全审计

数据防泄漏

  • DLP 能力
  • 导出控制
  • 水印
  • 下载次数/频率限制
  • 异常访问告警

5. 应用安全架构

这部分是用户最容易想到的“代码安全”。

需要重点考虑的漏洞类型

  • SQL 注入
  • 命令注入
  • XSS
  • CSRF
  • SSRF
  • XXE
  • 反序列化漏洞
  • 文件上传漏洞
  • 路径遍历
  • 任意文件读取/删除
  • 模板注入
  • RCE
  • 权限绕过
  • 不安全对象引用
  • API 未授权访问

应用层安全设计建议

输入输出安全

  • 全量输入校验
  • 参数白名单
  • 输出编码
  • 文件类型、内容、大小校验
  • 不信任客户端输入

安全开发规范

  • 使用参数化查询
  • 禁止拼接 SQL
  • 严格的上传下载校验
  • 安全错误处理,不泄露堆栈和内部路径
  • 禁止硬编码密钥和口令
  • 避免 debug 配置进入生产

API 安全

  • 强制鉴权
  • 接口签名
  • 时间戳/Nonce 防重放
  • 限流
  • 幂等控制
  • 返回字段最小化
  • 接口分级保护

前端安全

  • CSP
  • 子资源完整性
  • 前端依赖安全
  • 防 DOM XSS
  • token 安全存储策略
  • 管理后台额外保护

6. 网络与边界安全架构

网络层的目标不是“挡住所有攻击”,而是实现分区隔离、最小暴露、可控访问

需要考虑的内容

6.1 网络分区分域

建议至少划分:

  • 互联网接入区
  • DMZ 区
  • 应用区
  • 数据区
  • 管理区
  • 审计区

6.2 边界防护

  • WAF
  • 防火墙
  • Anti-DDoS
  • API 网关
  • 入侵防御/检测
  • CDN 防护

6.3 访问控制

  • 仅暴露必要端口
  • 管理口不对公网开放
  • 生产环境跳板机访问
  • 运维白名单
  • 零信任接入更优

6.4 内网安全

  • 服务间访问控制
  • 微隔离
  • 东西向流量审计
  • 数据库不直接暴露给外网

7. 主机、容器、云平台与基础设施安全

如果基础设施失守,上层应用再安全也没用。

7.1 主机安全

  • 最小化安装
  • 关闭无用端口和服务
  • 补丁管理
  • 主机加固
  • 防病毒/EDR
  • 文件完整性监控
  • sudo 审计

7.2 容器与 K8s 安全

  • 镜像来源可信
  • 镜像扫描
  • 最小权限运行
  • 禁止特权容器
  • Secret 安全管理
  • NetworkPolicy
  • Admission 控制
  • 审计日志开启
  • 节点隔离

7.3 云安全

  • 云账号最小权限
  • RAM/IAM 策略治理
  • 安全组最小开放
  • 对象存储桶防公开
  • 快照、镜像、备份权限控制
  • 云审计日志开启
  • KMS 管理密钥
  • 多账号/多项目隔离

8. 密钥、证书与机密管理

这是很多事故的根源。

重点设计

  • 密钥、Token、证书、数据库密码统一管理
  • 禁止明文存储在代码、配置文件、镜像中
  • 使用 Secret Manager / Vault / KMS
  • 密钥定期轮换
  • 证书到期监控
  • 权限分离:谁能看、谁能用、谁能轮换
  • 高敏感密钥使用 HSM 更安全

常见问题

  • Git 仓库泄露 AK/SK
  • 配置中心明文密码
  • 运维文档中直接写管理员密码
  • 测试环境沿用生产密钥

9. 日志、监控、审计与告警体系

安全不只是“防”,还要“看得见”。

至少要有三类能力

9.1 安全日志

记录什么:

  • 登录成功/失败
  • 权限变更
  • 管理员操作
  • 敏感数据访问
  • 导出下载
  • 接口异常调用
  • 配置变更
  • 系统错误
  • 主机/容器异常行为

9.2 集中监控

  • 日志集中收集
  • 安全告警平台
  • SIEM/SOC 对接
  • 异常流量识别
  • 暴力破解检测
  • 爬虫/撞库识别
  • 数据批量导出告警

9.3 审计追踪

要做到:

  • 谁在什么时间,从哪里,做了什么
  • 操作是否成功
  • 操作前后状态如何变化

要求

  • 日志防篡改
  • 关键日志长期留存
  • 日志权限严格控制
  • 日志中避免明文敏感信息

10. 安全开发生命周期(SDL)

如果安全只在上线前检查一次,通常不够。

应纳入研发流程的安全活动

  • 需求阶段:安全需求识别
  • 设计阶段:威胁建模、安全评审
  • 开发阶段:安全编码规范
  • 构建阶段:SAST、依赖扫描、Secret 扫描
  • 测试阶段:DAST、渗透测试、越权测试
  • 发布阶段:变更评审、安全验收
  • 运行阶段:漏洞修复、监控、应急

推荐能力

  • SCA:开源依赖组件风险识别
  • SAST:静态代码扫描
  • DAST:动态扫描
  • IAST/RASP:运行时保护
  • IaC 扫描:基础设施即代码风险检查
  • 镜像扫描:容器镜像漏洞检查

11. 第三方与供应链安全

现在很多安全问题不是来自自己写的代码,而是来自依赖。

需要关注

  • 开源组件漏洞
  • 第三方 SDK 合规与权限
  • 外包代码质量
  • 第三方 API 安全
  • CI/CD 供应链污染
  • 制品仓库安全
  • 镜像仓库安全
  • 软件签名和完整性校验

建议

  • 建立 SBOM
  • 对高危组件设禁用策略
  • 第三方接入前做安全评估
  • 对外部回调接口做签名校验与来源校验

12. 运维安全与发布安全

很多项目不是被“黑客打进来”,而是被“错误发布、误操作、账号泄漏”搞出问题。

核心控制点

  • 跳板机统一运维入口
  • 运维账号实名制
  • 高危命令审计
  • 发布审批与回滚方案
  • CI/CD 权限隔离
  • 生产环境双人复核
  • 配置变更审计
  • 禁止个人电脑直接登录生产
  • 运维脚本、密钥统一管理

13. 高可用、容灾与业务连续性

可用性也是安全的一部分。

应考虑

  • 单点故障消除
  • 多副本、多可用区部署
  • 数据库主从/集群
  • 备份与恢复演练
  • RPO / RTO 要求明确
  • 机房/区域容灾
  • DDoS 场景下的业务降级策略
  • 限流、熔断、隔离、降级设计

不要只做备份

还要验证:

  • 备份是否可恢复
  • 恢复时间是否满足业务要求
  • 恢复后数据是否完整一致

14. 应急响应与安全运营

默认假设:迟早会出安全事件

所以必须提前准备

  • 安全事件分级
  • 应急联系人和升级路径
  • 封禁、下线、隔离预案
  • 日志保全与取证流程
  • 漏洞通报机制
  • 对外沟通口径
  • 数据泄露事件处置流程
  • 演练机制

常见应急场景

  • 账号被盗
  • 数据泄露
  • 接口被刷
  • 服务器入侵
  • 勒索软件
  • 开源组件爆出高危漏洞
  • 证书泄露
  • 云资源误开放

15. 合规与隐私保护

如果项目涉及用户信息、交易、医疗、教育、金融等领域,合规要求非常关键。

需要关注

  • 等保要求
  • 隐私保护要求
  • 个人信息最小化采集
  • 用户授权与告知
  • 数据跨境要求
  • 敏感个人信息保护
  • 日志留存要求
  • 行业监管要求

具体要点

  • 采集什么数据必须合法、必要、明示
  • 默认不开启不必要权限
  • 提供查询、更正、删除、注销能力
  • 隐私政策与实际处理行为一致
  • 第三方共享要有边界和记录

三、推荐的安全架构分层思路

可以用“分层+纵深防御”的方式理解:

images

安全治理与制度

身份与访问控制

数据安全

应用安全

网络与边界安全

主机 容器 云安全

日志监控与审计

供应链与发布安全

应急响应与运营

这表示:

  • 上层是治理和标准
  • 中间是各安全域能力
  • 底层靠日志、监控、审计形成闭环
  • 最终通过应急和运营持续改进

四、项目上线前的安全检查清单

如果你要做上线评审,建议重点看下面这些:

必查项

账户与权限

  • 是否有默认账号、弱口令
  • 管理后台是否启用 MFA
  • 权限模型是否清晰
  • 是否存在越权访问

数据安全

  • 敏感数据是否加密/脱敏
  • 密码是否安全哈希
  • 日志是否泄露敏感信息
  • 备份是否加密

应用安全

  • 是否做过漏洞扫描
  • 是否做过渗透测试
  • 文件上传、导出、回调接口是否重点测试
  • 是否存在高危漏洞未修复

网络与基础设施

  • 是否有不必要公网暴露
  • 管理端口是否只允许受控访问
  • 安全组/防火墙是否最小开放
  • 主机和容器是否完成基线加固

供应链与配置

  • 是否存在高危开源漏洞
  • 是否有硬编码密钥
  • CI/CD 是否可审计
  • 配置中心是否存在明文敏感配置

监控与应急

  • 是否有安全日志
  • 是否有关键告警规则
  • 是否准备应急预案
  • 是否做过恢复演练

五、不同类型项目的安全重点略有不同

1. 互联网平台类

重点看:

  • 防刷、防爬、防撞库
  • API 安全
  • 账号安全
  • 大规模数据泄露风险
  • 活动和营销业务安全

2. 企业内部管理系统

重点看:

  • 权限模型
  • 单点登录
  • 内网横向移动风险
  • 审计与合规
  • 管理员操作追踪

3. 金融/支付类

重点看:

  • 强认证
  • 交易防篡改
  • 风控联动
  • 敏感数据强保护
  • 高可用与审计留痕

4. SaaS/云原生项目

重点看:

  • 租户隔离
  • 云配置安全
  • 容器与 K8s 安全
  • 密钥管理
  • API 与开放平台安全

六、一个比较实用的落地方法

如果你是项目负责人或安全负责人,可以按下面步骤推进:

第一步:识别资产和数据

  • 系统有哪些核心功能
  • 涉及哪些敏感数据
  • 哪些接口最关键
  • 哪些系统是外网暴露面

第二步:做威胁建模

  • 谁可能攻击
  • 攻击路径是什么
  • 哪些点最容易出问题
  • 一旦出问题损失有多大

第三步:制定安全控制措施

按模块落实:

  • 认证授权
  • 数据加密
  • 边界防护
  • 安全开发
  • 审计监控
  • 应急预案

第四步:上线前验证

  • 漏扫
  • 渗透测试
  • 配置基线检查
  • 权限检查
  • 高危漏洞清零
  • 应急演练

第五步:上线后持续运营

  • 日志监控
  • 漏洞修复
  • 权限定期审计
  • 依赖组件更新
  • 备份恢复演练

七、结论

一个项目上线前的整体安全架构,建议至少覆盖以下 10 个关键词:

  1. 治理
  2. 身份
  3. 权限
  4. 数据
  5. 应用
  6. 网络
  7. 基础设施
  8. 监控审计
  9. 供应链
  10. 应急与合规

如果再浓缩成一句话:

安全架构不是堆安全产品,而是围绕核心资产,建立“事前防护、事中检测、事后响应”的完整闭环。

布施恩德可便相知重

微信扫一扫打赏

支付宝扫一扫打赏

×

给我留言