本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 OPA 文件模型的租用戶隔離
OPA 使用 文件來做出決策。這些文件可以包含租戶特定資料,因此您必須考慮如何維護租戶資料隔離。OPA 文件包含基本文件和虛擬文件。基礎文件包含來自外部世界的資料。這包括直接提供給 OPA 的資料、OPA 請求的資料,以及可能做為輸入傳遞給 OPA 的資料。虛擬文件是根據政策計算,並包含 OPA 政策和規則。如需詳細資訊,請參閱 OPA 文件
若要在 OPA 中為多租用戶應用程式設計文件模型,您必須先考慮在 OPA 中做出決策所需的基本文件類型。如果這些基礎文件包含租戶特定資料,您必須採取措施,以確保這些資料不會意外暴露到跨租戶存取。幸運的是,在許多情況下,租戶特定資料不需要在 OPA 中做出決策。下列範例顯示假設的 OPA 文件模型,允許根據哪個租用戶擁有 API 來存取 API,以及使用者是否為租用戶的成員,如輸入文件所示。

在此方法中,OPA 無法存取任何租用戶特定資料,但有關哪些租用戶擁有 API 的資訊除外。在這種情況下,OPA 促進跨租用戶存取沒有問題,因為 OPA 用來做出存取決策的唯一資訊是使用者與租用戶的關聯,以及租用戶與 APIs關聯。您可以將此類型的 OPA 文件模型套用到孤立的 SaaS 模型,因為每個租戶都有獨立資源的所有權。
不過,在許多 RBAC 授權方法中,可能會有跨租用戶的資訊公開。在下列範例中,假設性 OPA 文件模型允許根據使用者是否為租用戶的成員,以及使用者是否具有存取 API 的正確角色來存取 API。

此模型會帶來跨租用戶存取的風險,因為多個租用戶在 中的角色data.tenant1.user_roles
和許可data.tenant2.user_roles
現在必須可供 OPA 存取,才能做出授權決策。為了維持租戶隔離和角色映射的隱私權,此資料不應位於 OPA 中。RBAC 資料應位於資料庫等外部資料來源中。此外,OPA 不應用於將預先定義的角色映射到特定許可,因為這使得租戶難以定義自己的角色和許可。它也會讓您的授權邏輯變得嚴格,且需要持續更新。如需如何將 RBAC 資料安全地納入 OPA 決策程序的指引,請參閱本指南稍後的租戶隔離和資料隱私權建議一節。
您可以透過不將任何租戶特定資料儲存為非同步基礎文件,輕鬆在 OPA 中維護租戶隔離。非同步基礎文件是存放在記憶體中的資料,可在 OPA 中定期更新。其他基礎文件,例如 OPA 輸入,會同步傳遞,且只能在決策時間提供。例如,在查詢的 OPA 輸入中提供租戶特定資料不會構成違反租戶隔離,因為該資料僅在決策過程中同步可用。