0

我知道这有点基本,但如果有人能让我明白这一点,我将永远感激不尽。

  • 我有一堆运行 Hyper-V 的 Windows 2012 R2 服务器。
  • XML-RPC Web 服务在这些服务器上运行。这背后有一些托管的 Powershell。它完美地工作。
  • 托管的 Powershell 代码通过模拟运行。再次,效果很好。
  • 即使这些机器一直在一个域中,XML-RPC 身份验证的工作方式如下:

我在域中使用了句点(“.”)。我使用了用户名“管理员”。我为每个“本地”管理员帐户使用了不同的密码。

我最近在我的应用程序中添加了集群功能,这只是 Microsoft 的 Powershell cmdlet 的一些包装器的形式,加上我自己的东西。如果我正确阅读了 dcos,则只能使用域凭据管理集群。我希望我的 Web 服务在一组凭据下运行(以简化调用应用程序需要存储的详细信息)。

我以为我会像这样调整身份验证模型:

  • 每个 Hyper-V 主机都有一个域用户。
  • 确保此用户是本地管理员和 hyper-v 管理员组的成员。
  • 将这些用户添加到“集群 hyper-v 主机”组,通过集群管理工具为该组授予“集群权限”。

我的问题:

  • 当运行经过调整的模型时,我的代码已经爆炸并且不再工作,出现很多身份验证错误,我可以坐下来查看注册表中的内容并被拒绝。
  • 如果我随机选择一个主机,使用这个新域用户(需要明确的是本地管理员组的成员)登录它并在没有 xml-rpc 包装器的情况下运行我的代码,我看到很多身份验证错误. 就好像该用户没有使用管理凭据运行,即使它具有这些权限。
  • 这些用户似乎也具有受限的集群权限,即使他们应该具有完全访问权限。
  • 如果我运行“test-cluster”命令,它会告诉我我在运行它的主机上没有权限。

我愿意承认我有一个损坏的目录,或者这里有真正的访问问题,但也许我对它应该如何工作存在固有的误解。我是一名 Linux 工程师和程序员,我对 Windows 有点了解。当我没有以真正的管理员帐户登录时,我对 UAC 在此上下文中的工作方式感到有些困惑,在域环境中...如果我右键单击 Powershell 窗口并以管理员身份运行,我的代码全部似乎工作,即使是集群的东西(我被引导相信,通过文档,不应该作为本地管理员运行)。

我在这里遇到某种海拔问题吗?如果域用户具有“有效权限”(希望该术语不会混淆事物)来做一些事情,它是否仍然需要以某种方式提升?

非常感谢。

4

2 回答 2

0

将 UAC 更改为最低级别(从不通知),重新启动并重试。

于 2014-05-21T13:12:24.803 回答
0

我在从模拟的 C# 应用程序运行 powershell 时遇到了类似的问题。我使用 PowerShell Community Extensions https://pscx.codeplex.com/列出了 PowerShell 脚本中的活动权限。

将此片段添加到您的 PS 脚本中:

Import-Module Pscx
Get-Privilege

让它使用工作和非工作凭据运行,比较这些权限列表。如果您发现某些权限被禁用(但没有丢失),请尝试以这种方式启用它们:

Import-Module Pscx
$setPriv = new-object  Pscx.Interop.TokenPrivilegeCollection
$setPriv.Enable('SeTcbPrivilege')
$setPriv.Enable('SeDebugPrivilege')
Set-Privilege -Privileges $setPriv
于 2014-11-24T21:33:41.420 回答