我正在研究使用SQL LocalDB作为客户端数据库,它将替代.net 4中开发的内部应用程序中的当前SQL CE 3.5数据库。
我遇到了一个不确定的问题,那就是LocalDB实例的安全设置。
如果我在.net中设置了一个脚本来创建一个私有LocalDB实例,例如(localdb)\ T1,然后在该实例中创建了一个新数据库,并添加了一个SQL用户帐户+密码(非域帐户),如何停止本地使用SSMS访问“ T1”实例+数据库的具有管理员级别特权的Windows用户(例如我自己的AD帐户)?
我可以看到一个场景,其中部署了应用程序,然后我们有一些精通IT的用户窥探了一下,决定安装SSMS并使用其Windows帐户连接到(localdb)\ T1,这将给他/她提供完全访问权限到数据库,这正是我要阻止的事情。
我们的一些员工可以在不连接域的情况下进行远程工作,因此我们向他们授予其PC的本地管理员权限,以便他们可以安装软件。因此,即使我可以阻止分配给他们的Windows登录名,也不会阻止他们设置域名。新的本地管理员帐户并使用该帐户登录,请打开SSMS,然后访问数据库。
任何对此的指针将不胜感激!
实际上,它不应该那么难。使用本地管理员帐户在客户端计算机上安装SQL Server。为了使您的生活更轻松,请使用混合身份验证。
安装实例后,应为本地管理员帐户分配sysadmin服务器角色(这是正常的安全设置)。现在,使用以下命令:
创建新的SQL Server用户,并将sysadmin服务器角色分配给该帐户。关闭SSMS并使用新凭据登录。或简单地使用一个帐户(不是很好的做法,但在这种情况下可以)。
转到“安全性-登录名”,然后从本地管理员中删除sysadmin角色。另外,签入用户映射,并从本地管理员那里“撤消”所有权限。
作为测试,尝试以本地管理员身份登录,我想您将无法登录服务器,因为该用户没有“家庭”数据库。但是,即使您可以登录,它也仅具有“公共”角色。
由您决定安装数据库并保护数据库的安全-将权限分配给您选择的用户。
关于您担心本地管理员可以再次安装MSSQL:他/她可以安装它,但这将是另一个实例。该实例对您实例中的用户一无所知,因此您应该是安全的。
您还可以考虑在SQL Server中使用应用程序角色。