作者:林静
职务:资深架构师
公司:F5
上周推出的《是时候思考 k8s 出向流量安全(上)》介绍了为何要进行 Egress 流量策略管控、存在的挑战、业界方案分析的前两个方案,本文将继续介绍 Egress 流量管控方案的剩余方案。
基于 Service Mesh 实现
Service Mesh 并不是 Egress 流量管控的专门方案,因此要通过 Service Mesh 实现 Egress 的管控意味着首先需要部署整体 Service Mesh 方案,比如 Istio。如果仅仅是为了实现 Egress 的管控,这样的方案会显得较重。Service Mesh 所支持的协议范围也较少,这对于企业的安全策略来说还不足够。
在 Istio 中,当设置 meshConfig.outboundTrafficPolicy.mode 为 REGISTRY_ONLY 后可以通过 sidecar 结合 ServiceEntry 资源实现外部服务访问的白名单。也可以通过结合 Egress Gateway 将流量导向到专门的 Egress Gateway。相比于 ServiceEntry 方法,Egress Gateway 则结合了 VirtualService 和 DestinationRule 来实现更多的控制,配合 AuthorizationPolicy 则可以控制粒度更细一些。
无论哪种方式,都必须依赖 sidecar 进行流量的劫持,如果有威胁绕开或破坏了 sidecar,则意味着有害访问可以直接绕开管控,这个安全问题在 Istio 的文档中被反复提及。所以本质上来说它不是一个很好的 Egress 流量管控方案。
同时,Service Mesh 的思维更多是面向开发者(尽管它常常体现的是平台层面的能力),所以我们依然需要回答这样一个问题:当开