UDS Core项目中Istio Ambient模式下的Envoyfilter更新实践
背景介绍
在UDS Core项目的Keycloak组件中,我们使用了一个名为block-path-parameters-in-non-final-segments的Envoyfilter来增强安全性。这个过滤器的主要作用是阻止非最终路径段中的路径参数,防止潜在的安全风险。
技术挑战
随着Istio Ambient模式的引入,Envoyfilter的工作方式发生了变化。在Ambient模式下,Envoyfilter不再支持对SIDECAR_INBOUND上下文的直接操作,这影响了我们原有的安全防护机制。具体来说:
- 原有的路径参数过滤是在入站流量(SIDECAR_INBOUND)层面实现的
- Ambient模式下仅支持GATEWAY上下文的Envoyfilter
- 这种变化可能导致集群内部流量绕过安全检查
解决方案
经过技术评估,我们采取了以下措施来解决这个问题:
-
认证方式调整:将认证流程改为使用客户端凭证(Client Credentials)模式,这种模式本身就具有更好的安全性
-
动态客户端注册禁用:为了进一步增强安全性,我们禁用了Keycloak的动态客户端注册功能
-
网关层防护:虽然集群内部流量可能绕过检查,但通过网关层的统一防护,我们确保了所有外部请求都受到保护
实施效果
通过这些调整,我们实现了:
- 在保持安全性的同时适应了Istio Ambient模式
- 减少了对外部过滤器的依赖
- 简化了安全架构
- 提高了系统的整体可靠性
经验总结
这次技术调整给我们带来了以下经验:
-
当底层基础设施发生变化时,应该优先考虑使用平台原生安全机制而非自定义过滤器
-
客户端凭证模式不仅解决了Envoyfilter兼容性问题,还带来了额外的安全优势
-
安全设计应该考虑从应用层解决问题,而不仅仅是依赖网络层控制
-
对于类似Keycloak这样的关键安全组件,简化其安全架构往往比增加复杂控制更有效
这个案例展示了在云原生环境中,安全设计需要随着基础设施演进而不断调整,同时也证明了有时简化架构反而能带来更好的安全效果。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



