排查密码写回访问权限和权限问题

本文介绍 Active Directory 中的域根目录、用户对象和 Builtin 容器中所需的访问权限和权限。 它还讨论了以下各项:

  • 所需的域组策略
  • 如何标识 Microsoft Entra Connect 使用的 Active Directory 域服务 (AD DS) 连接器帐户
  • 如何对该帐户检查现有权限
  • 如何避免复制问题

此信息有助于排查涉及密码写回的特定问题。

标识 AD DS 连接器帐户

在检查密码写回权限之前,请验证当前 AD DS 连接器帐户 (也称为 Microsoft Entra Connect 中的 MSOL_ 帐户) 。 验证此帐户有助于避免在密码写回故障排除过程中执行错误步骤。

若要标识 AD DS 连接器帐户,请执行以下操作:

  1. 打开 Synchronization Service Manager。 为此,请选择“开始”,输入“Microsoft Entra连接”,在搜索结果中选择“Microsoft Entra连接”,然后选择“同步服务”。

  2. 选择“ 连接器 ”选项卡,然后选择适用的 Active Directory 连接器。 在 “操作 ”窗格中,选择“ 属性” 以打开“ 属性 ”对话框。

  3. “属性” 窗口的左窗格中,选择“ 连接到 Active Directory 林”,然后复制显示为 “用户名”的帐户名称

检查 AD DS 连接器帐户的现有权限

若要为密码写回设置正确的 Active Directory 权限, 请使用内置的 ADSyncConfig PowerShell 模块。 ADSyncConfig 模块包括一种使用 Set-ADSyncPasswordWritebackPermissions cmdlet 设置密码写回权限的方法。

若要检查 AD DS 连接器帐户是否 (即MSOL_帐户) 具有特定用户的正确权限,请使用以下工具之一:

  • microsoft 管理控制台上的Active Directory 用户和计算机管理单元 (MMC)
  • 命令提示符
  • PowerShell

Active Directory 用户和计算机管理单元

将 MMC 管理单元用于Active Directory 用户和计算机。 请按照下列步骤操作:

  1. 选择“开始”,输入 dsa.msc,然后选择搜索结果中的Active Directory 用户和计算机管理单元。

  2. 选择“ 查看>高级功能”。

  3. 在控制台树中,找到并选择要为其检查权限的用户帐户。 然后,选择“ 属性” 图标。

  4. 在帐户的“ 属性 ”对话框中,选择“ 安全性 ”选项卡,然后选择“ 高级 ”按钮。

  5. 在帐户的“ 高级安全设置” 对话框中,选择“ 有效权限 ”选项卡。然后,在 “组或用户名 ”部分中,选择“ 选择” 按钮。

  6. “选择用户、计算机或组 ”对话框中,选择“ 立即高级>查找 ”以显示选择列表。 在“搜索结果”框中,选择MSOL_帐户名称。

  7. 选择“确定”两次以返回到“高级安全设置”对话框中的“有效权限”选项卡。 现在,可以查看分配给用户帐户的 MSOL_ 帐户的有效权限列表。 本文的用户 对象所需权限 部分显示了密码写回所需的默认权限列表。

命令提示符

使用 dsacls 命令可显示访问控制列表 (ACL 或 AD DS 连接器帐户的权限) 。 以下命令将命令输出存储在文本文件中,但可以对其进行修改以在控制台上显示输出:

dsacls "CN=User01,OU=Sync,DC=Contoso,DC=com" > dsaclsDomainContoso.txt

可以使用此方法分析任何 Active Directory 对象的权限。 但是,比较对象之间的权限并无用处,因为文本输出未排序。

PowerShell

使用 Get-Acl cmdlet 获取 AD DS 连接器帐户权限,然后使用 Export-Clixml cmdlet 将输出存储为 XML 文件,如下所示:

Set-Location AD:
Get-Acl "DC=Contoso,DC=com" | Export-Clixml aclDomainContoso.xml

PowerShell 方法可用于脱机分析。 它允许使用 Import-Clixml cmdlet 导入文件。 它还保留 ACL 及其属性的原始结构。 可以使用此方法分析任何 Active Directory 对象的权限。

