【認證與授權 - Open Policy Agent】關於策略語言Rego

更新於 2023/06/09閱讀時間約 5 分鐘
上一篇我們介紹了「【認證與授權】Open Policy Agent 授權策略」, 相信都已經初步了解了OPA(Open Policy Agent)主要在做什麼, OPA簡單來說就是一個授權的政策管理規範, 有點像我們的法律系統, 提供開發者在上面制定法條, 以約束授權對象可以進行什麼樣的操作, 讓各語言各自實作的授權政策有了統一的規範, 並獨立成一個模組區塊, 目的是讓越趨複雜的系統可以專注於功能, 而各類授權政策則獨立開發、測試, 讓職責分明, 問題追朔更加容易。
既然OPA是一種授權的政策管理規範, 就像法律一般也一定會有法條的組成, 而在OPA的世界裡, 組成法條的就是Rego這個語言, 專門用於描述和評估政策規則, 提供了靈活的工具,開發人員可以使用這些工具來編寫、測試和調試政策規則, 這次就來介紹一下Rego這套語言究竟與我們傳統的程式語言有什麼不同吧!

簡介

Rego這個語言的發展主要受到Datalog的啟發, Datalog是一種數據查詢語言, 這種語言有很強的知識推理能力,本質上都是為了解一個邏輯問題, Datalog已經具有數十年歷史的查詢語言, 但Rego並非完全遵循Datalog的語法, 而是以支持JSON格式的方式, 更貼近於現代化的撰寫方式。

為什麼要使用Rego語法?

總而言之,Rego是OPA的政策語言,用於描述和評估政策規則,它提供了一種結構化和可讀性高的方式來定義政策,並與OPA引擎緊密集成,實現細粒度的存取控制和政策管理。

初步認識一下Rego

語法結構

  • 相同的規則檢查名稱, 其中一組符合就通過檢查。
  • 規則檢查區塊中的每一條表達式都是And的關係。
default 規則檢查名稱 = 預設值

規則檢查名稱 {
表達式
表達式
...
}

規則檢查名稱 {
...
}

預設規則的回傳值

以下會預設allow未滿足判斷條件時, allow會等於false。
default allow = false

allow {
x := 42
y := 41
x < y
}

// return false
但假設沒有預設值, 就會回傳undefined。
allow {
x := 42
y := 41
x < y
}

// return undefine

多條表達式之間都是And關係, 順序性影響不大

正常撰寫表達式如下:
t2 {
x := 42
y := 41
x > y
}
expression-1 AND expression-2 AND ... AND expression-N
替換順序, 結果仍然正確, 因此我們在寫決策時, 也可以先把期望的判斷寫好, 在補上需要的Data:
t2 {
x > y
x = 42
y = 41
}

否定語句使用 not 關鍵字

t {
greeting := "hello"
not greeting == "goodbye"
}

// reult true

Function結構

我們撰寫程式時, 常常需要把重複的功能獨立成Function, 而rego語法也提供了Function的功能結構如下:
<function_name>(<params>...) = <return_value_variable> { 
<expression-N>...
}
trim_and_split(s) = x {
t := trim(s, " ")
x := split(t, ".")
}

Else關鍵字

authorize = "allow" {
input.user == "superuser" # allow 'superuser' to perform any operation.
} else = "deny" {
input.path[0] == "admin" # disallow 'admin' operations...
input.source_network == "external" # from external networks.
} # ... more rules

結語

