定义了三大目标、四大系统功能Istio的安全架构如图7-1所示。其中,从安全角度定义了三大目标:
·默认情况下的安全性:应用程序代码和基础结构无须更改。
·纵深防御:与现有安全系统集成,提供多层防御。
·零信任网络:在不受信任的网络上构建安全解决方案。
为了实现上述三大目标,Istio提供了四大方面的系统功能:
·强大的身份认证(Identity)。
·强大的认证策略(Policy)。

图7-1 Istio的安全架构:三大目标、四大系统功能
·透明的TLS加密(Encryption)。
·用于保护服务和数据的身份认证、授权和审计(Authentication、Authorization、Audit,AAA)的工具。
就保护对象而言,Istio安全系统可以抵御来自内部或外部的威胁,这些威胁主要针对服务网格内的端点、通信、平台和数据。
在安全方面,Istio具备三大目标,配备了四大方面的系统功能,那么Istio到底是通过怎样的架构实现这个目标,又是通过什么样的安全基础设施,与Kubernetes达成配合的呢?
Istio中的安全能力涉及以下四个组件,如图7-2所示。
·Citadel——用于密钥和证书管理。
·Sidecar——和外围代理Proxy实现客户端和服务器之间的安全通信。
·Pilot——将身份认证策略和安全命名信息分发给代理。
·Mixer——管理授权和审计。
Citadel通过内置身份和证书管理,提供强大的服务间认证和终端用户认证。通过Citadel可以升级服务网格中的未加密流量,并为运维人员提供基于服务身份而不是网络控制来强制执行策略的能力。
Citadel是Istio的密钥管理服务。Citadel必须正常运行才能支撑安全的正常工作。在部署Istio的Kubernetes环境中,可以使用以下命令验证Citadel在集群中是否正确运行:
kubectl get deploy -l istio=citadel -n istio-system NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE istio-citadel 1 1 1 1 14d

图7-2 Istio中的安全能力
如果“AVAILABLE”列值为1,则说明Citadel已经成功运行。