我有一个应用程序,许多用户可以访问MySQL数据库。现在我困惑的是我如何管理用户。在我看来,有两种不同类型的用户 - APPLICATION用户和DATABASE用户。这些是相同还是不同?
让我说明一下。这就是我现在的工作方式:
当用户登录应用程序时,单个数据库帐户登录到MySQL并检查应用程序用户名是否存在,并比较密码哈希值。这些都存储在MySQL的App Users表中。所有这些用户都使用相同的MySQL帐户来访问数据库。
应用程序中的每个用户是否也应该是一个独特的MySQL用户?
答案 0 :(得分:4)
只允许通过受控应用程序(或Web服务)访问数据库,通常使用所有应用程序帐户的单一数据库帐户 。在没有集中用户管理的环境中尤其如此;在AD上的SQL Server中(例如在SharePoint的情况下),使用集成身份验证有时是可行的。
原因很简单:
尝试将数据库帐户与应用程序帐户同步是一场噩梦;并且,因为应用程序控制所有SQL数据访问和查询(即没有直接登录),所以几乎不需要在数据库访问级别方面将用户A与用户B分开。 / p>
在此配置中,应用程序负责对用户访问进行身份验证,授权和识别。
话虽如此,拥有不同访问级别的不同数据库帐户是件好事。这些可能类似于:
对于多租户应用程序,每个租户可能有一个“app_user”帐户(可能还有架构或数据库)。
因为听起来你还在滚动 - 另一个身份验证器,花时间正确实现salt(大随机)+哈希(bcrypt / scrypt / pbkdf2 - 没有sha!)。或者,考虑外部身份验证器或现有的审查库。并且,与往常一样,使用占位符。