Kyverno后臺掃描

將策略應用于集群中的現有資源。

Kyverno 可以驗證集群中可能在創建策略之前創建的現有資源。在將新驗證策略更改為強制模式之前評估新 validate 策略對集群的潛在影響時,這可能很有用。將策略應用于現有資源稱為后臺掃描,并且默認啟用,除非在策略中將 background 設置為 false,如下面的代碼片段所示。

spec:
  background: false
  rules:
  - name: default-deny-ingress

PolicyClusterPolicy 對象中默認啟用帶有 spec.background 字段的后臺掃描,允許 Kyverno 掃描現有資源并查找它們是否匹配任何 validate 規則。如果發現違反現有策略的現有資源,后臺掃描會將它們記錄在 ClusterPolicyReportPolicyReport 對象中,具體取決于資源是否是命名空間級別的。即使在 enforce 模式下,它也不會阻塞任何匹配到 validate 規則的現有資源。后臺掃描是可選字段,默認為true,僅對 validate 規則生效。它對 generatemutate 規則無效。

默認情況下,后臺掃描每小時發生一次,可以通過 background-scan 標志進行配置。

后臺掃描會定期遍歷所有 background=true 的策略,并依據策略配置,按照 kind、namespaceLabelSelector 從 API Server 獲取相關資源列表,再將資源挨個交由策略進行評估后,并產生策略報告。

注意:Kyverno 不會改變現有資源以防止無意中更改工作負載。在后臺掃描期間不處理 mutate 和 generate 規則。

當啟用后臺掃描時,無論規則的 validationFailureAction 被設置為 enforce 還是 audit,違規行為將記錄在報告中。要查看報告如何與后臺掃描一起工作的詳細信息,請參閱下表。

background: true 的報告行為

新資源 已存在資源
validationFailureAction: enforce None Report
validationFailureAction: audit Report Report

background: false 的報告行為

新資源 已存在資源
validationFailureAction: enforce None None
validationFailureAction: audit Report None

策略中如果使用了來自 AdmissionReview請求信息中的變量(如 request.userInfo),將無法在后臺掃描模式下應用于現有資源,因為這些信息必須來自于一個 AdmissionReview 請求,而在資源已存在時,無法獲取到這些信息。因此,這類策略必須將 background 設置為 false 以禁用后臺掃描。 request.objectrequest.namespace 變量例外。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
禁止轉載,如需轉載請通過簡信或評論聯系作者。

推薦閱讀更多精彩內容