這次來介紹軟體世界中很常遇到的授權策略,而有沒有比較好的一種策略方式,讓開發者可以遵循一套標準呢? 答案是有的,就來介紹一下新寵兒,Open Polocy Agent吧!
認證與授權
● 認證(Authentication): 身分檢查, 識別人或物的檢查, 例如: 通行證的檢查、登入後的人是誰。
● 授權(Authorization): 被識別過後的人對什麼樣的資源具有什麼操作權限。
Open Policy Agent專注在授權這一塊。
Open Policy Agent簡介
簡稱OPA, 是一套開源專案, 提倡策略即代碼, 把決策這一個步驟從複雜的業務邏輯中抽離出來,以代理人的角色自居, 將這些授權檢查規則轉換為OPA的檢查機制, 當需要進行授權檢查時, 就可以委託給OPA來幫我們進行檢查。
主要目標是提供標準的授權策略語言(rego), 讓我們開發不同產品時,都可以遵照這樣的規範進行授權的策略制定。
目前 OPA 也已經受許多知名企業(如 T-Mobile、Netflix、Pinterest等)所採用。
以下是幾個OPA常被應用的業務場景:
● 授權: 判斷用戶能夠對哪些資源進行什麼樣的操作。
● 防火牆規則, 比如iptables。
● 可以規範哪個Service可以開放的Port、Protocol、對應的Network...等,
請參考官方範例
● 定義Proxy的策略。
OPA邏輯結構
● Query: 需進行評估的查詢來源, 如: 登入的使用者。
● Data: OPA評估時需要的資料, 例如: 用戶列表、角色列表、權限列表。
● Policy: 策略的業務邏輯,它根據Query與Data來產生策略的評估結果, 使用Rego語法來描述。
● Decision: 評估後的結果, 除了單純的true/false之外, 也能額外回傳資訊。
這次主要帶點概念過來,之後會持續分享實作的部分,有興趣的朋友不妨收藏與支持一下唷!