使用ASM实现应用全链路mTLS加密

在TLS通信中,客户端会校验服务端提供的证书是否合法,而客户端自身并不需要提供证书,这就意味着服务端无法校验客户端的身份。在一些需要更高级别安全配置的场景中,服务端同样需要校验客户端的身份,此时就需要使用mTLS通信。mTLS通信要求客户端和服务端都提供证书,互相校验通过后才可以进行加密通信。本文介绍如何使用ASM在您的环境中实现全链路的mTLS通信。

背景信息

通过ASM,您可以在完全不修改应用的情况下使用mTLS对全链路流量进行加密,并且可以在各个环节使用mTLS提供的证书来进行访问控制,以提升业务整体的安全水位。

在Kubernetes环境下,我们通常说的全链路包含三个阶段:

  • 入口流量:集群外客户端访问集群内服务。

  • 东西向流量:集群内工作负载之间相互访问的东西向流量。

  • 出口流量:集群内工作负载访问集群外服务。

使用ASM实现全链路mTLS有以下好处:

  • 应用只需要关注业务逻辑,将安全能力下沉至网格基础设施,加速业务迭代。

  • ASM管理了集群内通信的证书颁发以及轮转,大大降低了您的维护负担。

  • 迁移过程中无需修改业务应用,迁移更加顺畅。

使用mTLS加密入口流量

集群外客户端访问集群内服务时,需要通过ASM入口网关。具体操作,请参见在ASM入口网关上配置mTLS服务并限制特定客户端访问

使用mTLS加密东西向流量

东西向流量的mTLS通信是ASM提供的基础功能之一,您无需额外配置,只要将集群内通信双方分别注入Sidecar代理即可。具体操作,请参见安装Sidecar代理

两个注入了Sidecar代理的Pod之间的通信会被自动升级为mTLS,应用无需做任何修改。此外,由于都对接了ASM控制面,ASM出/入口网关和Sidecar代理之间的通信也会自动使用mTLS加密。

mTLS通信中用到的证书基于工作负载使用的ServiceAccount颁发,并且由ASM控制面定期进行轮转,完全无需手动干预。

为了方便您逐步将业务迁移至ASM中,ASM提供了对等身份认证配置。在迁移过程中,您可以将对等身份认证级别调整为PERMISSIVE(同时接收明文和mTLS流量),迁移结束后您可以将对等身份认证级别修改为STRICT(只接收mTLS流量),以确保集群内的流量全部使用mTLS进行了加密。具体操作,请参见对等身份认证(Peer Authentication)

使用mTLS加密出口流量

如果您有一个集群外服务,只能使用mTLS进行访问。此时您的应用依旧发起明文请求,ASM出口网关可以将您的明文流量升级为mTLS并且发送给外部服务。具体操作,请参见使用ASM出口网关访问外部mTLS服务