使用 Postgres 角色系统进行 Web 应用程序身份验证和角色管理是否合法?

问题描述 投票:0回答:2

我的情况

我想使用 ReactPostgres 创建我的第一个端到端 Web 应用程序。我之前在 Intranet 中使用过 Postgres,并使用 Postgres 角色系统进行用户身份验证。

角色

我计划的网络应用程序将是一个团队规划系统。它将包含以下用户角色:

  • 网络管理员(我,超级用户)
  • 团队管理员(可以在他/她的团队中插入/删除用户,全局设置 为团队应用功能设置等)
  • 团队用户(可以调整存储在
    中的自定义个人设置 数据库,例如颜色,自己的个人资料)
  • 访客(只能查看团队及其成员)

我的方法

我当前的用户身份验证和角色管理计划是将上述角色设置为 Postgres 组角色,并在每个组角色中定位相应用户的登录角色。因此,用户身份验证将完全由 Postgres 的内置角色系统管理。

然后通过

应用不同的数据访问
  • 基于表和基于列的权限GRANT加上每个组角色的视图实施和
  • 行安全策略,用于将数据子集到相应的团队 用户的。

这是一个好方法吗?

postgresql authentication web-applications roles
2个回答
1
投票

虽然可行,但可能不是最简单的方法。

当您开始使用连接池时,就会出现问题。每次向数据库发出请求时,您都必须先切换用户。

此外,有一天会使用错误的用户(忘记切换或其他),但几乎不可能调试甚至找出:您将记录

Bob
更新的表X,而不是
R_Readonly_worker
更新它。


0
投票

这样做的主要原因是数据模型和数据库会比前端停留的时间长很多。切换前端会经常发生,使用这种方案,即使 psql 是一个有效且安全的前端。或者使用 jdbc 的报告引擎,使用 rls 的访问控制将使其安全。 这种方法万岁,因为我很少听到这种方法。永远不要将访问控制留给应用程序程序员!

© www.soinside.com 2019 - 2024. All rights reserved.