Kubernetes社區(qū)將在1.21版本中棄用PSP,并將1.25版本中移除該API曙强。目前CNCF生態(tài)圈類(lèi)似項(xiàng)目:Kyverno與Open Policy Agen(OPA).
PodSecurityPolicy是集群級(jí)別的Pod安全策略,其對(duì)Pod的操作進(jìn)行細(xì)粒度的授權(quán)嘉冒。在Kubernetes架構(gòu)中以Admission Controller(準(zhǔn)入控制音五,類(lèi)似NamespaceLifecycle潘酗、ResourceQuota等),通俗來(lái)講就是一種寫(xiě)入前檢查插件
一揪阿、PSP困境
當(dāng)前PodSecurityPolicy特性存在以下問(wèn)題:
授權(quán)模型存在缺陷
功能易開(kāi)難關(guān)
API接口缺乏一致性及擴(kuò)展性,如MustRunAsNonRoot疗我、AllowPrivilegeEscalation此類(lèi)配置
無(wú)法處理動(dòng)態(tài)注入的side-car(如knative)
在CI/CD場(chǎng)景難以落地
二、備選方案
Kyverno簡(jiǎn)介
Kyverno是為Kubernetes設(shè)計(jì)的策略引擎(CNCF sandbox項(xiàng)目)南捂。其具備以下功能:
相關(guān)策略類(lèi)似Kubernetes對(duì)象吴裤,上手容易
配置管理便利
為Kubernetes資源的策略進(jìn)行聲明式驗(yàn)證,更改和生成資源配置溺健。
在Kubernetes集群中作為動(dòng)態(tài)準(zhǔn)入控制器運(yùn)行麦牺。
可以使用資源種類(lèi),名稱(chēng)和標(biāo)簽選擇器來(lái)匹配資源鞭缭。名稱(chēng)中支持通配符等
當(dāng)前采納該方案的開(kāi)源項(xiàng)目:fluxcd v2等
OPA簡(jiǎn)介
Open Policy Agent(即OPA, CNCF孵化項(xiàng)目), 為策略決策需求提供了一個(gè)統(tǒng)一的框架剖膳。它將策略決策從軟件業(yè)務(wù)邏輯中解耦剝離,將策略定義岭辣、決策過(guò)程抽象為通用模型吱晒,實(shí)現(xiàn)了一個(gè)通用策略引擎,
其可用于微服務(wù)沦童、Kubernetes枕荞、 CI/CD、API網(wǎng)關(guān)等應(yīng)用場(chǎng)景搞动。
OPA可以通過(guò)sidecar躏精、外部服務(wù)或是依賴庫(kù)的方式與已有的軟件系統(tǒng)進(jìn)行集成。OPA 可以接受任何類(lèi)型的結(jié)構(gòu)化數(shù)據(jù)鹦肿,決策流程如下圖所示:
OPA通過(guò)數(shù)據(jù)輸入和策略來(lái)進(jìn)行決策矗烛,決策過(guò)程和數(shù)據(jù)無(wú)關(guān)。例如:
判斷某用戶可以訪問(wèn)哪些資源
允許哪些子網(wǎng)對(duì)外訪問(wèn)
工作負(fù)載可以部署在哪個(gè)集群
可以使用哪些鏡像
容器可以使用哪些系統(tǒng)功能
什么時(shí)間可以訪問(wèn)等