我刚刚获得了一台安装了 SQL Server 2008 R2 的新 Windows Web Server 2008 R2 的访问权限。当我打开 SQL Server Management Studio 并尝试连接时,它使用 Windows 身份验证,但是它不会要求我输入密码,并且成功连接。
我担心(但愿不会)某些不应该访问服务器的人访问了服务器,然后可以轻松连接到 SQL Server Management Studio,甚至不需要输入密码,然后就可以访问数据库。例如,有人窃取了 Windows Web Server 登录详细信息。他们现在登录到了 Web 服务器,由于他们使用的登录详细信息表明该用户具有使用 Windows 身份验证访问 SQL Server 的权限(无需密码),因此他们可以访问数据库和数据。
这里最好的方法是什么,可以确保任何想要访问我的数据库的人都必须输入密码?
我知道我可以在 SQL Server 内部创建用户帐户并将用户分配给特定数据库(SQL Server 身份验证),但这并不能解决不应该在服务器上的用户的问题,只需选择 Windows 身份验证类型,不输入密码,即可完全访问我的数据库。
有人可以就此提出建议吗?
谢谢大家。
答案1
如果您担心数据库无法被恶意用户访问,那么您能做的并不多。如果您服务器上的 Windows 登录名被盗,他们可以轻松地将数据库置于单用户模式,无需有效凭证即可获取其中的任何内容。这就是为什么您通常会看到这样的场景:Web 层位于 DMZ 中,而数据库层位于防火墙的受信任端,两者之间只开放特定端口。
无需担心您的机器是否已打上补丁且安全可靠,不用担心如果有人入侵您的机器并拥有特权凭证,他们可能会看到您的数据库。如果他们已经到了那个地步,他们已经拥有了所需的一切。
只需选择 Windows 身份验证类型,不输入密码,即可完全访问我的数据库。
我认为你可能误解了它的工作原理。它不授予任何Windows 用户有权访问您明确允许的数据库。除非用户被授予登录 SQL Server 实例的权限,否则 Windows 用户无法直接获得该权限。我假设您可以这样做,因为您的用户帐户已被授予访问权限。
如果要查看所有具有访问权限的登录名(用户、组和 SQL 登录名),您可以运行select loginname from master.dbo.syslogins
。您可以根据谁应该被允许访问来检查此列表,以验证您是否没有意外地在不需要的地方授予权限。