修复权限时避免复制问题

修复 Active Directory 权限时,对 Active Directory 的更改可能不会立即生效。 Active Directory 权限还受到跨林复制的约束,其方式与 Active Directory 对象相同。 如何缓解 Active Directory 复制问题或延迟? 在 Microsoft Entra Connect 中设置首选域控制器,并且仅使用该域控制器进行任何更改。 使用Active Directory 用户和计算机管理单元时,右键单击控制台树中的域根目录,选择“更改域控制器”菜单项,然后选择相同的首选域控制器。

为了在 Active Directory 中快速检查,请使用 dcdiag 命令运行域控制器诊断。 然后,运行 repadmin /replsummary 命令以查看复制问题的摘要。 以下命令将命令输出存储到文本文件,不过你可以修改它们以在控制台上显示输出:

dcdiag > dcdiag.txt
repadmin /replsum > replsum.txt

Active Directory 域根目录所需的权限

本部分介绍对 Active Directory 域根目录进行密码写回的预期 Active Directory 权限。 不要将此根目录与 Active Directory 林的根目录混淆。 一个林可以有多个 Active Directory 域。 每个域必须在其自己的根目录中设置正确的权限,以便密码写回可用于该域中的用户。

可以在域根的安全属性中查看现有的 Active Directory 权限。 请按照下列步骤操作:

  1. 打开Active Directory 用户和计算机管理单元。

  2. 在控制台树中,找到并选择 Active Directory 域根目录,然后选择 “属性” 图标。

  3. 在帐户的“ 属性 ”对话框中,选择“ 安全性 ”选项卡。

以下每个子部分都包含一个域根默认权限表。 此表显示了子部分标题中的组或用户名所需的权限条目。 若要查看和修改当前权限条目以匹配每个组或用户名的要求,请针对每个子部分执行以下步骤:

  1. 在“ 安全性 ”选项卡上,选择“ 高级 ”按钮以查看“ 高级安全设置 ”对话框。 “ 权限 ”选项卡显示每个 Active Directory 标识 (主体) 的域根权限的当前列表。

  2. 将当前权限列表与每个 Active Directory 标识的默认权限列表进行比较, (主体) 。

  3. 如有必要,请选择“ 添加 ”以添加当前列表中缺少的必需权限条目。 或者,选择一个权限条目,然后选择 “编辑” 以修改该条目以满足要求。 重复此步骤,直到当前权限条目与子部分表匹配。

  4. 选择 “确定 ”以接受“ 高级安全设置” 对话框中的更改,并返回到“ 属性 ”对话框。

注意

Active Directory 域根目录的权限不继承自任何父容器。

AD DS 连接器帐户的根默认权限 (允许)

权限 应用对象
重置密码 后代用户对象
(空白) 后代 msDS-Device 对象
复制目录更改 仅限此对象
复制目录更改全部 仅限此对象
读取所有属性 后代 publicFolder 对象
读取/写入所有属性 Descendant InetOrgPerson 对象
读取/写入所有属性 后代组对象
读取/写入所有属性 后代用户对象
读取/写入所有属性 后代联系人对象

经过身份验证的用户的根默认权限 (允许)

权限 应用对象
启用每个用户可逆加密的密码 仅限此对象
取消密码 仅限此对象
更新密码不是必需的位 仅限此对象
特殊 仅限此对象
(空白) 此对象和所有后代对象

每个人的根默认权限 (拒绝 + 允许)

类型 权限 应用对象
拒绝 删除所有子对象 仅限此对象
允许 读取所有属性 仅限此对象

Windows 2000 Pre-Windows 2000 兼容访问的根默认权限 (允许)

权限 应用对象
特殊 Descendant InetOrgPerson 对象
特殊 后代组对象
特殊 后代用户对象
特殊 仅限此对象
列出内容 此对象和所有后代对象

SELF (允许) 的根默认权限

权限 应用对象
(空白) 此对象和所有后代对象
特殊 所有后代对象
已验证对计算机属性的写入 后代计算机对象
(空白) 后代计算机对象

