天天看點

Kubernetes中API安全的最佳實踐

使用Kubernetes部署容器化應用程式時,必須考慮應用程式所依賴的基礎設施。在Kubernetes中保護應用程式或API時,請確定考慮雲原生安全的4C:雲、叢集、容器、代碼。

遵循其中每一點的最佳實踐可確定應用程式在安全環境中運作。這樣的環境具有監控和避免各級意外行為的控件群組件,包括Kubernetes生态系統及其管理。

本文主要關注應用程式安全,讨論了入口控制器在Kubernetes中的作用(作為實作保護API最佳實踐的一部分)。

提供單一入口點

預設情況下,pod的端口不會暴露在Kubernetes叢集之外。pod可以通過服務進行分組,這些服務可以配置為公開internet上的端口。然而,服務資源是一個簡單的元件。即使與負載均衡器結合使用,該設定也缺乏靈活性和适應性。另一方面,入口控制器提供了企業用例所需的許多功能,如基于名稱的服務虛拟主機、路徑映射、代理、響應緩存,最重要的是,還提供了身份驗證或TLS終止等安全功能。

入口控制器為叢集的單個入口點入口實作規則。作為該實作的一部分,入口控制器通常提供一系列安全功能。例如,NGINX入口控制器支援SSL重定向、HTTP嚴格傳輸安全(HSTS)或HTTP頭過濾。根據入口控制器的選擇,它甚至可以提供API網關的功能,如速率限制、聚合、監控或開發人員門戶。一些入口控制器,如Kong入口控制器或Tyk Operator,通過與API網關緊密內建,利用Kubernetes中的API網關功能。此外,三大雲提供商提供雲原生Kubernetes入口控制器,即AWS負載均衡器控制器、Azure中的應用網關入口控制器和GKE入口控制器。

在Kubernetes中公開API時,使用入口控制器作為守門來保護叢集中的所有服務。根據需求和以下最佳實踐選擇功能。

限制通路

作為單一入口點,入口控制器是實施身份驗證和授權等安全政策的理想場所。這是一個常見的要求,入口控制器通常通過OAuth 2.0和OpenID Connect等開放标準提供身份驗證支援。選擇開放标準而不是專有解決方案是一種很好的做法,因為它支援互操作性和可移植性。當使用OAuth 2.0或OpenID Connect時,入口控制器可以在外圍驗證令牌。它還可以基于令牌中的資料(如頒發者、範圍和閱聽人參數)執行粗粒度通路控制,進而解除安裝API。

在微服務架構中,一個服務可以調用另一個服務來滿足請求。實際上,在傳回響應之前可能會有一個完整的調用鍊。但是,并非鍊中的所有服務都需要相同的權限。是以,請確定令牌具有足夠的權限。考慮令牌共享機制,以避免令牌過載,進而包含下遊服務調用中可能需要或不需要的所有可能權限(作用域和聲明)。

例如,讓OAuth 2.0或OpenID Connect伺服器發出包含另一個嵌入令牌的令牌,該令牌可用于下遊服務調用。然而,這意味着令牌伺服器必須事先知道要生成和嵌入哪些令牌。要做到這一點,它必須事先知道将調用哪些其他服務。在複雜的設定中,此要求可能很難維護。另一種更靈活的方法是令牌交換,即可以将現有令牌交換為新令牌。該協定類似于虛拟令牌方法,但它沒有改變格式,而是改變了部分内容。

無論采用何種方法,轉發定制令牌都是實作最小特權原則的一部分。最小特權原則減少了總體攻擊面,因為利用特權和通路不應授予的服務和資料變得更具挑戰性。

在成熟的設定中,入口控制器或API網關用于協調不同的微服務,它還将負責執行令牌交換。

不要相信任何人

最好的做法是不停在外圍,而是實作零信任架構。確定叢集中的所有服務請求都經過身份驗證。服務網格在基礎設施級别提供了這種方法。此外,OAuth 2.0和OpenID Connect提供了應用程式級安全性工具。設計用于API中細粒度授權的通路令牌。

JSON Web令牌(JWT)是通路令牌的流行格式。它們非常有用,因為它們支援零信任架構和自包含令牌。然而,如果未加密,此類令牌可能包含惡意參與者可以輕松解析的敏感資料。是以,JWT隻能在叢集内使用。這被稱為Phantom Token方法。

選擇一個可擴充的入口控制器,以允許自定義和實作規則,例如Phantom Token方法或令牌交換所隐含的規則。它應該支援腳本功能或插件。後者更容易,因為你可以簡單地添加和配置插件,而無需編寫代碼。特别是,你可以依靠安全專家的工作來獲得與安全相關的插件。例如,使用為NGINX或Kong提供的插件來添加對Phantom Token方法的支援。但即使是腳本和配置也可以共享并用于分發零信任架構的安全最佳實踐。

最佳實踐一覽

簡而言之,在Kubernetes中保護API時,請考慮以下幾點:

——使用入口控制器(或API網關)保護Kubernetes中API的所有服務。

——在外圍執行粗粒度授權,并将細粒度決策留給API。

——仔細設計令牌,并在需要時進行交換,以滿足最小特權原則。

繼續閱讀