Microsoft Entra Connect:配置 AD DS 连接器帐户权限

内部版本 1.1.880.0(发布于 2018 年 8 月)中引入了名为 ADSyncConfig.psm1 的 PowerShell 模块,其中包括有助于为 Microsoft Entra Connect 部署配置正确 Active Directory 权限的 cmdlet 集合。

概述

对于选择要在 Microsoft Entra Connect 中启用的每个功能,可以使用以下 PowerShell cmdlet 设置 AD DS Connector 帐户的 Active Directory 权限。 为了防止出现任何问题,每当要使用自定义域帐户安装 Microsoft Entra Connect 以连接林时,都应提前准备 Active Directory 权限。 部署 Microsoft Entra Connect 后,此 ADSyncConfig 模块还可用于配置权限。

AD DS 帐户概述

对于 Microsoft Entra Connect 快速安装,将在 Active Directory 中创建一个具有所有必需权限的自动生成的帐户 (MSOL_nnnnnnnnnn),因此除非你已阻止对组织单位或要同步到 Azure AD 的特定 Active Directory 对象的权限继承,否则无需使用此 ADSyncConfig 模块。

权限摘要

下表提供了 AD 对象所需权限的摘要:

Feature 权限
ms DS ConsistencyGuid 功能 针对 ms-DS-ConsistencyGuid 属性的读写权限,详见设计概念 - 使用 ms-DS-ConsistencyGuid 作为 sourceAnchor
密码哈希同步
  • 复制目录更改 - 基本只读需要
  • 复制所有目录更改
  • Exchange 混合部署 针对用户、组和联系人的属性的读写权限,详见 Exchange 混合写回
    Exchange 邮件公用文件夹 Exchange 邮件公用文件夹中所述的公用文件夹属性的读取权限。
    密码写回 针对用户属性的读写权限,详见密码管理入门
    设备写回 针对设备对象和容器的读写权限,详见设备写回
    组写回 读取、创建、更新和删除同步的 Office 365 组的组对象。

    使用 ADSyncConfig PowerShell 模块

    ADSyncConfig 模块需要适用于 AD DS 的远程服务器管理工具 (RSAT),因为它依赖于 AD DS PowerShell 模块和工具。 若要安装适用于 AD DS 的 RSAT,请使用“以管理员身份运行”打开 Windows PowerShell 窗口并执行:

    Install-WindowsFeature RSAT-AD-Tools 
    

    配置

    注意

    也可以将文件 C:\Program Files\Microsoft Entra Connect\AdSyncConfig\ADSyncConfig.psm1 复制到已安装了“适用于 AD DS 的 RSAT”的域控制器,并从该控制器使用此 PowerShell 模块。 注意,某些 cmdlet 只能在托管 Microsoft Entra Connect 的计算机上运行。

    若要开始使用 ADSyncConfig,则需要在 Windows PowerShell 窗口中加载该模块:

    Import-Module "C:\Program Files\Microsoft Azure Active Directory Connect\AdSyncConfig\AdSyncConfig.psm1" 
    

    若要检查此模块中包含的所有 cmdlet,可以键入:

    Get-Command -Module AdSyncConfig  
    

    勾选标记

    每个 cmdlet 都具有相同的参数来输入 AD DS 连接器帐户和 AdminSDHolder 开关。 若要指定 AD DS 连接器帐户,可以提供帐户名称和域,或仅提供帐户可分辨名称 (DN),

    例如:

    Set-ADSyncPasswordHashSyncPermissions -ADConnectorAccountName <ADAccountName> -ADConnectorAccountDomain <ADDomainName>
    

    或;

    Set-ADSyncPasswordHashSyncPermissions -ADConnectorAccountDN <ADAccountDN>
    

    务必将 <ADAccountName><ADDomainName><ADAccountDN> 替换为适合你的环境的值。

    如果想修改 AdminSDHolder 容器的权限,请使用开关 -IncludeAdminSdHolders。 请注意,不推荐这样做。

    默认情况下,所有设定的权限 cmdlet 都将尝试在林中每个域的根上设置 AD DS 权限,这意味着运行 PowerShell 会话的用户需要林中每个域的域管理员权限。 由于此要求,建议从林根中使用企业管理员。 如果 Microsoft Entra Connect 部署具有多个 AD DS 连接器,则需要在具有 AD DS 连接器的每个林上运行相同的 cmdlet。

    还可以使用参数 -ADobjectDN(后跟要设置权限的目标对象的 DN)来设置特定 OU 或 AD DS 对象的权限。 使用目标 ADobjectDN 时,cmdlet 将仅对此对象设置权限,而不对域根或 AdminSDHolder 容器设置权限。 若所拥有的特定 OU 或 AD DS 对象已禁用权限继承,此参数非常有用(请参阅“查找已禁用权限继承的 AD DS 对象”)

    这些常用参数的例外情况是用于对 AD DS 连接器帐户本身设置权限的 Set-ADSyncRestrictedPermissions cmdlet 以及 Set-ADSyncPasswordHashSyncPermissions cmdlet,因为密码哈希同步所需的权限仅在域根中进行了设置,所以此 cmdlet 不包含 -ObjectDN-IncludeAdminSdHolders 参数。

    确定 AD DS 连接器帐户

    如果已安装 Microsoft Entra Connect 并且想要检查 Microsoft Entra Connect 当前正在使用的 AD DS 连接器帐户,则可以执行 cmdlet:

    Get-ADSyncADConnectorAccount 
    

    查找已禁用权限继承的 AD DS 对象

    如果想要检查是否存在任何已禁用权限继承的 AD DS 对象,可以运行:

    Get-ADSyncObjectsWithInheritanceDisabled -SearchBase '<DistinguishedName>' 
    

    默认情况下,此 cmdlet 将仅查找已禁用继承的 OU,但你可以在 -ObjectClass 参数中指定其他 AD DS 对象类或使用“*”查找所有对象类,如下所示:

    Get-ADSyncObjectsWithInheritanceDisabled -SearchBase '<DistinguishedName>' -ObjectClass * 
    

    查看对象的 AD DS 权限

    可以使用以下 cmdlet 来查看当前对 Active Directory 对象设置的权限列表,只需提供其 DistinguishedName 即可:

    Show-ADSyncADObjectPermissions -ADobjectDN '<DistinguishedName>' 
    

    配置 AD DS 连接器帐户权限

    配置基础只读权限

    若要在不使用任何 Microsoft Entra Connect 功能时为 AD DS 连接器帐户设置基础只读权限,请运行:

    Set-ADSyncBasicReadPermissions -ADConnectorAccountName <String> -ADConnectorAccountDomain <String> [-IncludeAdminSdHolders] [<CommonParameters>] 
    

    或;

    Set-ADSyncBasicReadPermissions -ADConnectorAccountDN <String> [-ADobjectDN <String>] [<CommonParameters>] 
    

    此 cmdlet 将设置以下权限:

    类型 名称 访问 应用于
    Allow AD DS 连接器帐户 读取所有属性 后代设备对象
    Allow AD DS 连接器帐户 读取所有属性 后代 InetOrgPerson 对象
    Allow AD DS 连接器帐户 读取所有属性 后代计算机对象
    Allow AD DS 连接器帐户 读取所有属性 后代 foreignSecurityPrincipal 对象
    Allow AD DS 连接器帐户 读取所有属性 后代组对象
    Allow AD DS 连接器帐户 读取所有属性 后代用户对象
    Allow AD DS 连接器帐户 读取所有属性 后代联系人对象
    Allow AD DS 连接器帐户 复制目录更改 仅限此对象(域根)

    配置 MS-DS-Consistency-Guid 权限

    若要在使用 ms-Ds-Consistency-Guid 属性作为源定位点(也就是“让 Azure 为我管理源定位点”选项)时为 AD DS 连接器帐户设置权限,请运行:

    Set-ADSyncMsDsConsistencyGuidPermissions -ADConnectorAccountName <String> -ADConnectorAccountDomain <String> [-IncludeAdminSdHolders] [<CommonParameters>] 
    

    或;

    Set-ADSyncMsDsConsistencyGuidPermissions -ADConnectorAccountDN <String> [-ADobjectDN <String>] [<CommonParameters>] 
    

    此 cmdlet 将设置以下权限:

    类型 名称 访问 应用于
    Allow AD DS 连接器帐户 读取/写入属性 后代用户对象

    密码哈希同步的权限

    若要在使用密码哈希同步时为 AD DS 连接器帐户设置权限,请运行:

    Set-ADSyncPasswordHashSyncPermissions -ADConnectorAccountName <String> -ADConnectorAccountDomain <String> [<CommonParameters>] 
    

    或;

    Set-ADSyncPasswordHashSyncPermissions -ADConnectorAccountDN <String> [<CommonParameters>] 
    

    此 cmdlet 将设置以下权限:

    类型 名称 访问 应用于
    Allow AD DS 连接器帐户 复制目录更改 仅限此对象(域根)
    Allow AD DS 连接器帐户 复制所有目录更改 仅限此对象(域根)

    密码写回的权限

    若要在使用密码写回时为 AD DS 连接器帐户设置权限,请运行:

    Set-ADSyncPasswordWritebackPermissions -ADConnectorAccountName <String> -ADConnectorAccountDomain <String> [-IncludeAdminSdHolders] [<CommonParameters>] 
    

    或;

    Set-ADSyncPasswordWritebackPermissions -ADConnectorAccountDN <String> [-ADobjectDN <String>] [<CommonParameters>] 
    

    此 cmdlet 将设置以下权限:

    类型 名称 访问 应用于
    Allow AD DS 连接器帐户 重置密码 后代用户对象
    Allow AD DS 连接器帐户 写入 lockoutTime 属性 后代用户对象
    Allow AD DS 连接器帐户 写入 pwdLastSet 属性 后代用户对象

    组写回的权限

    若要在使用组写回时为 AD DS 连接器帐户设置权限,请运行:

    Set-ADSyncUnifiedGroupWritebackPermissions -ADConnectorAccountName <String> -ADConnectorAccountDomain <String> [-IncludeAdminSdHolders] [<CommonParameters>] 
    

    或;

    Set-ADSyncUnifiedGroupWritebackPermissions -ADConnectorAccountDN <String> [-ADobjectDN <String>] [<CommonParameters>]
    

    此 cmdlet 将设置以下权限:

    类型 名称 访问 应用于
    Allow AD DS 连接器帐户 一般读取/写入 对象类型组和子对象的所有属性
    Allow AD DS 连接器帐户 创建/删除子对象 对象类型组和子对象的所有属性
    Allow AD DS 连接器帐户 删除/删除树对象 对象类型组和子对象的所有属性

    Exchange 混合部署的权限

    若要在使用 Exchange 混合部署时为 AD DS 连接器帐户设置权限,请运行:

    Set-ADSyncExchangeHybridPermissions -ADConnectorAccountName <String> -ADConnectorAccountDomain <String> [-IncludeAdminSdHolders] [<CommonParameters>] 
    

    或;

    Set-ADSyncExchangeHybridPermissions -ADConnectorAccountDN <String> [-ADobjectDN <String>] [<CommonParameters>] 
    

    此 cmdlet 将设置以下权限:

    类型 名称 访问 应用于
    Allow AD DS 连接器帐户 读取/写入所有用户属性 后代用户对象
    Allow AD DS 连接器帐户 读取/写入所有用户属性 后代 InetOrgPerson 对象
    Allow AD DS 连接器帐户 读取/写入所有用户属性 后代组对象
    Allow AD DS 连接器帐户 读取/写入所有用户属性 后代联系人对象

    Exchange 邮件公用文件夹的权限

    若要在使用 Exchange 邮件公用文件夹功能时为 AD DS 连接器帐户设置权限,请运行:

    Set-ADSyncExchangeMailPublicFolderPermissions -ADConnectorAccountName <String> -ADConnectorAccountDomain <String> [-IncludeAdminSdHolders] [<CommonParameters>] 
    

    或;

    Set-ADSyncExchangeMailPublicFolderPermissions -ADConnectorAccountDN <String> [-ADobjectDN <String>] [<CommonParameters>] 
    

    此 cmdlet 将设置以下权限:

    类型 名称 访问 应用于
    Allow AD DS 连接器帐户 读取所有属性 后代 PublicFolder 对象

    限制 AD DS 连接器帐户的权限

    此 PowerShell 脚本将限制以参数提供的 AD 连接器帐户的权限。 限制权限操作包括以下步骤:

    • 在指定对象上禁用继承

    • 删除特定对象上的所有 ACE(特定于 SELF 的 ACE 除外),因为对于 SELF,我们希望默认权限保持不变。

      -ADConnectorAccountDN 参数是需要限制权限的 AD 帐户。 这通常是在 AD DS 连接器中配置的 MSOL_nnnnnnnnnnnn 域帐户(请参阅“确定 AD DS 连接器帐户”)。 若要指定具有必要权限以限制目标 AD 对象的 Active Directory 权限的管理员帐户,必须使用 -Credential 参数(此帐户必须不同于 ADConnectorAccountDN 帐户)。 这通常为企业或域管理员。

    Set-ADSyncRestrictedPermissions [-ADConnectorAccountDN] <String> [-Credential] <PSCredential> [-DisableCredentialValidation] [-WhatIf] [-Confirm] [<CommonParameters>] 
    

    例如:

    $credential = Get-Credential 
    Set-ADSyncRestrictedPermissions -ADConnectorAccountDN 'CN=ADConnectorAccount,OU=Users,DC=Contoso,DC=com' -Credential $credential  
    

    此 cmdlet 将设置以下权限:

    类型 名称 访问 应用于
    允许 SYSTEM 完全控制 此对象
    允许 企业管理员 完全控制 此对象
    允许 域管理员 完全控制 此对象
    允许 管理员 完全控制 此对象
    允许 企业域控制器 列出内容 此对象
    允许 企业域控制器 读取所有属性 此对象
    允许 企业域控制器 读取权限 此对象
    允许 经过身份验证的用户 列出内容 此对象
    允许 经过身份验证的用户 读取所有属性 此对象
    允许 经过身份验证的用户 读取权限 此对象

    后续步骤