使用ASM實現(xiàn)應用全鏈路mTLS加密
在TLS通信中,客戶端會校驗服務端提供的證書是否合法,而客戶端自身并不需要提供證書,這就意味著服務端無法校驗客戶端的身份。在一些需要更高級別安全配置的場景中,服務端同樣需要校驗客戶端的身份,此時就需要使用mTLS通信。mTLS通信要求客戶端和服務端都提供證書,互相校驗通過后才可以進行加密通信。本文介紹如何使用ASM在您的環(huán)境中實現(xiàn)全鏈路的mTLS通信。
背景信息
通過ASM,您可以在完全不修改應用的情況下使用mTLS對全鏈路流量進行加密,并且可以在各個環(huán)節(jié)使用mTLS提供的證書來進行訪問控制,以提升業(yè)務整體的安全水位。
在Kubernetes環(huán)境下,我們通常說的全鏈路包含三個階段:
入口流量:集群外客戶端訪問集群內服務。
東西向流量:集群內工作負載之間相互訪問的東西向流量。
出口流量:集群內工作負載訪問集群外服務。
使用ASM實現(xiàn)全鏈路mTLS有以下好處:
應用只需要關注業(yè)務邏輯,將安全能力下沉至網(wǎng)格基礎設施,加速業(yè)務迭代。
ASM管理了集群內通信的證書頒發(fā)以及輪轉,大大降低了您的維護負擔。
遷移過程中無需修改業(yè)務應用,遷移更加順暢。
使用mTLS加密入口流量
集群外客戶端訪問集群內服務時,需要通過ASM入口網(wǎng)關。具體操作,請參見在ASM入口網(wǎng)關上配置mTLS服務并限制特定客戶端訪問。
使用mTLS加密東西向流量
東西向流量的mTLS通信是ASM提供的基礎功能之一,您無需額外配置,只要將集群內通信雙方分別注入Sidecar代理即可。具體操作,請參見安裝Sidecar代理。
兩個注入了Sidecar代理的Pod之間的通信會被自動升級為mTLS,應用無需做任何修改。此外,由于都對接了ASM控制面,ASM出/入口網(wǎng)關和Sidecar代理之間的通信也會自動使用mTLS加密。
mTLS通信中用到的證書基于工作負載使用的ServiceAccount頒發(fā),并且由ASM控制面定期進行輪轉,完全無需手動干預。
為了方便您逐步將業(yè)務遷移至ASM中,ASM提供了對等身份認證配置。在遷移過程中,您可以將對等身份認證級別調整為PERMISSIVE
(同時接收明文和mTLS流量),遷移結束后您可以將對等身份認證級別修改為STRICT
(只接收mTLS流量),以確保集群內的流量全部使用mTLS進行了加密。具體操作,請參見對等身份認證(Peer Authentication)
使用mTLS加密出口流量
如果您有一個集群外服務,只能使用mTLS進行訪問。此時您的應用依舊發(fā)起明文請求,ASM出口網(wǎng)關可以將您的明文流量升級為mTLS并且發(fā)送給外部服務。具體操作,請參見使用ASM出口網(wǎng)關訪問外部mTLS服務。