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