日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OPA:open policy agent简介

發布時間:2023/12/16 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OPA:open policy agent简介 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

OPA:open policy agent

官方文檔 https://www.openpolicyagent.org/docs/latest/philosophy/#what-is-opa

視頻介紹 https://www.bilibili.com/video/av96102581/

參考:http://blog.newbmiao.com/2020/03/13/opa-quick-start.html

https://my.oschina.net/cncf/blog/4768958

策略(policy)是一套管理軟件服務行為的規則。該策略可以描述速率限制、受信任的服務器名稱、應用程序應部署到的集群、允許的網絡路線或用戶可以提款的賬戶等。

授權是一種特殊的策略,通常規定哪些人或機器可以在哪些資源上運行哪些操作。授權有時會與認證(Authentication)混淆:人或機器如何證明他們是他們所說的人。授權和更一般的策略經常利用認證的結果(用戶名、用戶屬性、組、聲明),但做出的決定所基于的信息遠遠超過用戶是誰。從授權歸納到策略,使兩者的區別更加清晰,因為有些策略決策與用戶無關,例如,策略只是描述了軟件系統中必須保持的不變量(例如,所有的二進制文件必須來自一個可信的來源)。

現在,策略通常是它實際管理的軟件服務的一個硬編碼功能。Open Policy Agent讓您可以將策略從軟件服務中解耦出來,這樣,負責策略的人員就可以從服務本身中分離出來,對策略進行讀、寫、分析、版本、發布以及一般的管理。OPA還為您提供了一個統一的工具集,使您可以將策略與任何您喜歡的軟件服務解耦,并使用任何您喜歡的上下文來編寫上下文感知策略。簡而言之,OPA可以幫助您使用任何上下文從任何軟件系統解耦任何策略。

what is policy?

所有的組織都有策略。策略是組織長期運行的關鍵,因為它們編碼了關于如何遵守法律要求、如何在技術限制下工作、如何避免重復錯誤等重要知識。

在最簡單的形式中,政策可以根據寫下來的規則或不言而喻但滲透到組織文化中的慣例來手動應用。策略也可以通過應用邏輯或在部署時靜態配置來執行。

What is Policy Decoupling?

軟件服務應該允許聲明式地指定策略,隨時更新而無需重新編譯或重新部署,并自動執行(當需要比人工更快地做出決策時,這一點尤其有價值)。

解耦策略可以幫助你大規模地構建這樣的軟件服務,使其能夠適應不斷變化的業務需求,提高發現違規和沖突的能力,提高策略合規性的一致性,并降低人為錯誤的風險。你編寫的策略可以更容易地適應外部環境,適應開發者在設計軟件服務時無法想象的因素。

例如,云計算服務可以回答這樣的問題:"我可以增加計算容量嗎?

  • 我可以增加計算能力嗎?

  • 我可以在哪些地區增加計算能力?

  • 目前哪些實例運行在錯誤的區域?

Why use OPA?

OPA是一個全功能的策略引擎,它可以將策略決策從您的軟件中提取出來。你可以把它看作是你的軟件的禮賓員,它可以代表你的用戶回答詳細的問題,以滿足他們的特殊需求。OPA提供了在系統中實現更好的控制和策略可視性的構件。

如果沒有OPA,你需要從頭開始實施軟件的策略管理。所需的組件,如策略語言(語法和語義)和評估引擎,需要仔細設計、實施、測試、記錄,然后維護,以確保正確的行為和為客戶提供積極的用戶體驗。除此之外,你還必須仔細考慮安全、工具、管理等問題。這是一個很大的工作。

The OPA Document Model

OPA策略(用Rego編寫)基于分層結構化的數據做出決策。有時,我們將這些數據稱為文檔、屬性集、上下文片段,甚至只是 “JSON” [1]. 重要的是,OPA策略可以根據任意的結構化數據進行決策。OPA本身不與任何特定的領域模型掛鉤。同樣,OPA策略可以將決策表示為任意的結構化數據(如布爾函數、字符串、映射、映射列表的映射等)。

數據可以使用push或pull接口從外界加載到OPA中,這些接口在策略計算方面同步或異步操作。我們把所有從外部世界加載到OPA的數據稱為基礎文檔[2]。這些基礎文檔幾乎總是有助于你的策略決策邏輯。然而,你的策略也可以基于彼此進行決策。策略幾乎總是由多條規則組成,這些規則指向其他規則(可能由不同的組撰寫)。在OPA中,我們把由規則(也就是決策)生成的值稱為虛擬文檔。在這種情況下,術語 "虛擬 "只是意味著文檔是由策略計算出來的,也就是說,它不是從外部世界加載到OPA中的。