对用户对象所需的权限

本部分介绍对必须更新密码的目标用户对象进行密码写回的预期 Active Directory 权限。 若要查看现有安全权限,请按照以下步骤显示用户对象的安全属性:

  1. 返回到Active Directory 用户和计算机管理单元。

  2. 使用控制台树或 “操作>查找 ”菜单项选择目标用户对象,然后选择“ 属性” 图标。

  3. 在帐户的“ 属性 ”对话框中,选择“ 安全性 ”选项卡。

以下每个子部分都包含一个用户默认权限表。 此表显示了子部分标题中的组或用户名所需的权限条目。 若要查看和修改当前权限条目以匹配每个组或用户名的要求,请针对每个子部分执行以下步骤:

  1. 在“ 安全性 ”选项卡上,选择“ 高级 ”按钮以查看“ 高级安全设置 ”对话框。

  2. 请确保对话框底部附近显示 “禁用继承 ”按钮。 如果改为显示 “启用继承 ”按钮,请选择该按钮。 启用继承功能允许此对象继承来自父容器和组织单位的所有权限。 此更改可解决此问题。

  3. 在“ 权限 ”选项卡上,将当前权限列表与每个 Active Directory 标识的默认权限列表进行比较, (主体) 。 “ 权限 ”选项卡显示每个 Active Directory 标识 (主体) 的用户权限的当前列表。

  4. 如有必要,请选择“ 添加 ”以添加当前列表中缺少的必需权限条目。 或者,选择一个权限条目,然后选择 “编辑” 以修改该条目以满足要求。 重复此步骤,直到当前权限条目与子部分表匹配。

  5. 选择 “确定” 接受“ 高级安全设置” 对话框中的更改,并返回到“ 属性 ”对话框。

注意

与 Active Directory 域根不同,用户对象的所需权限通常继承自域根,或者从父容器或组织单位继承。 直接在 对象上设置的权限将指示从 None 继承。 只要权限的 “类型”、“ 主体”、“ 访问”和 “应用于 ”列中的值相同, (ACE) 的访问控制项继承就不重要。 但是,只能在域根目录中设置某些权限。 子部分表中列出了这些实体。

AD DS 连接器帐户的用户默认权限 (允许)

权限 继承自 应用对象
重置密码 <域根> 后代用户对象
(空白) <域根> 后代 msDS-Device 对象
读取所有属性 <域根> 后代 publicFolder 对象
读取/写入所有属性 <域根> Descendant InetOrgPerson 对象
读取/写入所有属性 <域根> 后代组对象
读取/写入所有属性 <域根> 后代用户对象
读取/写入所有属性 <域根> 后代联系人对象

经过身份验证的用户的用户默认权限 (允许)

权限 继承自 应用对象
阅读常规信息 仅限此对象
读取公共信息 仅限此对象
读取个人信息 仅限此对象
读取 Web 信息 仅限此对象
读取权限 仅限此对象
读取 Exchange 信息 <域根> 此对象和所有后代对象

“每个人”的用户默认权限 (允许)

权限 继承自 应用对象
更改密码 仅限此对象

Windows 2000 版前兼容访问的用户默认权限 (允许)

此表中 的“特殊 权限”包括 “列出内容”、“ 读取所有属性”“读取权限 ”。

权限 继承自 应用对象
特殊 <域根> Descendant InetOrgPerson 对象
特殊 <域根> 后代组对象
特殊 <域根> 后代用户对象
列出内容 <域根> 此对象和所有后代对象

SELF (允许用户默认权限)

此表中 的“特殊 权限”仅包括 “读取/写入私人信息 ”权限。

权限 继承自 应用对象
更改密码 仅限此对象
代理发送 仅限此对象
接收为 仅限此对象
读取/写入个人信息 仅限此对象
读/写电话和邮件选项 仅限此对象
读取/写入 Web 信息 仅限此对象
特殊 仅限此对象
已验证对计算机属性的写入 <域根> 后代计算机对象
(空白) <域根> 后代计算机对象
(空白) <域根> 此对象和所有后代对象
特殊 <域根> 此对象和所有后代对象

