通过


使用 Azure PowerShell 为本地域创建 Microsoft Entra 域服务林信任

如果可能在混合环境中管理身份时,组织通常会创建一个信任关系,以提高用户协作效率,或者组织会计划合并或收购。 Microsoft Entra 域服务始终支持从托管域到另一个域的单向出站信任。 目前以预览版提供,还可以创建单向入站信任或双向信任。

例如,在无法同步密码哈希的环境中,或者拥有使用智能卡进行独占登录的用户,以便他们不知道其密码,则可以创建从 Microsoft Entra 域服务到一个或多个本地 AD DS 环境的单向出站信任。 这种信任关系可让用户、应用程序和计算机通过域服务托管域向本地域进行身份验证。 在这种情况下,永远不会同步本地密码哈希。

从域服务到本地 AD DS 的林信任关系图

在本文中,您将学习如何:

  • 使用 Azure PowerShell 创建域服务林
  • 使用 Azure PowerShell 在托管域中创建单向出站林信任
  • 在本地 AD DS 环境中配置 DNS 以支持托管域连接
  • 在本地 AD DS 环境中创建单向入站林信任
  • 测试和验证身份验证和资源访问的信任关系

如果没有 Azure 订阅,请在开始之前 创建帐户

重要

托管域林不支持 Azure HDInsight 或 Azure 文件存储。 默认托管域林确实支持这两项附加服务。

先决条件

若要完成本文,需要以下资源和权限:

登录到 Microsoft Entra 管理中心

在本文中,请使用 Microsoft Entra 管理中心从托管域创建并配置出站林信任。 若要开始,请先登录到 Microsoft Entra 管理中心

部署过程

这是一个多部分过程,用于创建托管域林以及与本地 AD DS 的信任关系。 以下高级步骤可生成受信任的混合环境:

  1. 创建托管域服务主体。
  2. 创建托管域林。
  3. 使用站点到站点 VPN 或 Express Route 创建混合网络连接。
  4. 创建信任关系中的托管域部分。
  5. 创建信任关系的本地 AD DS 端。

在开始之前,请确保了解网络注意事项、林命名和 DNS 要求。 一旦托管域林名称已部署,就无法更改。

创建 Microsoft Entra 服务主体

域服务需要服务主体从 Microsoft Entra ID 同步数据。 必须先在 Microsoft Entra 租户中创建此主体,然后再创建托管域林。

为域服务创建Microsoft Entra 服务主体,以通信和验证自身。 使用名称为“域控制器服务”的特定应用程序 ID 6ba9a5d4-8456-4118-b521-9c5ca10cdf84。 请勿更改此应用程序 ID。

使用 New-MgServicePrincipal cmdlet 创建 Microsoft Entra 服务主体:

New-MgServicePrincipal

创建托管域

