本文已超過一年。較舊的文章可能包含過時的內容。請檢查頁面中的資訊自發布以來是否已變得不正確。
Security Profiles Operator v0.4.0 新功能
安全性設定檔運算子 (SPO) 是一個樹狀結構外的 Kubernetes 增強功能,旨在使 seccomp、SELinux 和 AppArmor 設定檔的管理更輕鬆方便。我們很高興宣布,我們最近發布了運算子的 v0.4.0 版本,其中包含大量新功能、修復和可用性改進。
新功能
自運算子的上一個 v0.3.0 版本發布以來,已經有一段時間了。在過去半年中,我們透過 290 次提交新增了新功能、微調了現有功能並重新製作了我們的文件。
重點之一是我們現在能夠使用運算子的 日誌豐富器記錄 seccomp 和 SELinux 設定檔。這讓我們可以減少設定檔記錄所需的依賴性,以便在節點上運行 auditd 或 syslog (作為後備)。運算子中的所有設定檔記錄都以相同的方式工作,方法是使用 ProfileRecording
CRD 以及它們對應的 標籤選擇器。日誌豐富器本身也可用於收集關於節點 seccomp 和 SELinux 訊息的有意義的見解。查看官方文件以了解更多相關資訊。
seccomp 相關改進
除了基於日誌豐富器的記錄外,我們現在還提供另一種替代方案,透過使用 ebpf 記錄 seccomp 設定檔。可以透過將 enableBpfRecorder
設為 true
來啟用此可選功能。這會導致運行一個專用容器,該容器在每個節點上運送自訂 bpf 模組以收集容器的系統調用。它甚至支援預設情況下不公開 BPF 類型格式 (BTF) 以及 amd64
和 arm64
架構的較舊核心版本。查看我們的文件以查看其運作方式。順便說一句,我們現在也將記錄器主機的 seccomp 設定檔架構新增到記錄的設定檔中。
我們也將 seccomp 設定檔 API 從 v1alpha1
升級到 v1beta1
。這符合我們隨著時間推移穩定 CRD API 的總體目標。唯一改變的是 seccomp 設定檔類型 Architectures
現在指向 []Arch
而不是 []*Arch
。
SELinux 增強功能
管理 SELinux 策略 (相當於使用您通常在單一伺服器上調用的 semodule
) 不是由 SPO 本身完成的,而是由另一個名為 selinuxd 的容器完成的,以提供更好的隔離。此版本切換為使用來自個人儲存庫的 selinuxd 容器到位於 我們團隊的 quay.io 儲存庫下的映像。selinuxd 儲存庫也已移至 containers GitHub 組織。
請注意,selinuxd 動態連結到 libsemanage
並從節點掛載 SELinux 目錄,這表示 selinuxd 容器必須運行與叢集節點相同的發行版。SPO 預設為使用基於 CentOS-8 的容器,但我們也構建了基於 Fedora 的容器。如果您正在使用其他發行版並希望我們新增對其的支援,請在 selinuxd 提交問題。
設定檔記錄
此版本新增了對記錄 SELinux 設定檔的支援。記錄本身是透過 ProfileRecording
自訂資源的實例管理的,如我們儲存庫中的 範例 所示。從使用者的角度來看,它的工作方式與記錄 seccomp 設定檔非常相似。
在底層,為了了解工作負載正在做什麼,SPO 在啟動時安裝了一個名為 selinuxrecording 的特殊寬容策略,該策略允許所有操作並將所有 AVC 記錄到 audit.log
。這些 AVC 訊息由日誌豐富器組件抓取,當記錄的工作負載退出時,將建立策略。
SELinuxProfile
CRD 升級
已引入 SelinuxProfile
物件的 v1alpha2
版本。這從物件本身中刪除了原始通用中繼語言 (CIL),而是新增了一種簡單的策略語言,以簡化編寫和解析體驗。
與此同時,還引入了 RawSelinuxProfile
物件。這包含策略的包裝和原始表示形式。這旨在讓人們能夠盡快使用他們現有的策略。但是,此處未進行驗證。
AppArmor 支援
此版本引入了對 AppArmor 的初始支援,允許使用者透過使用新的 AppArmorProfile CRD 將 AppArmor 設定檔載入和卸載到叢集節點中。
若要啟用 AppArmor 支援,請使用您的 SPO 配置的 enableAppArmor 功能閘道 開關。然後使用我們的 apparmor 範例 在您的叢集中部署您的第一個設定檔。
指標
運算子現在公開指標,這些指標在我們新的 指標文件中詳細描述。我們決定透過使用 kube-rbac-proxy 來保護指標檢索過程,同時我們運送額外的 spo-metrics-client
叢集角色 (和綁定) 以從叢集內檢索指標。如果您正在使用 OpenShift,那麼我們會提供開箱即用的工作 ServiceMonitor
來存取指標。
可調試性和穩健性
除了所有這些新功能外,我們還決定在內部重組安全性設定檔運算子的部分,使其更易於調試且更穩健。例如,我們現在維護一個內部 gRPC API,以便在運算子內跨不同功能進行通信。我們還提高了日誌豐富器的效能,它現在快取結果以更快地檢索日誌數據。透過將 verbosity
從 0
設為 1
,可以將運算子置於更詳細的日誌模式。
我們還在啟動時列印使用的 libseccomp
和 libbpf
版本,以及透過 enableProfiling
選項為每個容器公開 CPU 和記憶體設定檔端點。運算子守護程式內部的專用活動性和啟動探針現在將額外改善運算子的生命週期。
結論
感謝您閱讀此更新。我們期待運算子的未來增強功能,並希望獲得您關於最新版本的反饋。請隨時透過 Kubernetes Slack #security-profiles-operator 聯繫我們以獲取任何反饋或問題。