当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 在 Active Directory 中使用托管服务帐户(MSA 和 gMSA)

作者:精品下载站 日期:2024-12-14 23:02:23 浏览:14 分类:玩电脑

在 Active Directory 中使用托管服务帐户(MSA 和 gMSA)


托管服务帐户 (MSA) 是一种特殊类型的 Active Directory 帐户,可用于安全运行服务、应用程序和计划任务。基本思想是这些帐户的密码完全由 Active Directory 管理。系统会自动为他们生成长度为 240 个字符的复杂密码,并自动更改(默认情况下,每 30 天)。仅使用 Kerberos 进行身份验证(无 NTLM 安全问题),不允许交互式登录,任何人都不知道密码,并且不会存储在本地系统上(无法使用 mimikatz 或类似工具从 LSASS 系统进程中提取密码)。这样,要启动服务或无人值守作业,您无需在 AD 中创建单独的服务用户并管理其密码。

Windows Server 2008 R2 中引入了托管服务帐户(对象类型

msDS-ManagedServiceAccount

)。它们的主要限制是这样的帐户只能在一台服务器上使用(它们不能在集群和NLB服务中使用)。因此,Windows Server 2012 引入了组托管服务帐户/gMSA(类型

msDS-GroupManagedServiceAccount

)。 gMSA 帐户可以在多个主机上同时使用。

让我们考虑使用 MSA 和 gMSA 在 Active Directory 中的服务器和工作站上启动服务和任务的功能。

使用 MSA/gMSA 服务帐户的要求:

Managed Service AccountGroup Managed Service AccountAD domain and forest functional levelWindows Server 2008 R2 or newerWindows Server 2012 or newerKDCDomain controller with Microsoft Key Distribution Service (KdsSvc) enabledPowerShellTo create and manage service AD accounts, you need to install the Active Directory module for Windows PowerShell.Net Framework.NET Framework 3.5 or newer must be installed on the serverSupported Windows versionsWindows 7/Windows Server 2008 R2 or newerWindows Server 2012/Windows 8 or newer

创建密钥分发服务 (KDS) 密钥

在开始创建 MSA/gMSA 帐户之前,您必须执行一次性操作并创建 KDS 根密钥。为此,请在域控制器上运行以下 PowerShell 命令(必须安装并运行 Microsoft 密钥分发服务):

Add-KdsRootKey -EffectiveImmediately

在这种情况下,密钥将在 AD 复制结束后 10 小时内创建并可用。

提示。 要在测试环境中立即使用密钥,可以运行以下命令:

Add-KdsRootKey -EffectiveTime ((get-date).addhours(-10))

确保 KDS 根密钥已成功创建:

Get-KdsRootKey

[玩转系统] 在 Active Directory 中使用托管服务帐户(MSA 和 gMSA)

使用命令检查 KDS 密钥:

Test-KdsRootKey -KeyId (Get-KdsRootKey).KeyId

[玩转系统] 在 Active Directory 中使用托管服务帐户(MSA 和 gMSA)

如何在 Active Directory 中创建托管 MSA 帐户

要在 AD 中创建新的 MSA 托管帐户,请使用以下命令:

New-ADServiceAccount -Name msaMunSrv1 -RestrictToSingleComputer

默认情况下,MSA 和 gMSA 在容器 CN=托管服务帐户 中创建,但您可以使用路径 参数更改 OU。

将您的 MSA 服务帐户链接到目标计算机:

$Identity = Get-ADComputer -identity mun-srv01
Add-ADComputerServiceAccount -Identity $identity -ServiceAccount msaMunSrv1

请注意,您只能在一台 AD 主机上使用 MSA 帐户。

打开 ADUC(Active Directory 用户和计算机)控制台,并确保类型为 msDS-ManagedServiceAccount 的新帐户已出现在托管服务帐户容器 (OU) 中。

[玩转系统] 在 Active Directory 中使用托管服务帐户(MSA 和 gMSA)

默认情况下,此 AD 容器是隐藏的。要查看它,请在管理单元的查看菜单中启用高级功能

您可以使用以下命令获取 MSA 帐户信息:

Get-ADServiceAccount msaMunSrv1

[玩转系统] 在 Active Directory 中使用托管服务帐户(MSA 和 gMSA)

在 Active Directory 中创建组托管服务帐户 (gMSA)

在创建 gMSA 帐户之前,请创建一个域安全组并向其中添加允许使用该组服务帐户密码的服务器。创建和填充组的最简单方法是使用 PowerShell:

New-ADGroup grMunSQL1 -path 'OU=Groups,OU=Munich,OU=DE,dc=a-d,DC=com' -GroupScope Global -PassThru -Verbose
Add-AdGroupMember -Identity grMunSQL1 -Members mun-sql01$, mun-sql02$, mun-sql03$

[玩转系统] 在 Active Directory 中使用托管服务帐户(MSA 和 gMSA)

要创建组托管服务帐户 (gMSA),请使用以下命令:

