我正在考虑在 SQL Server 中使用应用程序角色我在 Microsoft MSDN 站点上阅读了以下内容: http://msdn.microsoft.com/en-us/library/ms190998.aspx
连接应用程序角色 以下步骤构成了应用程序角色切换安全上下文的过程:
用户执行客户端应用程序。
客户端应用程序以用户身份连接到 SQL Server 实例。
然后应用程序使用只有应用程序知道的密码执行 sp_setapprole 存储过程。
如果应用程序角色名称和密码有效,则应用程序角色已启用。
此时连接失去了用户的权限,承担了应用角色的权限。
我想知道,如果应用程序必须知道密码,如何最好地实现这一点。我认为将密码存储在源代码中是一种安全风险。是否有另一种安全的方法来使用应用程序部署密码(请注意,这是将部署到用户计算机的 Windows 客户端应用程序)。
最佳答案
实际上还有另一种方法可以使用应用程序部署密码。
您可以将密码作为 secret 存储在数据库本身中。
例如,使用返回此“ secret ”的存储过程或标量函数。这是您描述的逻辑中的一个附加步骤,将在应用程序使用用户凭据建立连接后立即执行。
这是可能的,因为用户无论如何都可以使用 Windows 身份验证访问数据库。 需要设置权限,以便授予用户连接数据库和可编程对象的权限仅。
要“混淆”(不安全)密码,您可以在数据库中存储加密版本并使用简单的加密/解密(如 this one )。
这种方法有以下优点:
- 密码不会以明文形式存储在任何地方(请注意,如果您不使用 SSL 加密,密码将以明文形式在网络上传输)
- 应用程序的用户无需提供任何输入
- 应用程序源代码不包含密码
- 应用部署不包含密码
- 密码可以很容易地重设,例如按计划重设
关于sql-server - SQL Server 应用程序角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16787023/