第7章:安全架构(Security Architecture)
一、导读
1.1 本章学习目标
第7章讲解安全架构设计——从系统层面构建安全。
本章的核心学习目标包括:
- 理解安全边界的设计
- 掌握零信任架构
- 学会设计安全网关
- 理解安全通信的最佳实践
1.2 为什么本章如此重要
安全不是单个组件的问题,而是系统架构的问题。好的安全架构能让安全成为系统的内在属性,而不是外在补丁。
1.3 核心问题引导
安全边界应该如何划分?
零信任架构的核心原则是什么?
安全网关应该承担什么职责?
微服务架构中的安全挑战有哪些?
二、核心概念详解
2.1 安全边界
安全边界设计:
┌─────────────────────────────────┐
│ 外部网络(不可信) │
│ ┌───────────────────────────┐ │
│ │ DMZ(半可信) │ │
│ │ ┌─────────────────────┐ │ │
│ │ │ 内部网络(可信) │ │ │
│ │ │ ┌───────────────┐ │ │ │
│ │ │ │ 安全区域 │ │ │ │
│ │ │ │ (高可信) │ │ │ │
│ │ │ └───────────────┘ │ │ │
│ │ └─────────────────────┘ │ │
│ └───────────────────────────┘ │
└─────────────────────────────────┘
每一层边界都需要独立的认证和授权2.2 零信任架构
零信任原则:
1. 永不信任,始终验证
2. 最小权限访问
3. 假设被攻破
4. 显式验证
实现:
- 每个请求都需要认证和授权
- 网络分段,微隔离
- 持续验证,不依赖网络位置
- 端到端加密2.3 API 网关安全
java
public class SecurityGateway {
// 1. 认证
public AuthContext authenticate(Request request) {
String token = request.getHeader("Authorization");
return tokenService.validate(token);
}
// 2. 限流
public void rateLimit(AuthContext auth) {
if (rateLimiter.isExceeded(auth.getUserId())) {
throw new RateLimitExceededException();
}
}
// 3. 输入过滤
public Request sanitize(Request request) {
return request.sanitize(); // 移除危险字符
}
// 4. 审计
public void audit(Request request, Response response) {
auditLogger.log(request, response);
}
}2.4 微服务安全
微服务安全挑战:
1. 服务间认证:如何验证服务身份?
→ mTLS、JWT、服务网格
2. 数据隔离:如何防止跨服务数据泄露?
→ 每个服务独立数据库、API 级别权限
3. 统一策略:如何管理分散的安全策略?
→ 策略即代码、集中式策略管理
4. 可观测性:如何监控分布式系统的安全事件?
→ 分布式追踪、集中式日志、安全仪表盘三、实战案例
3.1 案例一:零信任网络架构
企业零信任架构:
1. 身份层:
- 所有用户和设备都有唯一身份
- 多因素认证
- 持续身份验证
2. 设备层:
- 设备健康检查
- 端点安全
- 设备合规性
3. 网络层:
- 微分段
- 加密通信
- 软件定义边界
4. 应用层:
- 细粒度访问控制
- 数据分类和标记
- 动态访问策略
5. 数据层:
- 端到端加密
- 数据脱敏
- DLP(数据防泄漏)四、本章小结
安全边界:层次化的信任区域,每层独立验证。
零信任:永不信任,始终验证,最小权限。
安全网关:统一的认证、限流、过滤、审计。
微服务安全:服务间认证、数据隔离、统一策略。
五、思考与练习
设计一个零信任架构来保护一个电商系统。
微服务架构中的服务间认证有哪些方案?各有什么优缺点?
如何实现"策略即代码"的安全管理?