New-ADServiceAccount -name gmsaMunSQL1 -DNSHostName gmsaMunSQL1.a-d.site -PrincipalsAllowedToRetrieveManagedPassword grMunSQL1 -verbose

[玩转系统] 在 Active Directory 中使用托管服务帐户(MSA 和 gMSA)

默认情况下,还会在托管服务帐户 OU 中创建 gMSA 帐户。

[玩转系统] 在 Active Directory 中使用托管服务帐户(MSA 和 gMSA)

在 Windows 上安装组托管服务帐户

要在目标服务器或工作站上使用 MSA/gMSA 服务帐户,首先需要安装 Active Directory PowerShell 模块:

Add-WindowsFeature RSAT-AD-PowerShell

在服务器上安装 MSA (gMSA) 服务帐户:

Install-ADServiceAccount -Identity gmsaMunSQL1

检查服务帐户是否安装正确:

Test-ADServiceAccount gmsaMunSQL1

如果命令返回True,则一切配置均正确。

[玩转系统] 在 Active Directory 中使用托管服务帐户(MSA 和 gMSA)

如果命令返回

False

,很可能服务器上未安装 MSA 帐户,或者该计算机没有使用它的权限:

[玩转系统] 在 Active Directory 中使用托管服务帐户(MSA 和 gMSA)

WARNING: Test failed for Managed Service Account gmsaMunSQL1. If standalone Managed Service Account, the account is linked to another computer object in the Active Directory. If group Managed Service Account, either this computer does not have permission to use the group MSA or this computer does not support all the Kerberos encryption types required for the gMSA.

您无法使用标准 RunAs 来验证您的服务和脚本是否可以在 MSA 服务帐户下运行。请改用 PsExec 工具(我们之前向您展示了如何使用 psexec 代表 NT Authority\System 运行命令提示符)。

  1. 以管理员身份打开命令提示符;

  2. 运行命令:

    PsExec64.exe -i -u a-d\gmsaMunSQL1$ -p ~ cmd.exe

    将密码替换为~。这意味着密码必须从AD获取。

  3. 在打开的cmd窗口中,运行

    whoami

    命令以确保控制台在 gMSA 帐户下运行;

    [玩转系统] 在 Active Directory 中使用托管服务帐户(MSA 和 gMSA)

  4. 验证脚本、程序或服务是否在托管服务帐户下正确运行。

现在仍然需要配置必要的 Windows 服务、任务计划程序任务、IIS 池等,以便以 MSA/gMSA 用户身份运行。

如何在托管服务帐户下运行 Windows 服务?

现在,您可以将所需的 Windows 服务配置为在 MSA/gMSA 帐户下运行。

  1. 打开服务管理控制台(

    services.msc

    );

  2. 打开所需服务的属性,然后转到“登录”选项卡;

  3. 选择此帐户选项并输入 MSA 帐户的名称。请务必在账户名末尾添加$符号(不需要输入账户密码);

  4. MSA 服务帐户将自动被授予作为服务登录权限;

    [玩转系统] 在 Active Directory 中使用托管服务帐户(MSA 和 gMSA)

  5. 保存更改后,必须重新启动服务。

要使用 gMSA 运行复杂的服务,请检查文档以了解它是否受支持。目前 SQL Server、IIS、AD LDS、Exchange Server 支持 gMSA

使用托管服务帐户/gMSA 运行计划任务

您可以将 Windows 任务计划程序配置为在 gMSA 服务帐户下运行作业。这很方便,因为 gMSA 帐户的密码不存储在脚本中,您不需要加密或保护它们。当密码更改时,您不必重新配置任务。

要向 MSA/gMSA 帐户授予权限,只需将其添加到所需的安全组即可。例如,本地管理员组、域管理员、DNS 管理员等。

您可以使用 PowerShell 将任务配置为以 gMSA 帐户运行。例如,以下脚本将创建一个新的计划任务,该任务每天晚上 11:00 运行 PowerShell 脚本来备份数据库:

$action = New-ScheduledTaskAction -Execute powershell.exe  -Argument "-file C:\PS\Scripts\DBBackup.ps1 -executionpolicy bypass -NoProfile"
$trigger = New-ScheduledTaskTrigger -At 23:00 -Daily
$principal = New-ScheduledTaskPrincipal -UserID a-d\gmsaMunSQL1$ -LogonType Password
Register-ScheduledTask DBBackup -Action $action -Trigger $trigger -Principal $principal

[玩转系统] 在 Active Directory 中使用托管服务帐户(MSA 和 gMSA)

提示。 要运行计划任务,您需要授予 gMSA 帐户“作为批处理作业登录”权限。

这 '

-LogonType Password

‘ 参数指定将从域控制器检索此 gMSA 帐户的密码。

了解有关使用 PowerShell 管理计划任务的更多信息。

您还可以使用所需的设置创建计划作业

taskschd.msc

图形用户界面。然后,您可以使用 schtasks.exe 工具将其重新配置为在托管服务帐户下运行:

schtasks /Change /TN BackupDB /RU "a-d\gmsaMunSQL1$" /RP ""

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