第7章:安全(Security)
一、导读
1.1 本章学习目标
第7章讲解微服务的安全实践。分布式系统的安全比单体应用更复杂。
1.2 为什么第七章如此重要
安全是微服务架构的关键考量。服务间通信、身份认证、数据保护都需要仔细设计。
1.3 核心问题引导
零信任架构是什么?
服务间通信如何保护?
API 网关如何增强安全?
身份认证和授权如何实现?
二、核心概念详解
7.1 零信任架构
零信任原则:
- 永不信任,始终验证
- 每个请求都需要认证
- 最小权限原则
- 假设网络已被攻破7.2 服务间安全
java
// 使用 mTLS 保护服务间通信
// 每个服务有证书
// 通信双方互相验证
// 使用 JWT 传递身份
public class SecurityFilter implements Filter {
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) {
String token = ((HttpServletRequest) req).getHeader("Authorization");
Claims claims = Jwts.parser().parseClaimsJws(token).getBody();
req.setAttribute("userId", claims.getSubject());
chain.doFilter(req, res);
}
}7.3 API 网关
API 网关的安全功能:
- 认证和授权
- 限流和防刷
- 请求验证
- 日志和审计
- SSL 终止7.4 服务网格
服务网格(如 Istio)的安全能力:
- 自动 mTLS
- 细粒度访问控制
- 身份管理
- 审计日志三、实战案例
7.1 微服务安全架构
安全架构:
- API 网关:认证、限流、路由
- OAuth2 + JWT:身份认证和授权
- mTLS:服务间加密通信
- Vault:密钥管理
- OPA:策略引擎四、本章小结
微服务安全需要零信任思维。使用 mTLS 保护通信,JWT 传递身份,API 网关统一入口,服务网格自动化安全策略。
五、思考与练习
零信任架构如何实施?
服务间通信如何保护?
API 网关的安全功能有哪些?
如何管理微服务的密钥?
如何实现细粒度的访问控制?