本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 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 輸入中提供租戶特定資料不會構成違反租戶隔離,因為該資料僅在決策過程中同步可用。