若要创建托管域,请使用 New-AaddsResourceForest 脚本。 此脚本是支持托管域的更广泛的命令集的一部分。 可从 PowerShell 图库获取它们。 它们由 Microsoft Entra 工程团队进行数字签名。

  1. 首先,使用 New-AzResourceGroup cmdlet 创建资源组。 在以下示例中,资源组命名为 myResourceGroup,并在 westus 区域创建。 使用自己的名称和所需区域:

    New-AzResourceGroup `
      -Name "myResourceGroup" `
      -Location "WestUS"
    
  2. 使用 New-AaddsResourceForest cmdlet,从 PowerShell 库安装 脚本:

    Install-Script -Name New-AaddsResourceForest
    
  3. 查看 New-AaddsResourceForest 脚本所需的以下参数。 确保还具有必备的 Azure PowerShell 和 Microsoft Graph PowerShell 模块。 请确保已规划虚拟网络要求,以提供应用程序和本地连接。

    名字 脚本参数 描述
    订阅 -azureSubscriptionId 用于域服务计费的订阅 ID。 可以使用 Get-AzureRMSubscription cmdlet 获取订阅列表。
    资源组 -aaddsResourceGroupName 托管域和关联资源的资源组的名称。
    位置 -aaddsLocation 承载托管域的 Azure 区域。 有关可用区域,请参阅域服务支持的 区域。
    域服务管理员 -aaddsAdminUser 第一个托管域管理员的用户主体名称。 此帐户必须是 Microsoft Entra ID 中的现有云用户帐户。 用户和运行脚本的用户将添加到 AAD DC 管理员 组。
    域服务域名 -aaddsDomainName 托管域的 FQDN,基于前面有关如何选择林名称的指导。

    如果这些资源尚不存在,New-AaddsResourceForest 脚本可以创建 Azure 虚拟网络和域服务子网。 脚本可以选择在指定时创建工作负荷子网:

    名字 脚本参数 描述
    虚拟网络名称 -aaddsVnetName 托管域的虚拟网络的名称。
    地址空间 -aaddsVnetCIDRAddressSpace 虚拟网络的地址范围(CIDR表示法)(如果创建虚拟网络)。
    域服务子网名称 -aaddsSubnetName 托管域的 aaddsVnetName 虚拟网络的子网的名称。 不要将自己的 VM 和工作负荷部署到此子网。
    域服务地址范围 -aaddsSubnetCIDRAddressRange 域服务实例的 CIDR 表示法中的子网地址范围,例如 192.168.1.0/24。 地址范围必须由虚拟网络的地址范围包含,与其他子网不同。
    工作负荷子网名称(可选) -工作负载子网名称 在 aaddsVnetName 虚拟网络中要为自己的应用程序工作负载创建的子网的可选名称。 VM 和应用程序,也改为连接到对等互连 Azure 虚拟网络。
    工作负荷地址范围(可选) -workloadSubnetCIDRAddressRange 应用程序工作负荷的 CIDR 表示法中的可选子网地址范围,例如 192.168.2.0/24。 地址范围必须由虚拟网络的地址范围包含,与其他子网不同。
  4. 现在,使用 New-AaddsResourceForest 脚本创建托管域林。 以下示例创建名为 addscontoso.com 的林,并创建工作负载子网。 提供自己的参数名称和 IP 地址范围或现有虚拟网络。

    New-AaddsResourceForest `
        -azureSubscriptionId <subscriptionId> `
        -aaddsResourceGroupName "myResourceGroup" `
        -aaddsLocation "WestUS" `
        -aaddsAdminUser "contosoadmin@contoso.com" `
        -aaddsDomainName "aaddscontoso.com" `
        -aaddsVnetName "myVnet" `
        -aaddsVnetCIDRAddressSpace "192.168.0.0/16" `
        -aaddsSubnetName "AzureADDS" `
        -aaddsSubnetCIDRAddressRange "192.168.1.0/24" `
        -workloadSubnetName "myWorkloads" `
        -workloadSubnetCIDRAddressRange "192.168.2.0/24"
    

    创建托管域林和支持资源需要相当长的时间。 允许脚本完成。 继续进行下一部分,配置本地网络连接,同时 Microsoft Entra 林在后台进行预配。

配置和验证网络设置

随着托管域继续部署、配置和验证与本地数据中心的混合网络连接。 还需要管理 VM 才能与托管域一起使用,以便进行定期维护。 某些混合连接可能已存在于环境中,或者可能需要与团队中的其他人合作来配置连接。

在开始之前,请确保了解 网络注意事项和建议

  1. 使用 Azure VPN 或 Azure ExpressRoute 连接创建到 Azure 的本地网络的混合连接。 混合网络配置超出了本文档的范围,可能已存在于你的环境中。 有关特定方案的详细信息,请参阅以下文章:

    重要

    如果直接创建与托管域的虚拟网络的连接,请使用单独的网关子网。 不要在托管域的子网中创建网关。

  2. 若要管理托管域,请创建管理 VM,将其加入托管域,并安装所需的 AD DS 管理工具。

    部署托管域时,创建 Windows Server VM 然后 安装核心 AD DS 管理工具, 安装所需的管理工具。 请等待将管理 VM 加入托管域,直到域成功部署后再执行以下步骤之一。

  3. 验证本地网络与 Azure 虚拟网络之间的网络连接。

    • 例如,确认您的本地域控制器可以通过 ping 或远程桌面等方式连接到托管 VM。
    • 再次使用实用工具(如 ping)验证管理 VM 是否可以连接到本地域控制器。
  4. 在 Microsoft Entra 管理中心中,搜索并选择 Microsoft Entra 域服务。 选择托管域(如 aaddscontoso.com),并等待状态报告为正在运行

    运行时,更新 Azure 虚拟网络 的 DNS 设置,然后 为域服务 启用用户帐户,以完成托管域的配置。

  5. 记下概述页上显示的 DNS 地址。 在以下部分中配置信任关系的本地 Active Directory 端时,需要这些地址。

  6. 重启管理 VM 以接收新的 DNS 设置,然后 将 VM 加入托管域

  7. 将管理 VM 加入托管域后,使用远程桌面再次连接。

    在命令提示符下,使用 nslookup 和托管域资源林名称验证资源林的名称解析。

    nslookup aaddscontoso.com
    

    此命令应返回林的两个 IP 地址。

创建森林信托

林信任具有两个部分:托管域中的单向出站林信任,以及本地 AD DS 林中的单向入站林信任。 需手动创建此信任关系的两端。 创建两端后,用户和资源可以使用林信任成功进行身份验证。 托管域支持多达五个到本地林的单向出站林信任。

创建信任关系的托管域端

使用 Add-AaddsResourceForestTrust 脚本创建信任关系的托管域端。 首先,使用 Add-AaddsResourceForestTrust cmdlet 从 PowerShell Gallery 安装 脚本。

Install-Script -Name Add-AaddsResourceForestTrust

现在给出以下信息给脚本:

名字 脚本参数 描述
域服务域名 -ManagedDomainFqdn 托管域的 FQDN,例如 aaddscontoso.com
本地 AD DS 域名 -TrustFqdn 受信任林的 FQDN,如 onprem.contoso.com
信任友好名称 -TrustFriendlyName 信任关系的友好名称。
本地 AD DS DNS IP 地址 -TrustDnsIPs 列出的受信任域的 DNS 服务器 IPv4 地址的逗号分隔列表。
信任密码 -TrustPassword 信任关系的复杂密码。 在本地 AD DS 中创建单向入站信任时,还会输入此密码。
凭据 -Credentials 用于向 Azure 进行身份验证的凭据。 用户必须位于 AAD DC 管理员组中。 如果未提供,脚本会提示进行身份验证。

下面的示例创建到 onprem.contoso.com 的信任关系,名为 myAzureADDSTrust。 使用自己的参数名称和密码:

Add-AaddsResourceForestTrust `
    -ManagedDomainFqdn "aaddscontoso.com" `
    -TrustFqdn "onprem.contoso.com" `
    -TrustFriendlyName "myAzureADDSTrust" `
    -TrustDnsIPs "10.0.1.10,10.0.1.11" `
    -TrustPassword <complexPassword>

