最常見的 Kubernetes 安全問題以及如何緩解它們

已發表: 2021-03-30

Kubernetes 和容器承諾三件事:

  • 更快的應用程序開發和發布。
  • 更快的錯誤修復。
  • 增加特徵速度。

然而,它通常是以犧牲安全為代價的,這在任何 Web 開發技術中都是不可接受的。

要了解 Kubernetes 的安全狀態,以下是 StackRox 在 2020 年底進行的一項調查中的兩個因素:

  • 90% 的調查參與者報告說在過去 12 個月中遇到過與容器和 Kubernetes 相關的安全事件。
  • 由於 Kubernetes 的安全問題,44% 的參與者不得不推遲他們的應用程序發布。

這些安全問題背後最常見的原因是什麼?

與 Kubernetes 相關的最常見的安全問題
1. 配置錯誤

調查顯示,錯誤配置導致的風險是容器和 Kubernetes 環境安全中最普遍的風險。

在使用 Kubernetes 製作容器化應用時,配置管理是安全從業者面臨的最大風險。

這主要是因為市場上到處都是漏洞掃描工具,但配置管理仍然很大程度上依賴於人工考慮。

以下是有關配置容器化應用程序的一些常見組件以確保安全性不受影響的一些建議。

圖片:

避免使用任何非絕對必要的軟件。 這包括包管理器、網絡工具和 curl 或 Unix shell 等客戶端。

請記住,使用任何軟件都會增加安全風險。 此外,僅使用來自可靠來源的圖像。

秘密:

避免將秘密烘焙到圖像中或以其他方式不必要地暴露它們。

作為一種安全做法,使用值得信賴的秘密管理工具來確保部署僅在需要時才安裝秘密。

命名空間:

慷慨地使用命名空間。 它們充當 Kubernetes 和網絡策略的邊界。 命名空間的使用可以限制攻擊的影響,並且可以包含錯誤和攻擊,這樣它們就不會傳播並造成更多的破壞。

運行時特權:

權限規則只有一條:允許最少數量的權限使軟件最安全。

網絡策略

根據默認設置,pod 可以在 Kubernetes 中獨立地相互通信。 但是,實施網絡策略來限制 pod 的交互是一種很好的做法。 這可以防止任何威脅在容器和整個應用程序中傳播。

持久存儲

您需要對持久存儲的配置和使用有適當的了解。 這是因為這是其他臨時容器設置中唯一的持久向量。

控制平面

如果您是自己管理 Kubernetes 集群,那麼配置控制平面非常重要。 這是因為一些集群可以做出全局決策,如果集群被感染,可能會危及整個生態系統。

緩解這些和其他各種與配置相關的安全問題的最佳方法是結合使用手動和自動化工作,以確保以確保 Kubernetes 以及它們所屬軟件的安全性的方式完成配置的。

2. 漏洞

在過去幾年中,在 Kubernetes 和其他容器中發現並利用了許多不同的漏洞。

最常見的漏洞利用包括:

  • 加密採礦。
  • 惡意軟件安裝。
  • 權限提升。
  • 主機訪問。

管理漏洞的有效方法是需要在容器的生命週期中進行的,應該包括以下內容:

  • 識別和解決映像中的漏洞,包括已安裝操作系統中的漏洞。
  • 檢測和緩解您正在使用的編程語言的運行時庫中的所有漏洞。
  • 採取措施防止具有風險漏洞的圖像進入生產可訪問的容器註冊表。
  • 採取措施遏制具有一定安全風險的威脅。
  • 在 Kubernetes 集群中使用第三方准入控制器來防止易受攻擊的容器組件被調度。
3. 運行時威脅

一旦您緩解了 Kubernetes 安全性中的所有問題,運行時階段就會有自己獨特的一組安全威脅。

即使您已經強調了安全性並以各種可能的方式將風險降至最低,但在運行時也可能存在來自對手的各種威脅。

您可以採取以下措施來減輕這些威脅:

運行時活動監控:

從與安全性最相關的最多容器活動開始監控過程。 這包括流程活動、容器化服務內部和跨容器化服務的網絡通信,以及與外部服務器和客戶端之間的通信。

利用聲明性數據

利用構建和部署時間信息來評估觀察到的活動與預期活動之間的差異,以了解是否存在任何可疑活動。

保持網絡通訊有限公司

運行時是您可以看到允許的網絡流量類型與運行系統所需的流量之間的差異的時間。 這是可用於刪除任何可能對 Kubernetes 安全構成威脅的不必要通信的機會。

密切觀察過程

觀察應用程序一段時間,以了解為應用程序正常運行而執行的所有進程。 列出所有基本進程並隨機檢查應用程序,以查看是否正在執行任何非通常進程。

4. 合規審核失敗

確保 Kubernetes 和容器安全的主要因素之一是合規性。 如果在軟件開發生命週期中沒有適當強調安全性,則可能導致合規性審計失敗。

有許多合規標準可用於 Kubernetes 和容器安全性。

PCI-DSS、HIPAA 和 SOC 2 是行業特定的合規性標準。

在這方面犯的主要錯誤之一是從一開始就沒有將合規審計作為 SDLC 的一部分,或者只在運行時考慮它。 為確保軟件中的所有內容均符合要求:

  • 從一開始就將合規性作為 SDLC 的一部分。
  • 使用行業標準使軟件的組件兼容。