关注零信任网络查看原文,kubernetes零信任模型。
Istio是由Google、IBM和Lyft联合开发的开源服务网格(Service Mesh)解决方案。它构建在Envoy的基础上,为微服务架构中的服务之间提供可观测性、可靠性、安全性等特性,通过功能强大的代理和控制平面来管理和保护服务之间的通信。
看看两者的一些差别,从差别上可以看到 Istio 是针对 Pod 层 Workload 的访问控制,以及 Calico 针对 Node 层的访问控制:
图片
Calico
Calico构建了一个三层可路由网络,其中运行着Felix守护程序。Felix负责在每个节点上编制路由和ACL规则,以及提供所需的网络连接。它还使用运行在节点上的iptables进行细粒度的访问控制。
Calico可以设置默认的Deny策略,并通过自适应的访问控制来执行最小化的访问控制策略,从而构建容器下的零信任体系。
另外,Calico还提供了一个可选的组件Dikastes/Envoy,它可以作为Kubernetes的sidecar运行。这个组件可以通过相互的TLS身份验证来保护Workload之间的通信,并增加相关的控制策略。
Istio
对于 Istio,它具有以下特点:
-
全链路双向 mTLS加密:Istio对所有的服务之间的通信都进行了双向的TLS加密,确保数据在传输过程中的安全性。
-
微服务访问鉴权和审计:除了加密通信外,Istio还提供了对微服务之间访问的鉴权机制。通过授权策略和安全命名信息在控制面分发给Envoy代理,每个Envoy代理上运行的授权引擎会对请求进行评估并返回授权结果。此外,Istio还提供了审计功能,可以记录和监测微服务之间的通信,并对请求进行审计。
-
数据面和控制面分离:Istio的架构将数据面和控制面进行了分离。控制面使用Pilot将授权策略和安全信息分发给Envoy代理。而数据面则是由Envoy代理负责微服务之间的通信。
-
Envoy代理:在每个微服务的Workload上部署了Envoy代理。每个Envoy代理运行一个授权引擎,用于实时评估请求的授权策略。当请求到达代理时,授权引擎会根据当前的授权策略对请求上下文进行评估,并返回授权结果,即是否允许或拒绝该请求。
通过这些特点,Istio提供了一个安全的微服务架构,确保了服务之间的通信安全,并通过鉴权和审计机制进一步提升了安全性。
图片