我们正在建立一个新的应用程序框架,我们想知道为用户设置数据库安全性的最佳实践。在我们的旧框架中,有一个用户登录过程,一旦用户登录,框架就会控制允许用户使用哪些表单和菜单选项。所有用户都使用相同的用户帐户访问数据库。
这种方法的缺点是你无法使用SYSTEM_USER来找出谁在发出特定的数据库请求。
新框架仍然会有一个登录表单,它将控制一个人可以访问的菜单选项。每次将新用户添加到我们的应用程序时,我们是否应该设置数据库用户帐户?这会导致任何许可问题,因为您无法使用连接池吗?
答案 0 :(得分:0)
它不会导致许可问题,但会产生大量连接,可能会导致性能问题。
更好的解决方案是在存储过程中添加一个参数,以传入当前用户的UserID,以便记录它。
如果不希望传入参数,可以将当前用户放在CONTEXT_INFO()中,或者如果您使用的是SQL 2016,SESSION_CONTEXT()并从那里记录它。 https://www.mssqltips.com/sqlservertip/4094/phase-out-contextinfo-in-sql-server-2016-with-sessioncontext/