具代表性的面試主題

如何安全使用 Kubernetes ValidatingAdmissionPolicy?

後端困難
Offer.cc 編輯團隊發佈 更新

題幹

你需要阻止生產 Deployment 使用未批准映像和不安全的主機設定。如何設計並發布 Kubernetes ValidatingAdmissionPolicy,同時不阻塞故障恢復?

題幹與適用場景

Kubernetes ValidatingAdmissionPolicy 使用 CEL 評估 API 請求。策略定義與綁定配合使用,綁定選擇資源並定義執行動作。它提供靠近 API Server 的校驗路徑,但範圍過寬或策略不可用可能拒絕合法的恢復操作。

假設生產命名空間有標籤,映像來源可在准入欄位中取得,平台工程師負責策略。設計必須區分硬性安全規則與告警,支援試運行,並保留有審計的緊急路徑。

面試官考察點

面試官關注策略定義與綁定是否分離、失敗行為是否明確、資源匹配是否收窄、例外模型是否可測試。強回答會討論 CEL 類型檢查、版本化發布、審計指標,以及策略引擎或依賴資料不可用時的行為。

普通回答只寫一個拒絕壞 YAML 的表達式。強回答會解釋範圍、動作級別、相容性、可觀測性和回滾。

回答前需要釐清的問題

  • 涉及哪些 API group、版本、命名空間和操作?
  • 規則檢查映像身份、摘要固定、主機存取,還是全部?
  • 試點階段應拒絕、警告還是僅審計?
  • 哪些控制器或系統命名空間需要例外,誰負責批准?
  • 策略阻止事故修復時,恢復路徑是什麼?

如果規則依賴 CEL 無法可靠存取的外部狀態,應保持策略本地化,並用獨立控制器完成複雜檢查。如果例外範圍很大,策略會產生虛假的安全感。

30 秒回答框架

「我會定義小而有型別的 CEL 規則,只綁定到生產工作負載和相關操作。先以審計或警告模式運行,按負責人統計違規,再逐條轉為拒絕。例外要窄、可審計,並有經過演練的緊急路徑。我會監控准入延遲、拒絕率和恢復成功率;策略不安全時回滾綁定。」

分步驟深入解答

  1. 定義不變量。 分別編寫映像倉庫白名單、摘要要求和生產禁止 hostNetwork 的規則,避免一個難測難解釋的大表達式。
  2. 類型檢查 CEL。 針對資源 schema 驗證表達式,涵蓋缺失欄位、列表、更新和刪除操作,把 fixture 納入評審流程。
  3. 用綁定收窄範圍。 只匹配生產命名空間、必要工作負載和需保護的操作,讓團隊可以獨立採用不同規則。
  4. 選擇執行動作。 先審計或警告,負責人修復後再拒絕,並把動作寫入變更歷史。
  5. 設計例外。 只豁免指定系統身份或命名空間,要求過期或批准記錄,並對使用例外告警。
  6. 安全回滾。 策略定義版本化,回滾時停用綁定而不是刪除歷史,確認文件化路徑可讓緊急 Deployment 繼續。

替代方案包括存取外部資料的校驗 webhook,或用於標準化的變更加校驗組合。確定性、本地化且必須靠近 API Server 執行的不變量適合內建策略。

高品質示範回答

「我會建立三個策略:倉庫白名單、映像摘要必須存在、生產 Deployment 禁止 hostNetwork。綁定只匹配帶標籤的生產命名空間。試點先審計一週,給負責人傳送違規報告,修正誤報後再啟用拒絕。平台和 break-glass 身份是唯一例外,要求過期時間和審計事件。我會告警准入延遲和被拒絕的恢復變更;事故暴露不安全規則時,透過停用綁定回滾。」

常見錯誤

  • 錯誤表現: 匹配所有命名空間和操作 → 失敗原因: 系統控制器和恢復路徑被阻塞 → 修正方法: 收窄綁定範圍。
  • 錯誤表現: 把警告當作強制執行 → 失敗原因: 使用者誤以為已獲得安全保證 → 修正方法: 明確動作級別和升級條件。
  • 錯誤表現: 對缺失欄位使用無類型 CEL → 失敗原因: 更新和舊 API 版本行為不同 → 修正方法: 類型檢查並測試缺失欄位。
  • 錯誤表現: 讓例外永久存在 → 失敗原因: 繞過會變成真正的策略 → 修正方法: 要求過期時間、負責人和審計。

追問及應對

策略表達式有語法錯誤怎麼辦?

Kubernetes 會驗證策略定義並報告錯誤,不會接受無效表達式。仍應使用 fixture 評審,並在行為確認前讓綁定保持審計模式。

規則需要外部漏洞資料庫怎麼辦?

不要假設 CEL 可以取得任意外部狀態。使用負責新鮮度、逾時和失敗語義的控制器或 webhook;本地不變量繼續由內建策略執行。

拒絕規則阻止修復時,值班工程師如何恢復?

提供範圍窄、有審計、帶過期的 break-glass 身份或命名空間,記錄批准,並對使用告警。強制前先演練。

什麼時候應該移除策略?

誤報持續過高、准入延遲威脅 API Server,或不變量已由更強控制接管時,停用或移除綁定。保留歷史和指標。

公開來源

同類題目