我在ASP.net应用程序中使用集成安全性,IIS和SQL Server都托管在运行Windows Server 2008 R2的同一台服务器上。
是否可以允许用户通过网络访问应用程序并登录用户但不允许他们直接或通过SQL Server Management Studio访问数据库?
我正在尝试保护数据库访问,因为我的应用程序将部署在客户端的客户端服务器上。
这是我目前正在使用的连接字符串
<add connectionString="Server=.\sqlexpress;Database=DB89akwA;Integrated Security=true" name="LocalSqlServer" providerName="System.Data.SqlClient" />
<add connectionString="Server=.\sqlexpress;Database=DB89akwA;Integrated Security=true" name="MainAppConnectionString" providerName="System.Data.SqlClient" />
这是我目前使用的两个连接字符串,一个用于ASP.net身份验证,第二个用于我的应用程序。这两个字符串都是相同的,并且是相同的数据库。
有什么建议吗?
答案 0 :(得分:2)
无法“保护”在客户端运行的数据库。客户的工作人员可以从ASP.Net连接字符串中获取密码。域管理员可以始终获得对数据库的访问权限(有一篇实际的MSDN文章描述了该过程:Connect to SQL Server When System Administrators Are Locked Out)。
如果您想隐藏您认为数据库所具有的知识产权,那么您唯一的解决方案就是不在客户端内部部署数据库(例如使用SQL Azure等托管数据库)。
如果您只是想阻止客户端干扰数据库,您可以在合同中规定。审核和检测干扰 是可能的。
答案 1 :(得分:-2)
是的,这是完全可能的。使用集成安全性登录到ASP.NET的人员无法使用相同的凭据登录到SQL Server。两者都完全断开了。只有将SQL Server设置为允许它们访问才有可能。
我的建议是创建SQL登录和用户,并且只授予他们访问SQL Server的权限。在您的应用程序中,当您创建连接字符串时,不要将集成安全性设置为true,只需让用户输入他的Sql用户名和密码即可访问数据库。