我正在对 Windows Server 2003 / 2008 环境进行一些根本性的更改。在 Unix 方面,我的安全约束很简单:
- 应具有管理员权限的用户属于特殊组(“wheel”或类似组)。
- 当这些用户登录到这些机器时,他们仍然没有管理员权限,直到他们明确地使用这些管理员权限执行命令(“sudo 命令”或“su”)。
- 即使他们确实使用“su”(有点像“runas”)执行命令,他们仍然需要输入密码:他们自己的密码。
在这个系统中,我可以控制谁拥有管理员权限(通过组成员身份),防止他们意外地以管理员权限执行某些操作(通过要求“su”或“sudo”),并且永远不会泄露核心“管理员”(即“root”)密码,因为他们需要自己输入密码。
如何在 Windows Server 上执行相同操作?我看到的选项如下:
- 将用户添加到本地管理员帐户:但是一切他们所做的是以管理员身份进行的,冒着犯错的风险。
- 要求他们执行“以管理员身份运行”:但是他们必须知道管理员密码,而我不希望密码被共享。
是否有任何解决方案可以让我同时:通过群组成员身份控制谁有访问权限;通过要求单独的密码防止他们意外地进行破坏性操作;防止他们知道管理员密码?
答案1
首先,只有管理员才能获得管理员访问权限,所以除非他们需要它有非常重要的理由(我想不出一个好的理由),否则应该把它留给管理员;普通用户很少能获得管理员权限,即使在那种情况下,我通常也怀疑他们为什么需要它。
其次,您可以使用 Windows 中的组成员身份来完成您想要做的事情。您没有说您正在使用 Active Directory,所以我不确定您是否有域并且正在这样做,但您可以创建安全组并向其中添加单个用户帐户。 看这里。 我不会将用户单独添加到服务器上的本地管理员组,因为这样会变得很混乱,以后很难跟踪,而且会给您带来很多麻烦,还可能存在安全问题。如上所述,我会创建一个安全组,并将您希望拥有管理员访问权限的成员添加到该组。您将为您的用户创建两个用户帐户;一个用于常规登录,然后第二个帐户仅用于提升操作。您将用户“更高/特权”帐户添加到安全组中,然后,您可以将该组放在实际服务器上的提升本地组成员身份中,例如高级用户。这将允许他们执行许多功能而无需管理员身份。有时该组需要本地管理员访问权限,此时您可以将该组放入服务器上的本地管理员组中。
至于以管理员身份运行,您不必一直这样做。让人们在不知道管理员或任何管理员密码的情况下运行程序的最佳方法是使用 Shift + 右键单击,然后选择以其他用户身份运行,或右键单击并选择以管理员身份运行。您首先要为他们创建一个具有更高权限或如上所述的提升权限的单独用户(此提升权限的用户将再次添加到安全组,如上所述),因为这样该用户就可以用于运行需要提升权限的程序,同时使用普通/标准用户帐户登录。看我的截图:
这应该可以解决您想要以管理员身份运行操作的问题。我最后要补充的一点是保持 UAC 处于打开状态。如果这样做,用户将需要输入他们的(提升的)密码,而不是他们在服务器上执行操作的管理员密码。当你必须多次输入密码时,这很麻烦,但为了安全起见,这是值得的。
答案2
将他们的标准帐户保留为“标准”。为他们创建一个具有特权的第二个帐户,并将其添加到各个管理组。对特权帐户使用“runas”。(您可能会发现禁用管理员帐户的交互式登录很有用,但话又说回来 - 这可能会很烦人)。
答案3
在 Server 2003 中,您需要使用Run As...
以具有管理权限的帐户身份运行的选项。
使用 Server 2008+,你使用 UAC和/或Run as Administrator
您建议的选项。这不需要知道密码即可这[本地] 管理帐户 - 任何管理凭据都可以。
因此,您需要将他们的帐户添加到本地管理组,或者从安全角度来看,最好创建单独的管理帐户并将其添加到本地管理组。然后,当他们需要以管理权限运行某些操作时,UAC 将提示输入管理凭据和/或他们会使用Run As...
/Run as Administrator
选项。