为托管服务帐户设置 DNS 主机名?

Jas*_*aty 15 active-directory

文档包含示例:

New-ADServiceAccount service1 -DNSHostName service1.contoso.com -Enabled $true
Run Code Online (Sandbox Code Playgroud)

此参数是必需的。a 的目的究竟是DNSHostName什么,我应该如何决定将它设置为什么?

Sto*_*nov 10

用这些账户工作一段时间后,我想我找到了原因:

它们是机器类型帐户的某个子集,或者可能是派生的。因此,他们从他们那里继承了这个属性,并且因为它是机器类型所必需的,所以 gMSA 也需要它。

您可以检查这两种类型在它们的属性集中是否紧密匹配。同样在所有的TechNet 文档中,他们只是为这个属性提供了一个简单的唯一值gmsa-name.contoso.com,就像机器帐户拥有它一样。

不知道他们为什么不自动生成它,而不是让我们疑惑和打字。


小智 5

DNSHostName 应该是您的服务的名称。如果是集群,这将是您的虚拟实例名称。

DNSHostName 与帐户的 SPN 自动注册相关。在 Active Directory 中,计算机和 GMSA 具有“允许验证写入 ServicePrincipalName”的权限。这意味着计算机只能注册包含自身名称的 SPN。示例:名为 Webserver1(DNS:Webserver1.mydomain.net)的计算机可以自动注册 http://Webserver1.mydomain.net:443 但不能注册 http://Webserver55.mydomain.net:443

因此,GMSA 的 DNSHostName 应该反映您想要为服务注册哪些 SPN。

在 SQL 群集上,您将有 2 台主机:Host1 和 host2。集群名称:Clu1 和虚拟 SQL 实例:SQL1 如果您想使用 GMSA 来运行 SQL1 服务,您可以像这样创建它。

$comp1 = get-adcomputer Host1

$comp2 = get-adcomputer Host2
Run Code Online (Sandbox Code Playgroud)

New-ADServiceAccount -Name gmsa01 -DNSHostName sql1.mydomain.net -PrincipalsAllowedToRetrieveManagedPassword $comp1, $comp2 (您也可以使用组而不是直接为主机分配权限)。

每当 SQL 服务启动时,它会自动注册 2 个 SPN: MSSQLSvc/sql1.mydomain.net MSSQLSvc/sql1.mydomain.net:1433

如果您在 DNSHostName 中添加其他内容(例如 gmsa01.mydomain.net),该服务仍将启动,但将无法注册 SPN(并回退到 NTLM 身份验证)。

如果您不关心 Kerberos 身份验证(和 SPN),或者如果您可以为您的服务手动注册 SPN,您可以在 DNSHostName 中放入任何您想要的内容。GMSA 仍然有效。

我不建议将您的 DomainController 放在前面提到的 DNSName 中(除非您计划使用 GMSA 在域控制器上运行服务)。