全部產品
Search
文件中心

Alibaba Cloud Service Mesh:出口流量管理綜述

更新時間:Sep 10, 2024

Service Mesh (ASM)在出口流量管理方面,提供了多種靈活且高效的解決方案,為應用程式的安全性、可觀測性和可靠性提供支援。本文將介紹ASM在出口流量管理方面提供的多種功能以及為什麼要使用ASM出口網關。

豐富的出口流量管理能力

服務網格提供了豐富的管理L7出口流量的能力(流量路由、可觀測、安全等),您可以根據需求選擇要如何進行配置來實現相應的功能。

說明

如果應用直接發起HTTPS請求,網格代理只能將其當成普通的TLS流量處理,網格的L7能力將會失效。因此,請確保您的應用發出的請求為HTTP明文請求。網格會根據您的配置,直接將HTTP請求轉寄給外部服務,或者自動將請求轉換成HTTPS請求發往外部服務。

流量路由

在訪問叢集外HTTP服務時,您只需要在服務網格中配置對應的Service Entry,就可以使用例如出口鏡像流量、出口流量按比例路由和虛擬服務中的其他進階能力。如果您訪問的服務是HTTPS協議,需要再配置一個對應的DestinationRule。流量路由能力並不依賴ASM出口網關。

觀測出口流量

如果請求是明文流量,您無需做任何操作即可通過日誌、監控指標和鏈路追蹤等方式觀測出口流量。如果請求的流量需要加密,您只需要配置Service Entry和DestinationRule。應用發起明文流量,Sidecar自動將明文流量加密後進行轉寄。此時可以使用網格完整的可觀測能力,該功能並不依賴ASM出口網關。

出口流量認證/鑒權

ASM針對叢集的出口流量同樣提供了豐富的認證/授權能力。您可以在ASM中實現校正出口流量的JWT、基於請求的L7/L4中繼資料限制特定用戶端訪問等進階安全能力。這些能力需要使用ASM出口網關來實現,請參見出口流量安全模型

出口流量安全模型

對於純TCP流量(非HTTP、非TLS),推薦您使用Kubernetes原生提供的NetworkPolicy來增強其安全性。

預設行為

ALLOW_ANY,網格代理不做任何事情。此時出口流量的行為完全不受控。安全層級最低。

REGISTRY_ONLY

開啟REGISTRY_ONLY,應用只能訪問通過Service Entry註冊過的服務。

由於應用所有者有許可權更改業務Pod的配置,有很多種方式可以讓出口流量繞過Sidecar代理。如果請求繞過Sidecar代理,REGISTRY_ONLY提供的訪問限制將會失效,此時應用可以不受限制的訪問外部服務。因此,REGISTRY_ONLY並不能作為有效安全性原則。

此外,該方案只能限制指定命名空間的工作負載訪問外部服務,無法將控制範圍縮小到特定工作負載層級。

REGISTRY_ONLY和出口網關

出口網關可以作為理想的安全邊界。作為一個單獨的Deployment,其部署行為由網格管理員完全控制,應用所有者無法直接控制出口網關以及其上的安全性原則。

同時,確保只有出口網關所在的節點可以訪問外部服務,其餘節點均無法訪問外部服務。業務Pod無法直接存取外網,如果要讓流量成功發往外部服務,應用所有者需要確保自己的應用對外訪問的流量成功被Sidecar代理,並按照預期被轉寄給出口網關。

流量被透明轉寄到出口網關之後:

  1. 可以在出口網關上配置授權策略,實現細粒度的授權策略或接入自訂授權服務

  2. 如果要訪問的服務是HTTPS服務,可以在出口網關上配置HTTPS升級。出口網關會管理自動HTTPS串連,可以實現跨工作負載的HTTPS串連複用,提升效能。

相關文檔

ASM提供了EgressTrafficPolicy資源,可以快速完成通過出口網關訪問叢集外服務的流量規則配置。具體資訊,請參見使用ASMEgressTrafficPolicy管理出口流量