我有一个直接访问数据库的应用程序。此应用程序控制用户可以根据上下文执行的操作。
目前,我使用的是Windows身份验证,但所有用户都有选择、插入、更新和删除的权限,因为是应用程序控制操作。
例如,一个用户可以修改文档,但前提是该文档是由该用户创建的。因此,在数据库中,用户必须具有创建更新的权限,但前提是用户是文档的所有者。我不确定是否可以使用SQL Server用户角色处理这种情况。
但问题是,所有用户都拥有对数据库的所有权限,因此他们可以使用另一个应用程序(如SQL Server Management Studio(来访问数据库并执行他们想要的操作。
因此,我考虑了使用SQL Server身份验证的选项,并可以完全访问数据库。该用户不为用户所知,因此他们不能使用其他应用程序来修改数据库。
我看到的这个解决方案的问题是,我必须将凭据存储在客户端应用程序中,我不知道这是否真的是一种安全的方法
如果使用SQL Server身份验证是一个不错的选择,那么我如何以安全的方式存储用户的凭据?
我也读过关于应用程序角色的文章,但需要将密码存储在客户端应用程序中,所以我认为我也会遇到同样的问题。此外,我看不出应用程序角色和使用SQL Server身份验证之间的区别。
总之,按照我上面解释的方式使用SQL Server身份验证是一个好的解决方案吗?如果这是一个好的选择,我如何以安全的方式存储凭据?
谢谢。
应用程序角色和使用SQL Auth的区别在于,应用程序角色密码本身不足以访问数据库。用户必须首先获得单独授权,并且可以单独监控和审核。
如何以安全的方式存储用户的凭据?
在用户是管理员的计算机上运行的客户端应用程序中使用应用程序角色(或SQL Auth(密码时,永远不会真正安全。因此,您可以在桌面虚拟化或售货亭模式的PC中运行该应用程序。
但对于许多涉及大多数受信任用户的场景,应用程序角色安全性已经足够好了,尤其是当与Windows集成身份验证相结合时,这样就可以审核用户对数据库的访问。