重要

请记住你的信任密码。 创建信任的本地端时,必须使用相同的密码。

在本地域中配置 DNS

若要从本地环境正确解析托管域,可能需要将转发器添加到现有的 DNS 服务器。 如果尚未将本地环境配置为与托管域通信,请从本地 AD DS 域的管理工作站完成以下步骤:

  1. 选择 开始 |管理工具 |DNS
  2. 右键单击 DNS 服务器(例如 myAD01)并选择“属性”
  3. 选择 转发器,然后 编辑 添加其他转发器。
  4. 添加托管域的 IP 地址,例如 10.0.1.410.0.1.5
  5. 在本地命令提示符下,使用托管域名的 nslookup 验证名称解析。 例如,Nslookup aaddscontoso.com 应返回托管域的两个 IP 地址。

在本地域中创建入站林信任

本地 AD DS 域需要托管域的传入林信任。 必须在本地 AD DS 域中手动创建此信任,不能从 Microsoft Entra 管理中心创建该信任。

若要在本地 AD DS 域中配置入站信任,请从本地 AD DS 域的管理工作站完成以下步骤:

  1. 选择“开始”|“管理工具”|“Active Directory 域和信任”
  2. 右键单击域(例如 onprem.contoso.com),选择 属性
  3. 然后选择“信任”选项卡,接着“新建信任”
  4. 输入托管域的名称(如 aaddscontoso.com),然后选择“下一步”
  5. 选择创建“林信任”的选项,然后选择创建“单向: 传入”信任的选项。
  6. 选择创建“仅限此域”的信任。 在下一步中,将在托管域的 Microsoft Entra 管理中心中创建信任。
  7. 选择使用 林域范围认证,然后输入并确认信任密码。 在下一部分中,还会在 Microsoft Entra 管理中心输入相同的密码。
  8. 在接下来的几个窗口中使用默认选项完成每个步骤,然后选择选项“否,不要确认传出信任”。 无法验证信任关系,因为委派的管理员帐户与托管域没有所需的权限。 此行为是设计造成的。
  9. 选择“完成

验证资源认证

可以使用以下常用方案来验证林信任是否正确对用户进行身份验证以及是否正确访问资源:

通过域服务林进行本地用户身份验证