不論我們今天是否使用Rego這個語言, 重要的是其中的設計精髓, 以宣告式設計來表述一件工作或者事物, 讓我們專注於設計最終結果, 以終為始, 逐步填充過程。
喜歡撰寫文章的你,不妨來了解一下:
歡迎加入一起練習寫作,賺取知識!
為什麼會看到廣告
avatar-img
116會員
261內容數
哈囉,我是阿Han,是一位 👩‍💻 軟體研發工程師,喜歡閱讀、學習、撰寫文章及教學,擅長以圖代文,化繁為簡,除了幫助自己釐清思路之外,也希望藉由圖解的方式幫助大家共同學習,甚至手把手帶您設計出高品質的軟體產品。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
阿Han的沙龍 的其他內容
上一篇我們有介紹什麼是OPA以及一些基本概念「【資訊軟體知識】Open Policy Agent 授權策略」,接下來我們就來介紹如何架設並以API的方式進行授權檢查。 這種方式的好處是可以跨語言, 不侷限於Go, 透過標準RESTFUL API的方式來與OPA Server相互溝通。 使用Docke
使用網銀時我們常常會聽到OTP、OTP, 究竟OTP是什麼呢? 全名為「One Time Password」, 一次性密碼, 顧名思義就是密碼僅能一次性的使用, 在過去我們也都很清楚單純的帳號密碼登入已經不是一個非常安全的選項的, 萬一牽涉到重要的金錢交易時, 如果安全環節沒有兼顧, 將導致個人財產
這次來介紹軟體世界中很常遇到的授權策略,而有沒有比較好的一種策略方式,讓開發者可以遵循一套標準呢? 答案是有的,就來介紹一下新寵兒,Open Polocy Agent吧! 首先我們先搞懂什麼是認證? 什麼又是授權? 還懵懵懂懂的朋友們可以請先參考這一篇「Authentication、Authoriz
前一篇的「Authentication、Authorization,傻傻分不清楚?」主要在介紹認證與授權的差異之處,而本章節著重於授權這部分,也使用了經典的RBAC模型進行說明。 RBAC模型(Role-Based Access Control:基於角色的訪問控制), 認為可以抽象的表示: Who是
認證(authentication)跟授權(authorization)這兩個名詞常常被混淆,但本質上是完全不同的兩個概念,在數位化的時代下,為了確保每位使用者的安全性,每個系統幾乎都具備認證(authentication)與授權(authorization)這兩大功能,而這些概念也常常出現在我們生
概念: 有限時間內可使用通行證來要求對應的操作權限。 JWT 的組成內容有三個部分,由 . 做區隔,最後透過這三個部分,串成一個 Jwt 字串 [HEADER].[PAYLOAD].[SIGNATURE] 1. Header: 主要記載認證的方法 {     "typ": "JWT",     "
上一篇我們有介紹什麼是OPA以及一些基本概念「【資訊軟體知識】Open Policy Agent 授權策略」,接下來我們就來介紹如何架設並以API的方式進行授權檢查。 這種方式的好處是可以跨語言, 不侷限於Go, 透過標準RESTFUL API的方式來與OPA Server相互溝通。 使用Docke
使用網銀時我們常常會聽到OTP、OTP, 究竟OTP是什麼呢? 全名為「One Time Password」, 一次性密碼, 顧名思義就是密碼僅能一次性的使用, 在過去我們也都很清楚單純的帳號密碼登入已經不是一個非常安全的選項的, 萬一牽涉到重要的金錢交易時, 如果安全環節沒有兼顧, 將導致個人財產
這次來介紹軟體世界中很常遇到的授權策略,而有沒有比較好的一種策略方式,讓開發者可以遵循一套標準呢? 答案是有的,就來介紹一下新寵兒,Open Polocy Agent吧! 首先我們先搞懂什麼是認證? 什麼又是授權? 還懵懵懂懂的朋友們可以請先參考這一篇「Authentication、Authoriz
前一篇的「Authentication、Authorization,傻傻分不清楚?」主要在介紹認證與授權的差異之處,而本章節著重於授權這部分,也使用了經典的RBAC模型進行說明。 RBAC模型(Role-Based Access Control:基於角色的訪問控制), 認為可以抽象的表示: Who是
認證(authentication)跟授權(authorization)這兩個名詞常常被混淆,但本質上是完全不同的兩個概念,在數位化的時代下,為了確保每位使用者的安全性,每個系統幾乎都具備認證(authentication)與授權(authorization)這兩大功能,而這些概念也常常出現在我們生
概念: 有限時間內可使用通行證來要求對應的操作權限。 JWT 的組成內容有三個部分,由 . 做區隔,最後透過這三個部分,串成一個 Jwt 字串 [HEADER].[PAYLOAD].[SIGNATURE] 1. Header: 主要記載認證的方法 {     "typ": "JWT",     "
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
最近協助小朋友背單字準備考試,發現官方的字彙本是PDF且有加上詞性,卻沒有中文解釋,所以我整理一下單字中英對照表,有興趣的請自行取用,並且點選喜歡,留言,加入我的沙龍。多謝 一開始先介紹什麼是YLE Movers 劍橋兒童英語認證(YLE)是劍橋大學英語考試院(Cambridge Assessm
Thumbnail
專業按摩證照的取得一直是追求按摩技術人士的目標,而其中最為瞭解的莫過於按摩學徒的執照與認證之路。從身體撥筋教學到經絡按摩課程,這些專業訓練不僅是一門技術,更是一種承諾和責任。 身體撥筋教學是按摩技術中的重要一環,它不僅要求技巧熟練,更需要對人體結構和疾病有深入的了解。撥筋課程涵蓋了解剖學、生理學等
Thumbnail
NIST 800-88 認證與其他抹除標準的全方位比較 索引 引言 NIST 800-88 標準要求 四大抹除標準比較 該使用何種抹除標準? Q&A 引言 NIST 800-88,全名為《信息安全手冊》的第800-88號文件,是由美國國家標準技術研究所(NIST)所發布的一項
Thumbnail
Netflix 最大的特色,大概就是在市場還沒全面看好前就持續投入。從一開始的 DVD 線上租賃服務到當今的串流事業,Netflix 經歷多次 pivot,包含亞馬遜(Amazon)併購失敗、放棄 DVD 銷售,後來轉型月費訂閱制、無延遲罰款,又或是百視達(Blockbuster)不願併購導致...
終於通過中高級了,超級開心的,來分享一下辛苦的過程,流淚撒種者必歡呼收割,雖然未來的路還很長,但至少已達成主要目標。 得知閩南語認證考試相關資訊剛好一年,從排斥台羅拼音到接受且認真學習,花了二個月自學,到後來數個月天天練習聽寫,這次成大認證台羅拼音聽寫考78分(總分80),感覺是蠻熟練了,台語老師
Thumbnail
📢 線上課程:毛孩神經骨科疾病治療與居家照護 🗓️ 日期:7/16(假日) ⌚ 時間:9:00 - 16:00(中間休息一小時) 👨‍⚕️ 由專精於再生醫學、骨科神經科的獸醫師陳重肇醫師,帶您全面了解犬貓常見好發骨科及神經疾病、治療手術的方式差異、疾病預防保健與居家照護重點、以及常見急症狀
Thumbnail
寵物家長們,留意了!我們有一場特別的課程即將在6/04開課,這場課程是專門為了寵物的眼睛健康設計的。 ✔️符合台北市動保處特定寵物業專任人員訓練課程 ✔️採認3小時 我們知道,寵物的眼睛是最需要我們關心的部分,也是他們最吸引我們的地方。誰能抵擋他們那雙無辜又閃亮的大眼睛呢?然而,這雙大眼睛也可能面
Thumbnail
- 2020/7/14 前陣子一直覺的我的生命想要再多一點進展~ 此外也發現自己想學習其他身心靈或關於療癒的課程,主要是好奇心跟想體驗! 本來其實是想去上IET天使課程或是獨角獸靈氣之類的,不過不知道為什麼好像跟它們目前不是很有緣😂 會去上Access Bars®(以下簡稱Bars)感覺好像
Thumbnail
【自序】 Ē-tàng出這本台語中高級kap寫作講義 ê 實體冊,tû-liáu 愛感謝kut-la̍t koh 拍拚 ê 我,koh愛感謝進前thè 我巡稿 ê 台語老師
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
最近協助小朋友背單字準備考試,發現官方的字彙本是PDF且有加上詞性,卻沒有中文解釋,所以我整理一下單字中英對照表,有興趣的請自行取用,並且點選喜歡,留言,加入我的沙龍。多謝 一開始先介紹什麼是YLE Movers 劍橋兒童英語認證(YLE)是劍橋大學英語考試院(Cambridge Assessm
Thumbnail
專業按摩證照的取得一直是追求按摩技術人士的目標,而其中最為瞭解的莫過於按摩學徒的執照與認證之路。從身體撥筋教學到經絡按摩課程,這些專業訓練不僅是一門技術,更是一種承諾和責任。 身體撥筋教學是按摩技術中的重要一環,它不僅要求技巧熟練,更需要對人體結構和疾病有深入的了解。撥筋課程涵蓋了解剖學、生理學等
Thumbnail
NIST 800-88 認證與其他抹除標準的全方位比較 索引 引言 NIST 800-88 標準要求 四大抹除標準比較 該使用何種抹除標準? Q&A 引言 NIST 800-88,全名為《信息安全手冊》的第800-88號文件,是由美國國家標準技術研究所(NIST)所發布的一項
Thumbnail
Netflix 最大的特色,大概就是在市場還沒全面看好前就持續投入。從一開始的 DVD 線上租賃服務到當今的串流事業,Netflix 經歷多次 pivot,包含亞馬遜(Amazon)併購失敗、放棄 DVD 銷售,後來轉型月費訂閱制、無延遲罰款,又或是百視達(Blockbuster)不願併購導致...
終於通過中高級了,超級開心的,來分享一下辛苦的過程,流淚撒種者必歡呼收割,雖然未來的路還很長,但至少已達成主要目標。 得知閩南語認證考試相關資訊剛好一年,從排斥台羅拼音到接受且認真學習,花了二個月自學,到後來數個月天天練習聽寫,這次成大認證台羅拼音聽寫考78分(總分80),感覺是蠻熟練了,台語老師
Thumbnail
📢 線上課程:毛孩神經骨科疾病治療與居家照護 🗓️ 日期:7/16(假日) ⌚ 時間:9:00 - 16:00(中間休息一小時) 👨‍⚕️ 由專精於再生醫學、骨科神經科的獸醫師陳重肇醫師,帶您全面了解犬貓常見好發骨科及神經疾病、治療手術的方式差異、疾病預防保健與居家照護重點、以及常見急症狀
Thumbnail
寵物家長們,留意了!我們有一場特別的課程即將在6/04開課,這場課程是專門為了寵物的眼睛健康設計的。 ✔️符合台北市動保處特定寵物業專任人員訓練課程 ✔️採認3小時 我們知道,寵物的眼睛是最需要我們關心的部分,也是他們最吸引我們的地方。誰能抵擋他們那雙無辜又閃亮的大眼睛呢?然而,這雙大眼睛也可能面
Thumbnail
- 2020/7/14 前陣子一直覺的我的生命想要再多一點進展~ 此外也發現自己想學習其他身心靈或關於療癒的課程,主要是好奇心跟想體驗! 本來其實是想去上IET天使課程或是獨角獸靈氣之類的,不過不知道為什麼好像跟它們目前不是很有緣😂 會去上Access Bars®(以下簡稱Bars)感覺好像
Thumbnail
【自序】 Ē-tàng出這本台語中高級kap寫作講義 ê 實體冊,tû-liáu 愛感謝kut-la̍t koh 拍拚 ê 我,koh愛感謝進前thè 我巡稿 ê 台語老師