Postgresql 如何扩展我的资源管理系统的授权

Postgresql 如何扩展我的资源管理系统的授权,postgresql,architecture,authorization,Postgresql,Architecture,Authorization,我有两个系统 一个访问管理系统,我在其中存储资源、用户的引用以及它们之间的访问权限 一个资源管理系统,我保存有关资源的数据,并提供一个API来管理和查询资源 当在资源管理系统中收到请求时,将向访问管理系统发送查询,以获取当前用户有权访问的资源ID列表。当从资源管理PostgreSQL数据库中获取数据时,此列表用作该数据库的条件,因此我只返回用户有权访问的数据的结果 当一个用户可以访问多达几百个资源时,这种方法在小范围内可以很好地工作,但是我如何扩展它来为访问2000或20000个资源的用户工作呢

我有两个系统

一个访问管理系统,我在其中存储资源、用户的引用以及它们之间的访问权限

一个资源管理系统,我保存有关资源的数据,并提供一个API来管理和查询资源

当在资源管理系统中收到请求时,将向访问管理系统发送查询,以获取当前用户有权访问的资源ID列表。当从资源管理PostgreSQL数据库中获取数据时,此列表用作该数据库的条件,因此我只返回用户有权访问的数据的结果


当一个用户可以访问多达几百个资源时,这种方法在小范围内可以很好地工作,但是我如何扩展它来为访问2000或20000个资源的用户工作呢?我不能为每个请求在我的系统之间传递20000个资源ID

你的设计似乎是个问题

在不同的系统中分离对象及其访问控制是很奇怪的。除了您正在经历的低效之外,保持系统同步也很困难


一种经过验证的方法(PostgreSQL使用)是将对象本身的权限存储为“访问控制列表”。然后您就知道是否有人可以在不获取额外数据的情况下访问对象。另一个优点是权限会随对象自动删除。

您的设计似乎是问题所在

在不同的系统中分离对象及其访问控制是很奇怪的。除了您正在经历的低效之外,保持系统同步也很困难


一种经过验证的方法(PostgreSQL使用)是将对象本身的权限存储为“访问控制列表”。然后您就知道是否有人可以在不获取额外数据的情况下访问对象。另一个优点是权限会随对象自动删除。

您可以为资源ID创建一个临时表,并与数据库中更永久的数据进行连接。也许值得一试,看看它是否适合您的用例。

您可以为资源ID创建一个临时表,并与数据库中更永久的数据进行连接。也许值得一试,看看它是否适合您的用例