SAM 服务器对象所需的权限

本部分介绍安全帐户管理器 (SAM) 服务器对象 (CN=Server,CN=System,DC=Contoso,DC=com) 上密码写回的预期 Active Directory 权限。 若要 (samServer) 查找 SAM 服务器对象的安全属性,请执行以下步骤:

  1. 返回到Active Directory 用户和计算机管理单元。

  2. 在控制台树中,找到并选择 “系统 ”容器。

  3. 找到并选择“ 服务器 ” (samServer 对象) ,然后选择“ 属性” 图标。

  4. 在对象的“ 属性 ”对话框中,选择“ 安全性 ”选项卡。

  5. 选择“ 高级安全设置” 对话框。 “ 权限 ”选项卡显示每个 Active Directory 标识 (主体) 的 samServer 对象权限的当前列表。

  6. 验证 samServer 对象的访问控制条目中是否至少列出了以下主体之一。 如果仅列出了 Windows 2000 之前的兼容访问 ,请确保 经过身份验证的用户 是此内置组的成员。

Windows 2000 前兼容访问的权限 (允许)

特殊 权限必须包括 “列出内容”、“ 读取所有属性”“读取”权限

经过身份验证的用户的权限 (允许)

特殊 权限必须包括 “列出内容”、“ 读取所有属性”“读取”权限

对内置容器所需的权限

本部分介绍对 Builtin 容器进行密码写回的预期 Active Directory 权限。 若要查看现有安全权限,请按照以下步骤访问内置对象的安全属性:

  1. 打开Active Directory 用户和计算机管理单元。

  2. 在控制台树中,找到并选择“ 内置 ”容器,然后选择“ 属性” 图标。

  3. 在帐户的“ 属性 ”对话框中,选择“ 安全性 ”选项卡。

  4. 选择“ 高级 ”按钮以查看“ 高级安全设置” 对话框。 “ 权限 ”选项卡显示每个 Active Directory 标识 (主体) 的内置容器权限的当前列表。

  5. 将此当前权限列表与 MSOL_ 帐户所需的允许权限列表进行比较,如下所示。

    权限 继承自 应用对象
    读取/写入所有属性 <域根> Descendant InetOrgPerson 对象
    读取/写入所有属性 <域根> 后代组对象
    读取/写入所有属性 <域根> 后代用户对象
    读取/写入所有属性 <域根> 后代联系人对象
  6. 如有必要,请选择“ 添加 ”以添加当前列表中缺少的必需权限条目。 或者,选择一个权限条目,然后选择 “编辑” 以修改该条目以满足要求。 重复此步骤,直到当前权限条目与子部分表匹配。

  7. 选择 “确定” 退出“ 高级安全设置” 对话框,并返回到“ 属性 ”对话框。

其他必需的 Active Directory 权限

“Windows 2000 之前的兼容访问 ”组属性中,转到“ 成员 ”选项卡,并确保 “经过身份验证的用户 ”是此组的成员。 否则,可能会遇到影响Microsoft Entra Connect 和 Active Directory (特别是旧版本) 的密码写回的问题。

所需的域组策略

若要确保具有正确的域组策略,请执行以下步骤:

  1. 选择“ 开始”,输入 secpol.msc,然后在搜索结果中选择“ 本地安全策略 ”。

  2. 在控制台树的 “安全设置”下,展开“ 本地策略”,然后选择“ 用户权限分配”。

  3. 在策略列表中,选择“ 身份验证后模拟客户端”,然后选择“ 属性” 图标。

  4. 在“ 属性 ”对话框中,确保“ 本地安全设置 ”选项卡上列出了以下组:

    • 管理员
    • LOCAL SERVICE
    • NETWORK SERVICE
    • SERVICE

有关详细信息,请参阅身份验证后模拟客户端策略的默认值

联系我们寻求帮助

如果你有任何疑问或需要帮助,请创建支持请求联系 Azure 社区支持。 还可以向 Azure 反馈社区提交产品反馈。