使用 OPA 文件模型的租用戶隔離 - AWS 方案指引

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

使用 OPA 文件模型的租用戶隔離

OPA 使用 文件來做出決策。這些文件可以包含租戶特定資料,因此您必須考慮如何維護租戶資料隔離。OPA 文件包含基本文件和虛擬文件。基礎文件包含來自外部世界的資料。這包括直接提供給 OPA 的資料、OPA 請求的資料,以及可能做為輸入傳遞給 OPA 的資料。虛擬文件是根據政策計算,並包含 OPA 政策和規則。如需詳細資訊,請參閱 OPA 文件

若要在 OPA 中為多租用戶應用程式設計文件模型,您必須先考慮在 OPA 中做出決策所需的基本文件類型。如果這些基礎文件包含租戶特定資料,您必須採取措施,以確保這些資料不會意外暴露到跨租戶存取。幸運的是,在許多情況下,租戶特定資料不需要在 OPA 中做出決策。下列範例顯示假設的 OPA 文件模型,允許根據哪個租用戶擁有 API 來存取 API,以及使用者是否為租用戶的成員,如輸入文件所示。

基本 OPA 文件模型

在此方法中,OPA 無法存取任何租用戶特定資料,但有關哪些租用戶擁有 API 的資訊除外。在這種情況下,OPA 促進跨租用戶存取沒有問題,因為 OPA 用來做出存取決策的唯一資訊是使用者與租用戶的關聯,以及租用戶與 APIs關聯。您可以將此類型的 OPA 文件模型套用到孤立的 SaaS 模型,因為每個租戶都有獨立資源的所有權。

不過,在許多 RBAC 授權方法中,可能會有跨租用戶的資訊公開。在下列範例中,假設性 OPA 文件模型允許根據使用者是否為租用戶的成員,以及使用者是否具有存取 API 的正確角色來存取 API。

跨租用戶使用案例的 OPA 文件模型

此模型會帶來跨租用戶存取的風險,因為多個租用戶在 中的角色data.tenant1.user_roles和許可data.tenant2.user_roles現在必須可供 OPA 存取,才能做出授權決策。為了維持租戶隔離和角色映射的隱私權,此資料不應位於 OPA 中。RBAC 資料應位於資料庫等外部資料來源中。此外,OPA 不應用於將預先定義的角色映射到特定許可,因為這使得租戶難以定義自己的角色和許可。它也會讓您的授權邏輯變得嚴格,且需要持續更新。如需如何將 RBAC 資料安全地納入 OPA 決策程序的指引,請參閱本指南稍後的租戶隔離和資料隱私權建議一節。

您可以透過不將任何租戶特定資料儲存為非同步基礎文件,輕鬆在 OPA 中維護租戶隔離。非同步基礎文件是存放在記憶體中的資料,可在 OPA 中定期更新。其他基礎文件,例如 OPA 輸入,會同步傳遞,且只能在決策時間提供。例如,在查詢的 OPA 輸入中提供租戶特定資料不會構成違反租戶隔離,因為該資料僅在決策過程中同步可用。