在特定的现有 Windows 用户下运行 GitHub Actions

在特定的现有 Windows 用户下运行 GitHub Actions

windows-latest我正在尝试在特定的、已经存在的 Windows 用户(而不是默认的)下在 GitHub 托管的 Windows 运行器 () 中运行 GHA 工作流程C:\Users\runneradmin

涉及的选项网络用户或 runas显然尝试在运行器中创建一个新的本地用户。我需要向运行器添加一个已经存在的 AD 用户,但我有点迷茫,不知道该如何查看活动目录模块。

就上下文而言,我需要以特定用户(来自特定域)的身份运行工作流程,因为流程使用分配给此特定用户的数字证书(以及名为 RedTrust 的证书管理器)。到目前为止,我一直在自托管的 Windows 计算机(AWS EC2 实例)下运行我的 GHA 工作流程,该计算机中已经存在用户,但现在我的任务是在 GitHub 托管的运行器中执行相同操作。

我曾尝试询问 IT 部门,但他们似乎对我的问题感到困惑,因此在我再次询问他们或继续尝试各种 Powershell 命令之前,我希望更广泛地了解我的问题是否有意义。

答案1

在特定的、已经存在的 Windows 用户下

它不是“已存在的用户”,因为虚拟机不是用户所在的 Active Directory 域的一部分。没有程序或 PowerShell 命令可以将单个 AD 帐户拉入非 AD 计算机。(在早期的 Windows 版本中,ksetup /mapuser可以实现类似的功能,但它远非标准程序……当涉及到完整登录时,它无论如何都需要相当于完整域加入的东西。)

要使用户存在,虚拟机需要“加入”域(配置 AD 计算机帐户)——当然还要授予通过任何防火墙访问域的 DC 的权限——此时所有 AD 用户将自动可用。尝试询问您的 IT“如何将一次性虚拟机加入 AD?”和“公司网络之外的虚拟机可以访问 AD 吗?”

只有在此之后,您才能够runas访问该域中的任何用户,而无需明确创建它,因为 Windows 会自动查找 AD 域帐户。(尽管剩下的问题是 RedTrust 是否仍会启动“runas”;它似乎是那种需要完整登录的软件——而且不是将由 GitHub 的自动化功能执行。)

未加入域的计算机仍可使用runas /netonlycmdkey /add允许本地帐户使用 AD 帐户的 Kerberos 凭据网络操作(这实际上是您所需要的;本地进程身份似乎并不相关),但同样,这更不可能与您的证书系统兼容。

所以总的来说,我认为不会有用尝试这样做。(不仅仅是因为技术原因,还因为我有一种感觉,你试图让 CI 运行器使用你自己AD 帐户……这将是一个问题。)相反,如果您的流程需要证书才能访问某些系统,请关注实际的访问需求 - 而不是实现它的特定机制。

询问您的 IT 部门“如何从非 AD 系统获取 XX 和 YY 的证书?”或“如何获取服务/批处理作业/计划任务的证书?”他们可能会为您提供其他选项,而不必通过面向常规用户的系统。

相关内容