引言:为什么城堡与护城河已经失效
传统网络安全模型基于城堡与护城河思维:把关键资产放在内网,用防火墙、VPN构建边界。一旦攻击者突破边界,内部资源便畅通无阻。远程办公、云原生、供应链协作等新趋势让这种假设彻底失效——数据在多云之间流转,员工在任何地点接入,第三方合作伙伴需要临时访问。零信任(Zero Trust)应运而生:永不信任,持续验证(Never Trust, Always Verify)。
一、零信任核心原则
1.1 三个基本公理
| 公理 | 含义 |
|---|---|
| 永不假设内网安全 | 所有网络位置(内网、外网、VPN)同等不可信 |
| 最小权限访问 | 每个身份仅获得完成任务所需的最低权限 |
| 假定已被入侵 | 系统设计默认攻击者已在内部,限制爆炸半径 |
1.2 四层防御纵深
- 身份层:人、设备、工作负载的统一身份治理(Identity)
- 设备层:终端合规检测(MDM/EDR)、设备指纹
- 网络层:微分段(Micro-segmentation)、软件定义边界
- 应用与数据层:持续策略引擎(PEP/PDP)、加密与审计
二、身份基础设施:SPIFFE/SPIRE 统一工作负载身份
云原生环境中容器和Pod频繁启停,IP地址毫无稳定性可言。传统基于防火墙五元组的策略无法适应这种动态性。SPIFFE(Production Identity Framework for Everyone)定义了工作负载身份的标准格式,由其实现SPIRE在Kubernetes中自动签发可验证身份文档(SVID)。
# SPIFFE ID格式示例
spiffe://example.org/ns/prod/sa/payment-service
# SPIRE Agent在节点上为工作负载签发X.509 SVID
# 工作负载通过Unix Domain Socket获取短生命周期证书三、策略引擎:从静态规则到动态决策
零信任的核心是策略决策点(PDP)和策略执行点(PEP)的分离架构。与传统的静态ACL不同,零信任策略引擎需要实时评估多维上下文:身份主体(用户角色、服务身份)、设备状态(补丁版本、是否已越狱)、行为基线(异常请求频率、地理位置变动)、数据敏感度分级(公开/内部/机密/绝密)。
业界常见方案包括Open Policy Agent(OPA)+ Envoy External Authorization、OpenZiti等。
四、ZTNA:替代VPN的下一代远程接入
零信任网络访问(ZTNA)在应用层建立加密隧道,无需暴露网络层。用户先经过身份认证和上下文评估,由策略引擎决定是否授权访问特定应用,且仅开放最小权限。与传统VPN对比:ZTNA访问粒度为应用级(vs子网级)、隐藏应用零暴露面(vs暴露整个内网段)、直连优化无回传延迟(vs回传所有流量)、具备终端合规前置检查(vs无设备感知)。
五、Kubernetes中的零信任落地
在Kubernetes环境中,零信任可以通过以下组合落地:
- 网络策略(NetworkPolicy):默认拒绝(Default Deny)+白名单放行
- mTLS(Istio/Linkerd):服务间双向证书认证,加密通信
- OPA/Gatekeeper:准入控制策略,拒绝不符合安全基线的Pod
- Pod Security Standards:限制特权容器、只读根文件系统、禁止hostNetwork
- 审计与监控:Falco运行时威胁检测 + 全量K8s审计日志
六、实施路径的四个阶段
零信任不是一套产品,而是一个渐进式的转型旅程:
- 可视化与盘点:绘制应用依赖地图,识别敏感数据流,建立资产清单
- 身份治理先行:统一IAM,部署MFA,达成多源身份联邦
- 工作负载身份:为微服务引入SPIFFE/SPIRE或基于服务网格的细粒度身份
- 持续策略优化:引入基于行为的动态策略,建立运行时安全监控闭环
总结
零信任本质上是将安全边界从网络边缘下沉到每一个访问主体。它不要求放弃已有基础设施,而是通过身份化、微分段和持续验证来重塑信任模型。对云原生团队而言,结合服务网格、SPIFFE工作负载身份和Kubernetes原生安全能力,零信任正在从理念走向工程实践。

发表评论 取消回复