Kubernetes 已成為雲端原生軟體的標準,因為它與容器有關。 事實上,雲端原生運算基金會 (CNCF) 的最新調查發現, Kubernetes 在生產中的使用率已成長至 78% 。 然而,與任何在短時間內迅速流行的技術一樣,人們對 Kubernetes 是什麼以及 Kubernetes 和容器化帶來的安全考慮存在很多困惑。 舉個例子:在 CNCF 的同一項調查中,40% 的受訪者將安全性視為容器使用/部署的挑戰,38% 的受訪者將複雜性視為挑戰。
對於負責強化容器部署的安全工程師來說,絕對需要克服一個學習曲線。 為了幫助您快速上手,我們將了解 Kubernetes 是什麼、它是如何運作的,並探討一些基本的 Kubernetes 安全概念。
Kubernetes 是一個用於編排和管理容器工作負載的平台(例如 Docker 容器)。
自 2014 年首次發布以來,Kubernetes(一個開源 CNCF 畢業項目,其根源可追溯到 Google 的開發團隊)已成為開發營運和雲端原生圈子中最受歡迎的工具之一。
了解 Kubernetes 的前提是先了解容器。 簡而言之,容器是輕量級軟體包,包含應用程式運作所需的所有依賴項。 容器解決了應用程式在不同環境下可靠運行的問題。 由於容器重量輕、便於攜帶,因此越來越受歡迎,對於現代微服務和網路應用程式的發展至關重要。
雖然使用單一容器不需要太多的管理和編排,但大型應用程式需要能夠擴展。 現代開發團隊需要能夠自動化和擴展容器部署流程。 這就是 Kubernetes 等容器化工作負載管理工具的用武之地。 Kubernetes 提供了缺少的管理和編排。
在討論 Kubernetes 時,「管理和編排」這個詞經常被提及。 然而,這並沒有告訴我們太多具體細節。 簡單來說,這意味著 Kubernetes 能夠實現負載平衡、組態管理、儲存資源配置、自動資源分配(例如 每個容器的中央處理器和 RAM),以及容器部署的擴展或縮減。
關於 Docker 與 Kubernetes 的話題可能會有許多混淆。 然而,它實際上很簡單:
最後一點可能會導致一些混亂。 Docker 恰好提供了一個工具——Swarm——它提供了與 Kubernetes 類似的功能。 然而,Kubernetes 是迄今為止更流行的管理和編排工具。
除了容器之外,在開始使用 Kubernetes 時還需要了解其他重要概念。 讓我們來看看一些關鍵術語:
只要基礎設施即程式碼方法可以用於容器部署,Kubernetes 就可以有效發揮作用。 這意味著敏捷開發團隊和專注於開發營運實務的團隊通常會使用 Kubernetes 來協助自動化其持續整合/持續交付 (CI/CD) 管道。 此外,Kubernetes 還可以透過監控節點的運作狀況和資源利用率並根據需要進行擴展或縮減來幫助自動擴展雲端原生應用程式。
當然,雖然 Kubernetes 從自動化和可擴展性的角度增加了價值,但它也為安全團隊帶來了新的難題。 如何確保您的應用程式和服務安全部署? 像往常一樣,這首先要了解您的威脅模型和風險偏好,但有一些基礎知識可以幫助您入門。
制定容器可見性和脆弱性掃描計劃也很重要,以確保快速修復問題並保持符合任何相關標準。 要開始容器脆弱性掃描和安全態勢評估,我們建議閱讀連續容器可見度和合規性 (PDF) 。
現在您已經了解了 Kubernetes 如何在高層工作——自動控制和管理容器部署——您可以採取後續步驟來安全地部署 k8s。 若要深入了解如何使用容器、Kubernetes 和無伺服器基礎架構實現安全性,請註冊觀看由雲端資安專家 Hillel Solow 舉辦的免費「如何將安全性分層到現代雲端應用程式」網路研討會。