idou老師教你學Istio 15:Istio實現雙向TLS的遷移

在Istio中,雙向TLS是傳輸身份驗證的完整堆棧解決方案,它爲每個服務提供可跨集羣的強大身份、保護服務到服務通信和最終用戶到服務通信,以及提供密鑰管理系統。本文闡述如何在不中斷通信的情況下,把現存Istio服務的流量從明文升級爲雙向TLS。

使用場景

在部署了Istio的集羣中,使用人員剛開始可能更關注功能性,服務之間的通信配置的都是明文傳輸,當功能逐漸完善,開始關注安全性,部署有sidecar的服務需要使用雙向TLS進行安全傳輸,但服務不能中斷,這時,一個可取的方式就是進行雙向TLS的遷移。

下面通過實例演示如何進行雙向TLS的遷移。

環境準備

• 已經部署好Istio的集羣,沒有啓用雙向TLS

• 創建三個命名空間,分別是 foo、bar 以及 legacy

• 在 foo、bar 中分別部署注入 Istio sidecar 的 httpbin 以及 sleep 應用,在legacy中部署未注入sidecar的sleep應用

檢查部署情況

idou老師教你學Istio 15:Istio實現雙向TLS的遷移

可以看到,從任意一個命名空間選一個sleep應用,發送http請求到httpbin.foo,都能請求成功。這個時候,使用的是明文傳輸。

檢查系統中的認證策略和目標規則:

idou老師教你學Istio 15:Istio實現雙向TLS的遷移

可以看到,系統中在foo、bar 以及 legacy命名空間下沒有認證策略和目標規則。

下面開始通過配置服務端和客戶端來升級傳輸過程:

  1. 配置服務器

向服務端注入以下策略:

idou老師教你學Istio 15:Istio實現雙向TLS的遷移

上圖策略中,模式爲PERMISSIVE,這個模式讓服務器能夠同時接收明文和雙向TLS流量,具體使用哪種方式由實際配置決定。再次驗證網絡通信,可以看到所有請求都成功,目前使用的還是明文的方式。

idou老師教你學Istio 15:Istio實現雙向TLS的遷移

  1. 配置客戶端

通過設置下圖所示DestinationRule,爲服務端添加目的地規則:

idou老師教你學Istio 15:Istio實現雙向TLS的遷移

這些規則生效後,客戶端sleep.foo 和 sleep.bar 就會開始使用雙向 TLS 和 httpbin.foo 進行通信了,而sleep.legacy因爲沒有注入sidecar,因此不受DestinationRule 配置影響,還是使用明文來和httpbin.foo通信。

通過發送請求驗證上述分析,可以看到三個應用都訪問成功:

idou老師教你學Istio 15:Istio實現雙向TLS的遷移

  1. 鎖定使用雙向TLS(可選)

通過上述方式,可以把不同的客戶端和服務端之間流量都遷移到雙向TLS。當系統中的流量都遷移完畢,並且希望所有應用之間都通過雙向TLS進行安全傳輸,我們可以將應用間的傳輸鎖定爲雙向TLS。具體操作方式如下:將配置的認證策略mtls的模式修改爲STRICT,這樣,服務端就只運行使用雙向TLS這一種方式接收流量。

idou老師教你學Istio 15:Istio實現雙向TLS的遷移

鎖定之後,再發送請求驗證通信,可以看到,sleep.legacy 的請求失敗,這是因爲sleep.legacy沒有注入sidecar,無法進行雙向TLS傳輸。

idou老師教你學Istio 15:Istio實現雙向TLS的遷移

總結:通過上述演示,可以瞭解到,將服務通信從明文流量傳輸遷移到雙向TLS傳輸的過程是十分方便的,可以根據服務的實際需求按需配置,不會對服務的正常通信產生任何影響。

相關服務請訪問https://support.huaweicloud.com/cce/index.html?cce_helpcenter_2019

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章