本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
比較集中式和分散式部署模式
您可以在集中式或分散式部署模式中部署 OPA,而多租用戶應用程式的理想方法取決於使用案例。如需這些模式的範例,請參閱本指南稍早的在 API 上使用集中式 PDP 搭配 PEPs, APIs以及在 APIs 上使用分散式 PDP 和 PEPs 一節。由於 OPA 可以部署為作業系統或容器中的協助程式,因此可以透過多種方式實作以支援多租戶應用程式。
在集中式部署模式中,OPA 會部署為容器或協助程式,其 RESTful API 可供應用程式中的其他 服務使用。當服務需要來自 OPA 的決策時,會呼叫中央 OPA RESTful API 來產生此決策。這種方法易於部署和維護,因為只有單一部署的 OPA。此方法的缺點是,它不提供任何機制來維護租用戶資料的分離。由於 OPA 只有單一部署,因此 OPA 決策中使用的所有租用戶資料,包括 OPA 參考的任何外部資料,都必須可供 OPA 使用。您可以使用此方法維持租戶資料隔離,但必須由 OPA 政策和文件結構或外部資料的存取權強制執行。集中式部署模式也需要更高的延遲,因為每個授權決策都必須對其他服務發出 RESTful API 呼叫。
在分散式部署模式中,OPA 會與多租戶應用程式的服務一起部署為容器或協助程式。它可以部署為附屬容器,也可以部署為在作業系統本機執行的協助程式。若要從 OPA 擷取決策,服務會對本機 OPA 部署進行 RESTful API 呼叫。(因為 OPA 可以部署為 Go 套件,所以您可以原生使用 Go 來擷取決策,而不是使用 RESTful API 呼叫。) 與集中式部署模式不同,分散式模式需要更強大的努力來部署、維護和更新,因為它存在於應用程式的多個區域。分散式部署模式的好處之一是能夠維持租戶資料的隔離,尤其是使用孤立 SaaS 模型的應用程式。租用戶特定的資料可以在該租用戶特有的 OPA 部署中隔離,因為分散式模型中的 OPA 會與租用戶一起部署。此外,分散式部署模式的延遲遠低於集中式部署模式,因為每個授權決策都可以在本機進行。
當您在多租用戶應用程式中選擇 OPA 部署模式時,請務必評估應用程式最關鍵的條件。如果您的多租用戶應用程式對延遲很敏感,分散式部署模式可以提供更好的效能,同時犧牲更複雜的部署和維護。雖然您可以透過 DevOps 和自動化來管理其中一些複雜性,但與集中式部署模式相比,它仍需要額外的努力。
如果您的多租用戶應用程式使用孤立 SaaS 模型,您可以使用分散式 OPA 部署模式來模擬孤立方法來租用戶資料隔離。這是因為當 OPA 與每個租用戶特定的應用程式服務一起執行時,您可以自訂每個 OPA 部署,只包含與該租用戶相關聯的資料。無法在集中式 OPA 部署模式中將 OPA 資料孤立。如果您使用集中式部署模式或分散式模式搭配集區 SaaS 模型,則必須在 OPA 文件模型中維護租戶資料隔離。