是否可以为用户设置数据库行级权限?

时间:2016-11-14 06:19:05

标签: mysql database postgresql authorization

我正在为我的项目寻找一个数据库,并希望尝试一个我之前没有工作过的新数据库来学习并找到项目的优势。我想尝试的最喜欢的一个是Postgres,但不一定。

我希望看到的一个功能是为我的系统中经过身份验证和授权的用户设置行级权限。

说,我的用户john是常规user。作为普通用户,John只能创建/更新自己的行,而不能创建/更新其他行,并且对数据库中的某些视图具有读访问权。

我知道我可以让这些权限在应用程序级别上运行,但如果它在数据库中可用,我想尝试一下。

是否有开箱即用的此功能的通用数据库?

1 个答案:

答案 0 :(得分:1)

是的,它确实可以在PostgreSQL 9.5中得到很好的支持(以及某种程度上的早期版本)。

https://www.postgresql.org/docs/9.5/static/ddl-rowsecurity.html

它被称为行安全。

要记住几件事:

  1. 很灵活
  2. 您可以使用current_user变量进行访问控制
  3. 它依赖于一个真正的postgresql用户
  4. 有时在应用开发中,为Web应用程序上的每种类型的经过身份验证的用户提供单独的数据库用户是不切实际的。还有其他方法可以解决这个问题。

    在我的一些应用程序中,当Web请求获取连接时,我们设置了postgresql变量(set command)。这些变量跟踪谁是经过身份验证的。然后我们使用视图来控制基于这些变量的访问。如果您想了解有关此做法的更多详细信息,请发表评论。