【问题标题】:Design consideration: One database user connection v.s. multi database user connection [closed]设计考虑:一个数据库用户连接与一个数据库用户连接多数据库用户连接[关闭]
【发布时间】:2014-03-06 06:10:01
【问题描述】:

我曾经在每个 Web 应用程序中使用一个数据库用户来连接数据库。

现在对于企业应用来说,多数据库用户连接似乎比一个用户更安全。

例如:人力资源部。在连接和开发部门中使用 hr db 用户帐户。使用另一个。

什么是最好的选择?

【问题讨论】:

  • 这太宽泛了,而且可能会因您指定的数据库平台而异。请尝试深入了解更具体的内容。
  • 每一段代码都应该能够访问它所需要的一切,仅此而已。

标签: mysql database oracle jdbc application-design


【解决方案1】:

如果我正确理解您的问题,通常最好设置各种帐户,以便您可以根据需要定义对各种表的访问权限。
例如,属于 HR 部门的数据理想情况下应该由 HR 的员工访问,同时可能由更高的管理人员查看。同样,客户服务人员等应访问有关客户的数据

【讨论】:

  • 所以,假设一个用户登录,首先你应该使用一个通用的db帐户连接来获取用户的信息,然后你放弃这个连接,并使用另一个db连接来连接db,似乎没有效率
【解决方案2】:

每个用户可以拥有一个数据库用户帐户,例如“Frank”和“Jane”。

您也可以设置角色,例如“HR”或“CSR”,并将您的用户分配给角色。您不能在 MySQL 中执行此操作,但可以在 MariaDB 中执行此操作,尽管您似乎也有 Oracle ;)

您还将拥有一个用于 Web 服务器的用户帐户,其唯一权限是连接并调用 SET ROLE。您实际上是在将身份验证委托给 Web 服务器。 Web 服务器可能会对数据库中的用户进行身份验证,或者可能使用 OAUTH。

以网络服务器用户的身份连接,然后调用 SET ROLE 到任何正在登录的用户的名称。如果您小心地重置连接中的所有内容,那么您仍然可以使用池。

然后,用户只能执行您为其角色允许的事情。

这对于审计也很有用,因为您只需将 CURRENT_USER 放在审计表中即可。

【讨论】:

  • 你的设计让我印象深刻 :) 将 db auth 与 application auth 集成似乎是可能的!你真的使用这个计划或听说过某人吗? /项目呢?
  • 是的,我确实使用它,但 Postgres 不是 oracle/mariadb
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多