通過使用 OPA 實現 PDP - AWS 規定指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

通過使用 OPA 實現 PDP

開放原則代理程式 (OPA) 是開放原則代理程式 (OPA) 的一般用途原則引擎。OPA 有許多用例,但與 PDP 實現相關的用例是它能夠將授權邏輯與應用程序分離。這稱為原則解耦。OPA 在實施 PDP 有幾個原因很有用。它使用名為 Rego 的高階宣告式語言來草擬原則和規則。這些原則和規則與應用程式分開存在,而且無需任何應用程式特定邏輯即可轉譯授權決策。OPA 還公開了一個 RESTful API,使檢索授權決策變得簡單明了。若要做出授權決定,應用程式會使用 JSON 輸入來查詢 OPA,而 OPA 會根據指定的原則評估輸入,以 JSON 傳回存取決策。OPA 還能夠導入在做出授權決策時可能相關的外部數據。

使用 OPA 來實作 PDP

OPA 比自訂原則引擎有幾個優點:

  • OPA 及其使用 Rego 進行原則評估提供彈性、預先建置的原則引擎,只需插入原則和任何必要資料即可進行授權決策。必須在自訂原則引擎解決方案中重新建立此原則評估邏輯。

  • OPA 透過使用宣告式語言撰寫原則,簡化授權邏輯。您可以獨立於任何應用程式程式碼修改和管理這些原則和規則,而不需要應用程式開發技能。

  • OPA 公開了一個 RESTful API,這簡化了與政策實施點(PEP)的集成。

  • OPA 為驗證和解碼 JSON 網絡令牌(JWT)提供內置支持。

  • OPA 是公認的授權標準,這意味著如果您需要幫助或研究來解決特定問題,文檔和示例將非常豐富。

  • 採用 OPA 等授權標準可讓團隊之間共用以 Rego 撰寫的原則,無論團隊應用程式使用的程式設計語言為何。

OPA 不會自動提供兩件事:

  • OPA 沒有強大的控制平面來更新和管理原則。OPA 確實提供了一些基本模式來實作原則更新、監視和記錄彙總,方法是公開管理 API,但與此 API 的整合必須由 OPA 使用者處理。最佳作法是,您應該使用持續整合和持續部署 (CI/CD) 管線來管理、修改和追蹤原則版本,以及管理 OPA 中的原則。

  • OPA 預設無法從外部來源擷取資料。用於授權決策的外部數據源可以是保存用戶屬性的數據庫。如何將外部資料提供給 OPA 有一定的彈性 — 可以事先在本機快取,或是在要求授權決定時,從 API 動態擷取 — 但取得這些資訊並非 OPA 可以代表您執行的動作。