应已将 Windows Server 虚拟机加入托管域资源域。 使用此虚拟机测试本地用户可以在虚拟机上进行身份验证。

  1. 使用远程桌面和托管域管理员凭据连接到已加入托管域的 Windows Server VM。 如果收到网络级别身份验证(NLA)错误,请检查使用的用户帐户不是域用户帐户。

    提示

    若要安全地连接到已加入 Microsoft Entra 域服务的 VM,可以在受支持的 Azure 区域中使用 Azure Bastion 主机服务

  2. 打开命令行并使用 whoami 命令显示当前经过身份验证的用户的专有名称:

    whoami /fqdn
    
  3. 以本地域中的用户身份使用 runas 命令进行身份验证。 在以下命令中,请将 userUpn@trusteddomain.com 替换为受信任本地域中某个用户的 UPN。 该命令会提示输入用户的密码:

    Runas /u:userUpn@trusteddomain.com cmd.exe
    
  4. 如果身份验证成功,将打开新的命令提示符。 新命令提示符的标题包括 running as userUpn@trusteddomain.com

  5. 在新的命令提示符中使用 whoami /fqdn 查看来自本地 Active Directory 的经过身份验证用户的专有名。

以本地用户身份访问域服务中的资源

使用已加入托管域的 Windows Server VM,可以测试当用户以本地域中的用户身份从本地域中的计算机进行身份验证时,是否可以访问林中托管的资源。 以下示例演示如何创建和测试各种常见方案。

启用文件和打印机共享

  1. 使用远程桌面和托管域管理员凭据连接到已加入托管域的 Windows Server VM。 如果收到网络级别身份验证(NLA)错误,请检查使用的用户帐户不是域用户帐户。

    提示

    若要安全地连接到已加入 Microsoft Entra 域服务的 VM,可以在受支持的 Azure 区域中使用 Azure Bastion 主机服务

  2. 打开 Windows 设置,然后搜索并选择 网络和共享中心

  3. 选择“更改高级共享设置”的选项。

  4. 域配置文件下,选择 打开文件和打印机共享,然后 保存更改

  5. 关闭 网络和共享中心

创建安全组并添加成员

  1. 打开“Active Directory 用户和计算机”

  2. 右键单击域名,选择 新建,然后选择 组织单位

  3. 在名称框中键入 LocalObjects,然后选择确定

  4. 选择并右键单击导航窗格中的 LocalObjects。 依次选择新建

  5. 组名称 框中键入 FileServerAccess。 对于组作用域,选择域本地,然后选择确定

  6. 在内容窗格中,双击 FileServerAccess。 依次选择成员添加位置

  7. 位置 视图中选择本地 Active Directory,然后选择“确定”

  8. 输入要选择的对象名称框中键入域用户。 选择检查名称,提供本地 Active Directory 的凭据,然后选择确定

    注意

    必须提供凭据,因为信任关系只是一种方式。 这意味着来自托管域的用户无法访问资源或搜索受信任(本地)域中的用户或组。

  9. 来自本地 Active Directory 的 域用户 组应是 FileServerAccess 组的成员。 选择 “确定”,保存组并关闭窗口。

创建用于跨林访问的文件共享

  1. 在加入托管域的 Windows Server VM 上,创建一个文件夹并提供名称,例如 CrossForestShare
  2. 右键单击文件夹,然后选择 属性
  3. 选择“安全”选项卡,然后选择“编辑”。
  4. CrossForestShare 的权限对话框中,选择添加
  5. 输入要选择的对象名称中键入 FileServerAccess,然后选择确定
  6. 组或用户名称列表中选择 FileServerAccess。 在“FileServerAccess 的权限”列表中,对“修改”和“写入”权限选择“允许”,然后选择“确定”。
  7. 选择“共享”选项卡,然后选择“高级共享...”
  8. 选择 共享此文件夹,然后在 共享名称 中输入一个易记的名称,如 CrossForestShare
  9. 选择“权限”。每个人的权限列表中,对更改权限选择允许
  10. 选择确定两次,然后选择关闭

验证向资源进行的跨林身份验证

  1. 使用本地 Active Directory 中的用户帐户登录到已加入本地 Active Directory 的 Windows 计算机。

  2. 使用完全限定的主机名和共享名称(例如 )通过“Windows 资源管理器”连接到你创建的共享。\\fs1.aaddscontoso.com\CrossforestShare

  3. 若要验证写入权限,请在文件夹中右键单击,选择 新建,然后选择 文本文档。 使用默认名称 新文本文档

    如果正确设置了写入权限,则会创建新的文本文档。 然后,以下步骤将根据需要打开、编辑和删除文件。

  4. 若要验证读取权限,请打开 新文本文档

  5. 若要验证修改权限,请向该文件添加文本并关闭 记事本。 当系统提示保存更改时,请选择 保存

  6. 若要验证删除权限,请右键单击 “新建文本文档” 并选择 “删除”。 选择 “是” 以确认文件删除。

