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

更新於 發佈於 閱讀時間約 5 分鐘

上一篇我們有介紹什麼是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
留言分享你的想法!
avatar-img
阿Han的沙龍
129會員
287內容數
哈囉,我是阿Han,是一位 👩‍💻 軟體研發工程師,喜歡閱讀、學習、撰寫文章及教學,擅長以圖代文,化繁為簡,除了幫助自己釐清思路之外,也希望藉由圖解的方式幫助大家共同學習,甚至手把手帶您設計出高品質的軟體產品。
阿Han的沙龍的其他內容
2023/06/30
什麼是零知識證明(Zero-knowledge proof) 是一種密碼學的概念,用於在不揭示具體信息的情況下,證明某個主張的正確性。它允許一方(稱為證明者)向另一方(稱為驗證者)證明某個陳述的真實性,而無需透露任何關於陳述的具體細節..., 這根本文字天書啊,底下讓我們用白話文來說一下唄! 「我必
Thumbnail
2023/06/30
什麼是零知識證明(Zero-knowledge proof) 是一種密碼學的概念,用於在不揭示具體信息的情況下,證明某個主張的正確性。它允許一方(稱為證明者)向另一方(稱為驗證者)證明某個陳述的真實性,而無需透露任何關於陳述的具體細節..., 這根本文字天書啊,底下讓我們用白話文來說一下唄! 「我必
Thumbnail
2023/06/09
上一篇我們介紹了「【認證與授權】Open Policy Agent 授權策略」, 相信都已經初步了解了OPA(Open Policy Agent)主要在做什麼, OPA簡單來說就是一個授權的政策管理規範, 有點像我們的法律系統, 提供開發者在上面制定法條, 以約束授權對象可以進行什麼樣的操作, 讓各
Thumbnail
2023/06/09
上一篇我們介紹了「【認證與授權】Open Policy Agent 授權策略」, 相信都已經初步了解了OPA(Open Policy Agent)主要在做什麼, OPA簡單來說就是一個授權的政策管理規範, 有點像我們的法律系統, 提供開發者在上面制定法條, 以約束授權對象可以進行什麼樣的操作, 讓各
Thumbnail
2023/05/27
使用網銀時我們常常會聽到OTP、OTP, 究竟OTP是什麼呢? 全名為「One Time Password」, 一次性密碼, 顧名思義就是密碼僅能一次性的使用, 在過去我們也都很清楚單純的帳號密碼登入已經不是一個非常安全的選項的, 萬一牽涉到重要的金錢交易時, 如果安全環節沒有兼顧, 將導致個人財產
Thumbnail
2023/05/27
使用網銀時我們常常會聽到OTP、OTP, 究竟OTP是什麼呢? 全名為「One Time Password」, 一次性密碼, 顧名思義就是密碼僅能一次性的使用, 在過去我們也都很清楚單純的帳號密碼登入已經不是一個非常安全的選項的, 萬一牽涉到重要的金錢交易時, 如果安全環節沒有兼顧, 將導致個人財產
Thumbnail
看更多
你可能也想看
Thumbnail
沙龍一直是創作與交流的重要空間,這次 vocus 全面改版了沙龍介面,就是為了讓好內容被好好看見! 你可以自由編排你的沙龍首頁版位,新版手機介面也讓每位訪客都能更快找到感興趣的內容、成為你的支持者。 改版完成後可以在社群媒體分享新版面,並標記 @vocus.official⁠ ♥️ ⁠
Thumbnail
沙龍一直是創作與交流的重要空間,這次 vocus 全面改版了沙龍介面,就是為了讓好內容被好好看見! 你可以自由編排你的沙龍首頁版位,新版手機介面也讓每位訪客都能更快找到感興趣的內容、成為你的支持者。 改版完成後可以在社群媒體分享新版面,並標記 @vocus.official⁠ ♥️ ⁠
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
本篇介紹跨平台存取控制系統 Oso 以及它的規則語言 Polar,用他們替專案建立 RBAC 以及資源級的存取控制。
Thumbnail
本篇介紹跨平台存取控制系統 Oso 以及它的規則語言 Polar,用他們替專案建立 RBAC 以及資源級的存取控制。
Thumbnail
Supabase的串接方式很多元,其中在網頁前端中使用起來最簡單也最推薦的方式就是使用官方提供的supabase-js套件,該套件已經把所有REST和REALTIME的API功能包好,可以方便的在網頁中提取使用。嗨歡迎閱讀我的文章!這是關於Supabase的系列文章,內容包含介紹Supabase是什
Thumbnail
Supabase的串接方式很多元,其中在網頁前端中使用起來最簡單也最推薦的方式就是使用官方提供的supabase-js套件,該套件已經把所有REST和REALTIME的API功能包好,可以方便的在網頁中提取使用。嗨歡迎閱讀我的文章!這是關於Supabase的系列文章,內容包含介紹Supabase是什
Thumbnail
還在苦惱怎麼樣把你的檔案上傳到Github嗎?這裡教大家簡單上傳你的檔案可以沿用到如何上傳整體專案到Github並展示你的作品集
Thumbnail
還在苦惱怎麼樣把你的檔案上傳到Github嗎?這裡教大家簡單上傳你的檔案可以沿用到如何上傳整體專案到Github並展示你的作品集
Thumbnail
上一篇我們介紹了「【認證與授權】Open Policy Agent 授權策略」, 相信都已經初步了解了OPA(Open Policy Agent)主要在做什麼, OPA簡單來說就是一個授權的政策管理規範, 有點像我們的法律系統, 提供開發者在上面制定法條, 以約束授權對象可以進行什麼樣的操作, 讓各
Thumbnail
上一篇我們介紹了「【認證與授權】Open Policy Agent 授權策略」, 相信都已經初步了解了OPA(Open Policy Agent)主要在做什麼, OPA簡單來說就是一個授權的政策管理規範, 有點像我們的法律系統, 提供開發者在上面制定法條, 以約束授權對象可以進行什麼樣的操作, 讓各
Thumbnail
上一篇我們有介紹什麼是OPA以及一些基本概念「【資訊軟體知識】Open Policy Agent 授權策略」,接下來我們就來介紹如何架設並以API的方式進行授權檢查。 這種方式的好處是可以跨語言, 不侷限於Go, 透過標準RESTFUL API的方式來與OPA Server相互溝通。 使用Docke
Thumbnail
上一篇我們有介紹什麼是OPA以及一些基本概念「【資訊軟體知識】Open Policy Agent 授權策略」,接下來我們就來介紹如何架設並以API的方式進行授權檢查。 這種方式的好處是可以跨語言, 不侷限於Go, 透過標準RESTFUL API的方式來與OPA Server相互溝通。 使用Docke
Thumbnail
相信有在開發Web應用的朋友應該對於Postman這套工具相當熟悉, 這套工具可以協助我們在產品尚未完成之前可以先進行一些基本的介接測試,甚至我們可以使用Postman去呼叫雲端的API,像是Google的語音辨識、文字翻譯、字典查詢…,這類大廠相信也都開放許多標準API(Application P
Thumbnail
相信有在開發Web應用的朋友應該對於Postman這套工具相當熟悉, 這套工具可以協助我們在產品尚未完成之前可以先進行一些基本的介接測試,甚至我們可以使用Postman去呼叫雲端的API,像是Google的語音辨識、文字翻譯、字典查詢…,這類大廠相信也都開放許多標準API(Application P
Thumbnail
在上一篇文章介紹過API之後,大家應該會很好奇寫好了一隻API應該怎麼測試巴?
Thumbnail
在上一篇文章介紹過API之後,大家應該會很好奇寫好了一隻API應該怎麼測試巴?
Thumbnail
網址是 API 的門面,大家使用 API 的第一步就是要看它。 第一眼就要讓人就知道這隻 API 在做什麼? 甚至因為遵循標準(目前 REST 是主流),可以類推 API 應該會有什麼功能等等。
Thumbnail
網址是 API 的門面,大家使用 API 的第一步就是要看它。 第一眼就要讓人就知道這隻 API 在做什麼? 甚至因為遵循標準(目前 REST 是主流),可以類推 API 應該會有什麼功能等等。
Thumbnail
這篇文章要教你如何透過權限控管,保護 FastAPI 生成的 API 文件,讓使用者需要經過授權才能進去
Thumbnail
這篇文章要教你如何透過權限控管,保護 FastAPI 生成的 API 文件,讓使用者需要經過授權才能進去
Thumbnail
GCP: API和服務 -> 資訊主頁 -> +啟用API和服務 搜尋google+ 啟用: 設定 OAuth 同意畫面: 選擇外部後,開始填寫資料: 建立憑證: 假如有多個應用程式平台,如網頁、app,都要各自建立OAuth用戶。 已授權的重新導向URI: 使用者透過 G
Thumbnail
GCP: API和服務 -> 資訊主頁 -> +啟用API和服務 搜尋google+ 啟用: 設定 OAuth 同意畫面: 選擇外部後,開始填寫資料: 建立憑證: 假如有多個應用程式平台,如網頁、app,都要各自建立OAuth用戶。 已授權的重新導向URI: 使用者透過 G
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News