構建安全無伺服器功能的3個原則

danny_2018發表於2023-02-06

無伺服器功能佔當今雲端計算公司工作負載的一半左右,已成為部署應用程式的一種流行方式,這主要是因為無伺服器功能最大限度地減少了團隊需要考慮的複雜性。透過無需配置主機伺服器,無伺服器功能簡化了IT運維。

然而,這並不意味著無伺服器功能也簡化了安全性。相反,在無伺服器計算環境中可能會出現各種安全挑戰和風險。這就是為什麼保護無伺服器功能和支援這些功能的架構至關重要。

本文介紹了影響無伺服器功能的主要安全風險,然後討論了管理這些風險的關鍵原則。

無伺服器功能安全風險

無伺服器計算與傳統計算之間的主要區別在於,無伺服器使開發和IT運維團隊無需配置和管理應用程式執行的底層伺服器環境。

然而,除此之外,無伺服器功能的工作方式與傳統的應用程式部署技術(如VM和容器)相似,並且它們面臨相同型別的風險:

——無伺服器功能中存在的惡意軟體。

——不安全的訪問控制,以控制每個無伺服器功能可以訪問哪些資源,以及誰可以部署、停止和修改無伺服器功能。

——無伺服器功能執行時呼叫的不安全的第三方依賴關係。

——對無伺服器功能產生或訪問的敏感資料或秘密進行不安全管理。

此外,無伺服器功能面臨特殊型別攻擊的風險,這種攻擊在其他型別的部署技術中並不常見:

當攻擊者強制無伺服器功能重複執行時,就會發生資源耗盡。由於無伺服器功能是按需執行的,並且雲提供商對無伺服器執行時間收取相對較高的費用,因此資源耗盡攻擊增加雲賬單。大多數其他型別的託管技術不受這種攻擊,因為它們使用不同的定價模型。

保護無伺服器功能的三個核心原則

上述無伺服器安全風險可以使用各種工具(如檢查配置疏忽的配置掃描器)逐個功能地減輕。團隊可以並且應該利用這些工具來保護功能。

然而,在更深層次上,安全性應該嵌入無伺服器功能本身。換言之,團隊應該採取措施,確保其無伺服器計算的總體方法儘可能安全。該策略構建了另一層保護,其範圍超出了保護單個功能的範圍。

以下是將安全性整合到無伺服器功能中的三種方法。

1.確保無伺服器策略包括設計上的安全性

無伺服器功能很容易部署,很容易將其作為一種簡單、經濟高效的方法來執行需要執行的任何應用程式。

但這並不意味著無伺服器功能是部署每個工作負載的最安全解決方案。某些型別的應用程式(如需要以複雜的方式管理高度敏感資料的應用程式或需要廣泛的第三方依賴關係的應用程式)很難安全,這使得團隊對託管環境的控制和可見性降低。

這裡的要點是,不應該使用無伺服器功能來部署需要一定級別的安全控制和可觀察性的工作負載,而使用無伺服器功能很難實現這一點。有時候,儘管無伺服器很簡單,但它並不是一條好路。

2.成為極簡主義者

無伺服器功能的設計使按需執行小的、離散的程式碼變得容易。然而,很容易忘記這一原則,而是將無伺服器功能作為部署任何型別應用程式的一種方法。

這樣做是一個錯誤,不僅因為這通常意味著你不會利用無伺服器功能的核心優勢,而且因為在每個功能中執行的程式碼越多,就越有可能誤解某些東西或引入不安全的依賴關係。

更好的做法是對無伺服器計算採取極簡的方法。努力將每個功能中的程式碼減少到最小。除了有助於節省資金和提高效能外,該策略還將提高整體無伺服器安全性。

3.隔離功能

儘管無伺服器功能相互觸發以執行需要多個功能的工作流是很常見的,但團隊應該儘可能地隔離每個功能。

功能之間的隔離意味著對功能配置應用“零信任”方法:預設情況下,任何功能都不應盲目信任另一個功能或認為從其接收的資料是安全的。此外,工程師應該透過嚴格限制功能可以訪問的資源來圍繞每個功能配置嚴密的外圍環境。

最後,在可能的情況下,團隊應該避免讓功能直接呼叫彼此,因為這種方法會在一個功能被駭客破壞的情況下開啟資源耗盡攻擊等問題的大門。相反,使用外部控制平面來管理功能執行,而不是依賴於嵌入到單個功能中的邏輯。

結論:保護無伺服器功能和技術

簡而言之,無伺服器功能是一項強大的技術,但它們有其侷限性,尤其是在安全性方面。在採用無伺服器之前,必須瞭解潛在的安全風險,並採取措施將防禦措施融入到無伺服器的總體戰略中。

來自 “ 開源雲中文社群 ”, 原文作者:開源雲中文社群;原文連結:https://mp.weixin.qq.com/s/KhEL4eWBfjXTcPrlBSjW7A,如有侵權,請聯絡管理員刪除。

相關文章