基礎文檔和虛擬文檔可以表示完全相同的信息,例如,數字、字符串、列表、映射等。此外,通過Rego,您可以使用完全相同的點/括號式引用語法來引用基礎文檔和虛擬文檔。可以表示的值的類型和這些值的引用方式的一致性意味著策略作者只需要學習一種建模和引用信息的方式,以驅動策略決策。此外,由于在基礎文檔和虛擬文檔中,值的類型或引用這些值的方式沒有概念上的差異,Rego 讓您可以通過稱為數據的全局變量同時引用基礎文檔和虛擬文檔。同樣,OPA讓你通過/v1/data HTTP API[3]來查詢基礎文檔和虛擬文檔。這就是為什么只查詢data(或data.foo或data.foo.bar等)會返回該路徑下的基礎文檔和虛擬文檔的組合。

由于基礎文檔來自OPA外部,它們在data下的位置由進行加載的軟件控制。另一方面,虛擬文檔在data下的位置是由策略本身使用語言中的package指令控制的。

當狀態信息發生變化時,可以通過將數據復制到OPA中,將基礎文檔異步推送或拉入OPA。這可以周期性地發生,或者當一些事件(如數據庫變化通知)發生時。異步加載的基礎文檔總是在data全局變量下被訪問。另一方面,當你的軟件查詢OPA進行策略決策時,基礎文檔也可以同步推送或拉入OPA。我們說把同步推送的基礎文檔稱為 “輸入”。策略可以在input全局變量下訪問這些輸入。為了在策略計算過程中拉取基礎文檔,OPA公開了(并可以通過自定義擴展)內置函數,如http.send。內置函數的返回值可以分配給本地變量,并在虛擬文檔中浮現。同步加載的數據被保存在data之外,以避免命名沖突。

ModelHow to access in RegoHow to integrate with OPA
Asynchronous PushThe data global variableInvoke OPA’s API(s), e.g., PUT /v1/data
Asynchronous PullThe data global variableConfigure OPA’s Bundle feature
Synchronous PushThe input global variableProvide data in policy query, e.g., inside the body of POST /v1/data
Synchronous PullThe built-in functions, e.g., http.sendN/A

以異步方式加載到OPA的數據被緩存在內存中,以便在策略計算期間能夠有效地讀取。同樣,策略也被緩存在內存中,以確保高性能和高可用性。同步拉取的數據也可以緩存在內存中。關于將外部數據加載到OPA中的更多信息,包括權衡,請參閱外部數據頁面。

下圖說明了上面描述的基礎和虛擬文檔模型,該模型是一個假設的策略,它根據以下內容做出授權決定(命名為 data.acme.allow)。

  • 位于輸入下同步推送的API請求信息。

  • 權限數據異步拉取,位于data.entitlements下。

  • 在策略評估過程中使用http.send內置函數同步拉取資源數據。

權限和資源信息被規則抽象,生成的虛擬文檔分別命名為data.iam.user_has_role和data.acme.user_is_assigned。

[1] OPA對加載JSON和YAML有很好的支持,因為它們在現代系統中很普遍,但OPA不與任何特定的數據格式掛鉤。OPA使用它自己的內部表示法來表示結構,比如映射和列表(也就是JSON中的對象和數組)。

2] "文檔 "一詞來自于面向文檔的數據庫世界。文檔只是一個通用術語,指的是以某種標準格式編碼的數據或信息,如JSON、YAML、XML等。面向文檔的數據不必像關系世界中的數據那樣遵守嚴格的模式。文檔往往是深度嵌套的、分層的數據結構,包含多層嵌入的地圖和列表。

3]在內部,像GET /v1/data或GET /v1/data/foo/bar這樣的HTTP請求會變成與HTTP路徑幾乎相同的Rego查詢(如data或data.foo.bar)。

Conclusion

OPA是一種輕量策略引擎。將策略的決策過程從策略的執行中解耦。可以用于 Kubernetes、Terraform、Envoy等場景。OPA的模型可以抽象為

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-XgtVzBCC-1607522961796)(http://media.newbmiao.com/opa/policy.png)]

簡單來說,OPA就是將Policy的實現同具體的服務解耦,提供一個接口去做邏輯判斷,例如authorization場景。OPA的作用類似于一個大大的if-than-else語句,對用戶的請求做一個判斷,返回“allow”或“deny”。

,提供一個接口去做邏輯判斷,例如authorization場景。OPA的作用類似于一個大大的if-than-else語句,對用戶的請求做一個判斷,返回“allow”或“deny”。

OPA使用REGO語言編輯策略,關于REGO語言可見……。

總結

以上是生活随笔為你收集整理的OPA:open policy agent简介的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。