Kubernetes廢棄PodSecurityPolicy後續

Kubernetes社區將在1.21版本中棄用PSP,並將1.25版本中移除該API。目前CNCF生態圈相似項目:Kyverno與Open Policy Agen(OPA).git

PodSecurityPolicy是集羣級別的Pod安全策略,其對Pod的操做進行細粒度的受權。在Kubernetes架構中以Admission Controller(准入控制,相似NamespaceLifecycle、ResourceQuota等),通俗來說就是一種寫入前檢查插件github


1、PSP困境

當前PodSecurityPolicy特性存在如下問題:安全

  1. 受權模型存在缺陷
  2. 功能易開難關
  3. API接口缺少一致性及擴展性,如MustRunAsNonRoot、AllowPrivilegeEscalation此類配置
  4. 沒法處理動態注入的side-car(如knative)
  5. 在CI/CD場景難以落地

2、備選方案

Kyverno簡介

Kyverno是爲Kubernetes設計的策略引擎(CNCF sandbox項目)。其具有如下功能:markdown

  • 相關策略相似Kubernetes對象,上手容易架構

  • 配置管理便利框架

  • 爲Kubernetes資源的策略進行聲明式驗證,更改和生成資源配置。ide

  • 在Kubernetes集羣中做爲動態准入控制器運行。微服務

  • 能夠使用資源種類,名稱和標籤選擇器來匹配資源。名稱中支持通配符等oop

當前採納該方案的開源項目:fluxcd v2等google

OPA簡介

Open Policy Agent(即OPA, CNCF孵化項目), 爲策略決策需求提供了一個統一的框架。它將策略決策從軟件業務邏輯中解耦剝離,將策略定義、決策過程抽象爲通用模型,實現了一個通用策略引擎,

其可用於微服務、Kubernetes、 CI/CD、API網關等應用場景。

OPA能夠經過sidecar、外部服務或是依賴庫的方式與已有的軟件系統進行集成。OPA 能夠接受任何類型的結構化數據,決策流程以下圖所示:

OPA經過數據輸入和策略來進行決策,決策過程和數據無關。例如:

  • 判斷某用戶能夠訪問哪些資源
  • 容許哪些子網對外訪問
  • 工做負載能夠部署在哪一個集羣
  • 能夠使用哪些鏡像
  • 容器能夠使用哪些系統功能
  • 什麼時間能夠訪問等

後續相關內容,請查看公衆號:DCOS

參考資料

相關文章
相關標籤/搜索