本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
執行期安全
執行期安全性可在容器執行時為您的容器提供主動保護。其目的是偵測和/或防止惡意活動在容器內發生。這可以透過與 Kubernetes 整合的 Linux 核心或核心延伸中的多種機制來實現,例如 Linux 功能、安全運算 (seccomp)、AppArmor 或 SELinux。還有 Amazon GuardDuty 和第三方工具等選項,可協助建立基準和偵測異常活動,並減少 Linux 核心機制的手動組態。
重要
Kubernetes 目前不提供將 seccomp、AppArmor 或 SELinux 設定檔載入節點的任何原生機制。它們必須在啟動時手動載入或安裝在節點上。這必須在 Pod 中參考它們之前完成,因為排程器不知道哪些節點具有設定檔。請參閱以下 Security Profiles Operator 等工具如何協助自動化將設定檔佈建至節點。
安全內容和內建的 Kubernetes 控制項
許多 Linux 執行期安全機制都與 Kubernetes 緊密整合,並且可以透過 Kubernetes 安全內容privileged旗標,false預設為 ,如果啟用,基本上等同於主機上的根。在生產工作負載中啟用特權模式幾乎一律不適當,但有更多控制項可以視需要為容器提供更精細的權限。
Linux 功能
Linux 功能可讓您將特定功能授予 Pod 或容器,而無需提供根使用者的所有功能。範例包括 CAP_NET_ADMIN,其允許設定網路介面或防火牆,或 CAP_SYS_TIME,其允許操作系統時鐘。
Seccomp
透過安全運算 (seccomp),您可以防止容器化應用程式對基礎主機作業系統的核心進行特定 syscall。雖然 Linux 作業系統有數百個系統呼叫,但 lion 的共用並不需要執行容器。透過限制容器可以進行的 syscall,您可以有效地減少應用程式的攻擊面。
Seccomp 的運作方式是攔截 syscall,並且只允許已列入允許清單的 傳遞。Docker 具有預設securityContext區段,將容器或 Pod 設定為使用容器執行期的預設 seccomp 設定檔:
securityContext: seccompProfile: type: RuntimeDefault
自 1.22 起 (以 Alpha 表示,自 1.27 起穩定),上述RuntimeDefault可用於使用單一 kubelet 旗標--seccomp-default。然後,只有在 中指定的設定檔securityContext才需要其他設定檔。
您也可以為需要額外權限的物件建立自己的設定檔。手動執行此操作可能會非常繁瑣,但有 Inspektor Gadget
AppArmor 和 SELinux
AppArmor 和 SELinux 稱為強制性存取控制或 MAC 系統
AppArmor 和 SELinux 都與 Kubernetes 整合,但截至 Kubernetes 1.28 AppArmor 設定檔必須透過註釋
如同 seccomp 描述檔,上述安全描述檔運算子可協助將描述檔部署到叢集中的節點。(未來,專案也旨在產生 AppArmor 和 SELinux 的設定檔,如同 seccomp 一樣。)
建議
使用 Amazon GuardDuty 來監控執行時間並偵測對 EKS 環境的威脅
如果您目前沒有持續監控 EKS 執行時間和分析 EKS 稽核日誌,以及掃描惡意軟體和其他可疑活動的解決方案,Amazon 強烈建議希望以簡單、快速、安全、可擴展且經濟實惠的一鍵式方式保護其 AWS 環境的客戶使用 Amazon GuardDuty
觀看此 AWS Online Tech Talk「使用 Amazon GuardDuty 增強 Amazon EKS 的威脅偵測 - AWS Online Tech Talks」
選用:使用第三方解決方案進行執行期監控
如果您不熟悉 Linux 安全性,建立和管理 seccomp 和 Apparmor 設定檔可能會很困難。如果您沒有時間熟練,請考慮使用第三方商業解決方案。其中許多都已超越靜態設定檔,例如 Apparmor 和 seccomp,並已開始使用機器學習來封鎖或提醒可疑活動。您可以在以下工具區段中找到其中一些解決方案。您可以在 AWS Marketplace for Containers
在撰寫 seccomp 政策之前,請考慮新增/捨棄 Linux 功能
功能涉及 syscall 可存取的核心函數中的各種檢查。如果檢查失敗,syscall 通常會傳回錯誤。檢查可以在特定 syscall 開始時完成,或在可透過多個不同 syscall 連線的區域中更深入的核心 (例如寫入特定特權檔案)。另一方面,Seccomp 是一種 syscall 篩選條件,在執行之前會套用至所有 syscall。程序可以設定篩選條件,允許他們撤銷執行特定 syscall 的權利,或特定 syscall 的特定引數。
使用 seccomp 之前,請考慮新增/移除 Linux 功能是否提供您所需的控制。如需詳細資訊,請參閱設定 容器的功能
了解您是否可以使用 Pod 安全政策 (PSPs) 達成目標
Pod 安全政策提供許多不同的方式來改善您的安全狀態,而不會帶來過度的複雜性。探索 PSPs中可用的選項,然後再進入建置 seccomp 和 Apparmor 設定檔。
警告
從 Kubernetes 1.25 開始,已移除 PSPs並以 Pod 安全許可
工具與資源
-
Security Profiles Operator
是一種 Kubernetes 增強功能,旨在讓使用者更輕鬆地在 Kubernetes 叢集中使用 SELinux、seccomp 和 AppArmor。它提供從執行中的工作負載產生設定檔,以及將設定檔載入 Kubernetes 節點以用於 Pod 的功能。 -
Inspektor Gadget
允許在 Kubernetes 上檢查、追蹤和分析執行時間行為的許多層面,包括協助產生 seccomp 設定檔。 -
NeuVector by SUSE
開放原始碼、零信任容器安全平台提供程序設定檔規則和檔案存取規則。