所以我正在开发一个拥有多租户数据库(MySQL,Java JDBC)的项目。每个租户可以被视为“组”,每个“组”具有多个“用户”。我的主要困惑是如何最好地保护这一点,因此组的成员只能访问该组中的数据,即使他们都使用单独的凭据登录。
如果我只是进行基于组的登录,那就很简单:每个组一个模式,一个数据库用户可以访问每个模式。这样可以使访问完全受限,因为没有该组的密码,任何人都无法访问该模式。
对于用户来说,我称之为“应用程序用户”,事情变得复杂。每个应用程序用户都将与一个组关联,当该应用程序用户登录时,他们将需要访问与其关联的组。实质上,它们以应用程序用户身份登录,并被授予数据库用户的凭据。
现在,这个想法似乎笨拙且不安全。如果JDBC应用程序层有办法授予对任何数据库级别用户帐户的访问权限,那么该安全性就变得毫无意义,因为它很容易绕过。
我想我正在寻找有关如何最好地保护这种环境的指导。谢谢。
答案 0 :(得分:0)
除了为不同的租户分配不同的数据库用户之外,还有一个更好的想法,只需使用表来存储所有Group of Data。一个表用于所有应用程序用户,第三个关系表用于将组或租户ID与其各自的组成员链接。用户ID。 每当应用程序用户请求组资源或数据时,如果用户有权访问组数据,请检查关系表。祝你好运