这文档包含示例:
New-ADServiceAccount service1 -DNSHostName service1.contoso.com -Enabled $true
此参数是必需的。a 的用途到底是什么DNSHostName
?我应该如何决定将其设置为多少?
答案1
答案2
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
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 在域控制器上运行服务)。
答案3
我不是这方面的专家。但是,关于这个话题的信息非常匮乏,我觉得值得发布我所知道的信息
一名教练70-411DNSHostName
当然,当他演示cmdlet 时,我使用了域控制器的 FQDN 作为参数的值New-ADServiceAccount
。据我了解,它DNSHostName
只是告诉 cmdlet 在哪个域控制器上创建帐户。我认为使用哪个 DC 并不重要,那些 gMSA 似乎无论如何都会立即复制。我一直指向DNSHostName
我的一个 DC,到目前为止它似乎正在工作。
我真希望有一些关于这方面的具体文件。适用的 TechNet 命令参考对于参数来说只是同义反复的废话DNSHostName
。
答案4
我寻找答案很长时间,终于找到了一个对我来说听起来正确的答案。
-DNSHostName 应该是保存 KDS 主密钥 - msKds-ProvRootKey 的 DC 的 FQDN。
您很可能已经创建了那个 - 请查看 AD 林的配置分区中的组密钥分发服务容器。
并且只要您在 -PrincipalsAllowedToRetrieveManagedPassword 中设置它们的名称,您就可以使用该林中的任何 DC
以上所有内容都代表“新” gMSA,因此如果您希望使用旧的 MSA,请忘记 -DNSHostName,因为那时它不是必需的,只需使用 -RestrictToSingleComputer 将帐户锁定到某个服务器即可。
希望有所帮助。