【認證與授權 — Open Policy Agent】 如何用RESTFUL API來串接

更新於 2023/06/06閱讀時間約 4 分鐘
上一篇我們有介紹什麼是OPA以及一些基本概念「【資訊軟體知識】Open Policy Agent 授權策略」,接下來我們就來介紹如何架設並以API的方式進行授權檢查。
這種方式的好處是可以跨語言, 不侷限於Go, 透過標準RESTFUL API的方式來與OPA Server相互溝通。

流程

環境準備

使用Docker來架設OPA Server。
# pull docker image
docker pull openpolicyagent/opa:0.29.1
# start with server
docker run --rm -p 8181:8181 openpolicyagent/opa:0.29.1 run --server --addr :8181

情境:

  • UserA要對某一篇文章進行編輯。
  • 透過OPA檢驗是否具有編輯文章的權限。

準備資料並上傳到OPA Server

Data

  • 定義使用者具有哪些角色。
  • 定義各個角色分別有哪些操作權限。
  • data.json。
{
"user_roles": {
"userA": ["editor"]
},
"role_permissions": {
"editor": [
{ "action": "edit", "object": "article" }
]
}
}
將data.json上傳到OPA Server
# 上傳Data檔                               ↓ 自己定義的路徑
curl -X PUT <http://127.0.0.1:8181/v1/data/rbac/authz/acl> --data-binary @data.json

策略制定

  • 簡單的RBAC驗證。
  • 檢查用戶被賦予的角色是否能夠對文章進行編輯。
  • rbac.authz.rego。
package rbac.authz

import data.rbac.authz.acl
import input

default allow = false
allow {
# 將user所擁有的角色整理起來
roles := acl.user_roles[input.user]

# 對每一個角色進行處理
r := roles[_]

# 取出每個角色擁有哪些操作權限
permissions := acl.role_permissions[r]

# 準備對每一個權限進行檢查
p := permissions[_]

# 檢查權限是否與請求的功能、操作相互匹配
p == {"action": input.action, "object": input.object }
}

將Data及Policy上傳到OPA Server

# 上傳Policy檔
curl -X PUT <http://127.0.0.1:8181/v1/policies/rbac.authz> --data-binary @rbac.authz.rego

設計請求資料並進行驗證

  • User要編輯某一篇文章。
  • input.json
{
"input": {
"user": "userA",
"object": "article",
"action": "edit"
}
}
  • 請OPA Server幫我們進行檢查:
curl -X POST <http://127.0.0.1:8181/v1/data/rbac/authz/allow> --data-binary @input.json

# Response
{"result":true}

結論

  • Policy通常制定好之後就不容易在進行變更。
  • Data是比較常變動的地方,例如: 今天新增角色或修改角色對應的權限...等操作,就會產生新的Data檔, 這時候就得PUT更新回OPA Server。
  • 透過API傳輸可能會有一些延遲, 當然也可以直接以Library的方式嵌入到Go,這就看團隊如何取捨了。
即將進入廣告,捲動後可繼續閱讀
為什麼會看到廣告
avatar-img
116會員
261內容數
哈囉,我是阿Han,是一位 👩‍💻 軟體研發工程師,喜歡閱讀、學習、撰寫文章及教學,擅長以圖代文,化繁為簡,除了幫助自己釐清思路之外,也希望藉由圖解的方式幫助大家共同學習,甚至手把手帶您設計出高品質的軟體產品。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
阿Han的沙龍 的其他內容
使用網銀時我們常常會聽到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",     "
使用網銀時我們常常會聽到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è 我巡稿 ê 台語老師