本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
比較集中式和分散式部署模式
您可以在集中式或分散式部署模式中部署 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 文件模型中維護租戶資料隔離。