天天看點

政策即代碼:CNCF孵化項目Open Policy Agent

作為一名程式員,你可能很早就學到:如果你發現自己一遍又一遍地編寫相同的代碼,那麼你應該将該代碼分成一個類或一個函數,以提高效率并使其更容易改變功能。如今,這個想法擴充到DevOps實踐中,如基礎設施即代碼(IaC),其中技術堆棧的管理和供應被分離出來用于自動化和一站式通路。最近,出現了政策即代碼,以提供将政策應用于多種目的和場景的自動化和易用性。

政策即代碼:CNCF孵化項目Open Policy Agent

Open Policy Agent(OPA)就是一個這樣的政策即代碼項目,該項目剛剛被CNCF接受為孵化級托管項目。根據聲明,OPA是“一個開源的、通用的政策引擎,可以在整個堆棧中實作統一的、上下文感覺的政策實施”,“比寫死服務邏輯或ad-hoc特定于域的語言提供更大的靈活性和表現力。“

Styra的軟體工程師和OPA的技術負責人Torin Sandall将這種去耦視為該項目的核心原則。

“該項目背後的核心思想之一是,你可以将政策決策與政策執行分開。 OPA為架構師、開發人員和安全從業者提供了一種非常好的方式,可以将安全政策表達為代碼,然後在其上進行傳遞。“Sandall說, “你可以将它用于微服務,可以将它與API網關一起使用,可以将它與腳本和CI / CD管道一起使用。你可以在堆棧中的所有位置應用它來解決各種不同的政策相關問題。無論是通路控制和微服務環境,還是對容器化工作負載施加限制,OPA的任務都是相同的,即幫助大型組織對這些資源實施限制、保護或制定規則和治理。“

OPA通過使用JSON over HTTP的RESTful API提供通用語言相容性,并且可以輕松部署而無需依賴關系。它可以作為守護程式與服務并行運作,或者對于使用Go編寫的服務,OPA可以嵌入并且用作庫,進而無需運作單獨的守護程式。它還為使用者提供了一個互動式shell,用于試驗查詢和資料集。

Sandall表示,OPA作為孵化級項目被接受,表明該項目已經取得了不小的進步,一些大型企業已經使用該技術。在CNCF孵化級别托管的其他項目包括OpenTracing、Fluentd、gRPC、rkt、CNI、Jaeger、Notary、TUF、Vitess、NATS、Linkerd、Helm、Rook、Harbor和etcd。

“在過去的一年裡,在生産項目中使用的數目有了很大的增長。Netflix将該項目作為内部安全平台的一部分運作,Intuit和Capital One等公司正在将該項目作為生産中Kubernetes的入場控制項目運作。“Sandall說, “在生産中使用該項目的組織越來越多,以執行重要的政策。“

GitHub上的OPA存儲庫顯示了與該項目于第三方技術的內建,例如Kubernetes、Docker和Istio等。

繼續閱讀