更新或删除出站林信任

如果需要从托管域更新现有单向出站林,可以使用 Get-AaddsResourceForestTrustsSet-AaddsResourceForestTrust 脚本。 这些脚本在需要更新林信任友好名称或信任密码的方案中会有所帮助。 若要从托管域中删除单向出站信任,可以使用 Remove-AaddsResourceForestTrust 脚本。 必须手动删除关联本地 AD DS 林中的单向入站林信任。

更新森林信托

在正常操作中,托管域和本地林在各自之间协商定期密码更新过程。 这是正常的 AD DS 信任关系安全过程的一部分。 无需手动轮换信任密码,除非信任关系遇到问题,并且想要手动重置为已知密码。 有关详细信息,请参阅受信任的域对象密码更改

以下示例步骤演示如何更新现有信任关系(如果需要手动重置出站信任密码):

  1. 使用 Get-AaddsResourceForestTrusts cmdlet,从 Set-AaddsResourceForestTrust安装 脚本:

    Install-Script -Name Get-AaddsResourceForestTrusts,Set-AaddsResourceForestTrust
    
  2. 在更新现有信任之前,请先使用 Get-AaddsResourceForestTrusts 脚本获取信任资源。 在以下示例中,将现有信任分配给名为 existingTrust的对象。 指定自己的托管域林名称和本地林名称以进行更新:

    $existingTrust = Get-AaddsResourceForestTrust `
        -ManagedDomainFqdn "aaddscontoso.com" `
        -TrustFqdn "onprem.contoso.com" `
        -TrustFriendlyName "myAzureADDSTrust"
    
  3. 若要更新现有信任密码,请使用 Set-AaddsResourceForestTrust 脚本。 指定上一步骤中的现有信任对象,然后指定新的信任关系密码。 PowerShell 不会强制实施密码复杂性,因此请确保为环境生成和使用安全密码。

    Set-AaddsResourceForestTrust `
        -Trust $existingTrust `
        -TrustPassword <newComplexPassword>
    

删除林信任

如果不再需要从托管域到本地 AD DS 林的单向出站林信任,则可以删除它。 请确保在删除信任之前,没有应用程序或服务需要对本地 AD DS 林进行身份验证。 还必须手动删除本地 AD DS 林中的单向入站信任。

  1. 使用 Remove-AaddsResourceForestTrust cmdlet,从 PowerShell 库安装 脚本:

    Install-Script -Name Remove-AaddsResourceForestTrust
    
  2. 现在使用 Remove-AaddsResourceForestTrust 脚本删除林信任。 在下面的示例中,删除名为 aaddscontoso.com 的托管域林与本地林 onprem.contoso.com 之间名为 myAzureADDSTrust 的信任。 指定自己的托管域林名称和本地林名称以进行删除:

    Remove-AaddsResourceForestTrust `
        -ManagedDomainFqdn "aaddscontoso.com" `
        -TrustFqdn "onprem.contoso.com" `
        -TrustFriendlyName "myAzureADDSTrust"
    

若要从本地 AD DS 林中删除单向入站信任,请连接到有权访问本地 AD DS 林的管理计算机,并完成以下步骤:

  1. 选择“开始”|“管理工具”|“Active Directory 域和信任”。
  2. 右键单击域(如 onprem.contoso.com),选择 属性
  3. 选择信任选项卡,然后从托管域林中选择现有传入信任。
  4. 选择“删除”,然后确认要删除传入信任。

后续步骤

在这篇文章中,您学习了如何:

  • 使用 Azure PowerShell 创建托管域
  • 使用 Azure PowerShell 在托管域中创建单向出站林信任
  • 在本地 AD DS 环境中配置 DNS 以支持托管域连接
  • 在本地 AD DS 环境中创建单向入站林信任
  • 测试和验证身份验证和资源访问的信任关系

有关域服务中的林类型的更多概念信息,请参阅林信任在域服务中的工作原理是什么?

Connect-MgGraph:/powershell/microsoftgraph/authentication-commands

New-MgServicePrincipal: /powershell/module/microsoft.graph.applications/new-mgserviceprincipal