限制Windows管理员的访问权限


11

正如SQL Server最佳实践所述,“ Windows身份验证模式比SQL身份验证更安全 ”。现在我想知道:有没有一种方法可以保护SQL Server免受具有Windows管理员权限的用户的侵害?


4
第六条不变的安全法则:“计算机的安全性只有管理员值得信赖。” 第2条和第10条在这里也适用。 technet.microsoft.com/library/cc722487.aspx
Dan被Firelight摆弄了

Answers:


15

没有。

如果用户是盒子的Windows管理员,请假定他们拥有盒子上的所有内容(包括SQL Server)。使用Windows管理员权限,通过假冒其他人(包括NT AUTHORITY\SYSTEM,实际上在所有本地SQL Server实例上都具有管理员权限)来绕过您应用的任何有针对性的保护(例如,标识用户名的登录触发器)都是很简单的。审计也无济于事,因为他们可以轻松地将其关闭,但是您应该以防万一。

如果您不信任某人,请不要给他们Windows管理员权限。


2
+1声称否认内建\管理员的任何东西都是蛇油
Remus Rusanu

1

不,不可能完全阻止本地管理员sysadmin访问SQL Server实例。

如果实例以单用户模式重新启动sysadmin,则即使可能没有显式登录,SQL Server也会进行硬编码以允许本地管理员特权。存在这个原因是出于恢复目的,因为可以将自己锁定在实例之外。

也就是说,在实例以多用户模式运行(没有服务中断)时限制访问并不那么困难。正如Aaron所提到的,本地管理员可以模拟NT AUTHORITY\SYSTEM,默认情况下,该模拟sysadmin在SQL Server 2008中创建了-level登录名。当服务器运行时,可以利用它来恢复sysadmin访问。(注意:在SQL Server 2012中,此登录名不再是sysadmin。。)我不知道此登录名的确切用途(大概是升级/热修复/等),但是我认为禁用它是安全的,除非在这些事件。如果没有其他无法模仿的登录名,则足以拒绝访问。同样,仅当实例正在运行时,才不会中断


0

在SQL 2008和2012中,默认情况下,Windows管理员没有默认访问SQL Server的权限。为了使Windows管理员(即域管理员或本地管理员)可以访问,需要显式授予他们的登录名访问权限或授予他们属于的组访问权限以及SQL Server本身的权限。在设置实例时,要求您指定一个Active Directory登录名或组作为管理员,但是该登录名/组可以是您域中的任何人。

在SQL 2005中,存在一个BUILTIN\Administrators具有sysadmin访问权限的组。该组将允许本地管理员sysadmin访问SQL Server。可以从SQL Server中删除该组,并认为这样做是最佳做法。

话虽这么说,没有办法防止Windows(本地或域)影响SQL Server所在的服务器。这意味着管理员仍然可以影响服务和操作系统级别的配置,更改目录安全性以及其他操作系统级别的任务。毕竟,这就是为什么他们是Windows管理员。

通常,您应该信任SQL Server和Windows的管理员。尽管Windows管理员无法在SQL Server本身内执行任务或访问数据(默认情况下),但他们仍控制着SQL Server所在的环境。您需要注意分配给那些角色的人员。


3
对此请不要过分安慰-尽管Microsoft所做的更改使它更加安全,但还远远不能达到防弹的目的。对于本地管理员而言,模拟并直接对任何本地SQL Server实例进行出价很简单 -因此,您不仅需要担心操作系统级别的间接影响,还需要担心的更多。
亚伦·伯特兰

我必须要问-在什么情况下可以授予不信任的用户管理员访问服务器的权限?
Mark Allen

我个人认为没有。正如许多其他人在其他答案中所述(此处并不太清楚)一样,您应该信任管理员。如果您不信任他们,也不要让他们成为管理员。
Mike Fal 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.