本文介绍开箱即用的配置规则。 其中将说明这些规则及其对配置有何影响。 此外还会逐步介绍如何完成 Microsoft Entra Connect Sync 的默认配置。其目的是让读者了解名为声明性预配的配置模型在实际示例中的运行情形。 本文假设已使用安装向导安装并配置了 Microsoft Entra Connect Sync。
若要了解配置模型的详细信息,请参阅了解声明性预配
从本地到 Microsoft Entra ID 的开箱即用规则
开箱即用配置中包含以下表达式。
用户的开箱即用规则
这些规则也适用于 iNetOrgPerson 对象类型。
用户对象必须满足以下条件才进行同步:
- 必须具有 sourceAnchor。
- 在 Microsoft Entra ID 中创建对象后,sourceAnchor 无法更改。 如果值在本地更改,对象将停止同步,直到 sourceAnchor 重新改回其原先的值。
- 必须设置 accountEnabled (userAccountControl) 属性。 在本地部署的 Active Directory 中,此属性始终存在并已填充。
以下用户对象不会同步到 Microsoft Entra ID:
-
IsPresent([isCriticalSystemObject])。 确保 Active Directory 中的许多默认对象(例如内置的管理员帐户)不会同步。 -
IsPresent([sAMAccountName]) = False。 确保不会同步没有 sAMAccountName 属性的用户对象。 这种情况实际上只会发生在从 NT4 升级的域中。 -
Left([sAMAccountName], 4) = "AAD_",Left([sAMAccountName], 5) = "MSOL_"。 不要同步供 Microsoft Entra Connect Sync 及其早期版本使用的服务帐户。 - 不要同步那些在 Exchange Online 中无法工作的 Exchange 帐户。
[sAMAccountName] = "SUPPORT_388945a0"Left([mailNickname], 14) = "SystemMailbox{"(Left([mailNickname], 4) = "CAS_" && (InStr([mailNickname], "}") > 0))(Left([sAMAccountName], 4) = "CAS_" && (InStr([sAMAccountName], "}")> 0))
- 不要同步无法在 Exchange Online 中工作的对象。
CBool(IIF(IsPresent([msExchRecipientTypeDetails]),BitAnd([msExchRecipientTypeDetails],&H21C07000) > 0,NULL))
此位掩码 (&H21C07000) 将筛选掉以下对象:- 已启用邮件的公用文件夹(在版本 1.1.524.0 的预览版中)
- 系统话务员邮箱
- 邮箱数据库邮箱(系统邮箱)
- 通用安全组(不适用于用户,但由于历史原因而存在)
- 非通用组(不适用于用户,但由于历史原因而存在)
- 邮箱计划
- 搜索邮箱
-
CBool(InStr(DNComponent(CRef([dn]),1),"\\0ACNF:")>0)。 不要同步任何复制冲突对象。
适用的属性规则如下:
-
sourceAnchor <- IIF([msExchRecipientTypeDetails]=2,NULL,..)。 sourceAnchor 属性不是来自链接邮箱。 假定如果已找到链接的邮箱,随后再关联到实际帐户。 - 仅当属性 mailNickName 有值时,才同步 Exchange 的相关属性。
- 如果有多个林系,将按以下顺序使用属性:
- 与登录相关的属性(例如 userPrincipalName)来自具有已启用帐户的林。
- 可以在 Exchange GAL(全局地址列表)中找到的属性来自具有 Exchange 邮箱的林。
- 如果找不到邮箱,则这些属性可以来自任何林。
- Exchange 相关的属性(GAL 中未显示的技术属性)由
mailNickname ISNOTNULL所在的林提供。 - 如果有多个林匹配其中一个规则,将使用连接器(林)的创建顺序(日期/时间)来确定属性将由哪个林提供。 首先连接的森林也是第一个同步的森林。
联系人开箱即用规则
联系人对象必须满足以下条件才进行同步:
- 必须具有邮件属性值。
- 联系人必须是启用邮件的联系人。 这可以使用以下规则来验证:
-
IsPresent([proxyAddresses]) = True)。 必须填充 proxyAddresses 属性。 - 可在 proxyAddresses 属性或 mail 属性中找到主要电子邮件地址。 是否存在 @ 符号用于验证内容是否为电子邮件地址。 以下两条规则之一必须评估为 True。
-
(Contains([proxyAddresses], "SMTP:") > 0) && (InStr(Item([proxyAddresses], Contains([proxyAddresses], "SMTP:")), "@") > 0))。 是否有包含“SMTP:”的项,如果有,是否可在字符串中找到 @? -
(IsPresent([mail]) = True && (InStr([mail], "@") > 0)。 是否已填充邮件属性,如果是,是否可在字符串中找到 @?
-
-
以下联系人对象不会同步到 Microsoft Entra ID:
-
IsPresent([isCriticalSystemObject])。 确保不会同步标记为关键的联系人对象。 使用默认配置时不应有任何项。 -
((InStr([displayName], "(MSOL)") > 0) && (CBool([msExchHideFromAddressLists])))。 -
(Left([mailNickname], 4) = "CAS_" && (InStr([mailNickname], "}") > 0))。 这些对象无法在 Exchange Online 中起作用。 -
CBool(InStr(DNComponent(CRef([dn]),1),"\\0ACNF:")>0)。 不要同步任何复制冲突对象。
开箱即用规则分组
组对象必须满足以下条件才进行同步:
- 成员必须少于 250,000 个。 该计数为本地部署组中的成员数目。
- 如果该组在第一次同步启动之前拥有更多成员,则不会进行同步。
- 如果成员数目在组最初创建之后有所增加,在达到 250,000 个成员时,组将停止同步,直到成员数再次低于 250,000。
- 注意:Microsoft Entra ID 也强制实施 250,000 个成员身份计数。 无法同步包含更多成员的组,即使修改或删除此规则,也是如此。
- 如果组是 通讯组列表,则还必须启用邮件功能。 请参阅联系人现成规则,了解强制实施此规则的方式。
以下组对象不会同步到 Microsoft Entra ID:
-
IsPresent([isCriticalSystemObject])。 确保不会同步 Active Directory 中的多个默认对象,例如内置的管理员组。 -
[sAMAccountName] = "MSOL_AD_Sync_RichCoexistence"。 DirSync 使用的传统组。 -
BitAnd([msExchRecipientTypeDetails],&H40000000)。 角色组。 -
CBool(InStr(DNComponent(CRef([dn]),1),"\\0ACNF:")>0)。 不要同步任何复制受害对象。
ForeignSecurityPrincipal 开箱即用规则
FSP 与 Metaverse 中的“任何”(*) 对象关联。 实际上,这种联接仅针对用户和安全组发生。 这种配置可确保解析并在 Microsoft Entra ID 中正确显示跨林成员身份。
计算机开箱即用规则
计算机对象必须满足以下条件才能被同步:
-
userCertificate ISNOTNULL。 只有 Windows 10 计算机填充此属性。 所有具有此属性值的计算机对象都会被同步。
了解开箱即用的规则方案
在本示例中,将使用具有一个帐户林 (A)、一个资源林 (R) 和一个 Microsoft Entra 目录的部署。
在此配置中,假设帐户林中存在已启用的帐户,并且具有链接邮箱的资源林中存在已禁用的帐户。
我们使用默认配置的目的是:
- 与登录相关的属性将与已启用的帐户一起从林中同步。
- 可在 GAL(全局地址列表)中找到的属性会从林同步到邮箱。 如果找不到邮箱,则使用任何其他林中的邮箱对象。
- 如果找到链接的邮箱,则必须找到与其链接且已启用的帐户,该对象才能导出到 Microsoft Entra ID。
同步规则编辑器
可以使用同步规则编辑器 (SRE) 工具来查看和更改配置,可以在开始菜单中找到其快捷方式。
SRE 是一个资源套件工具,随 Microsoft Entra Connect Sync 一起安装。必须是 ADSyncAdmins 组的成员才能启动它。 该工具启动时显示以下屏幕:
此窗格中显示所有为配置创建的同步规则。 表中的每一行代表一个同步规则。 在“规则类型”下方左侧列出了两种不同的类型:“入站”和“出站”。 入站和出站是从 metaverse 的视角来看。 本概述主要介绍入站规则。 同步规则的实际列表取决于在 AD 中检测到的架构。 在上图中,帐户林 (fabrikamonline.com) 没有任何服务(如 Exchange 和 Lync),并且没有针对这些服务创建任何同步规则。 但在资源林 (res.fabrikamonline.com) 中可以找到这些服务的同步规则。 规则的内容因检测到的版本而异。 例如,在使用 Exchange 2013 的部署中,配置的属性流比在 Exchange 2010/2007 中更多。
同步规则
同步规则是一个配置对象,具有在满足条件时会流动的一组属性。 它还用于描述连接器空间中对象如何与 Metaverse 中的对象相关联,这种关系称为 联接 或 匹配。 同步规则具有优先级值,该优先级指示这些规则彼此之间的优先顺序。 数值较小的同步规则具有较高的优先级,当属性流发生冲突时,较高优先级的规则会在冲突解决中胜出。
例如,查看同步规则 从 AD 导入 - 用户 AccountEnabled。 在 SRE 中标记此行,然后选择 编辑。
由于这是一条现成的规则,因此在打开该规则时将看到警告。 您不应对现成规则进行任何更改,因此系统会询问您的意图是什么。 在本例中,我们只想要查看规则。 请选择“否”。
同步规则具有四个配置部分:描述、范围筛选器、联接规则和转换。
说明
第一部分提供名称和说明等基本信息。
还可以找到以下相关信息:此规则与哪个已连接系统相关、此规则适用于已连接系统中的哪种对象类型,以及 metaverse 对象类型。 无论源对象类型是用户、iNetOrgPerson 还是联系人,Metaverse 对象类型始终是人员。 Metaverse 对象类型应该永不更改,因此将它创建为泛型类型。 可以将链接类型设置为“加入”、“StickyJoin”或“预置”。 此设置将与“联接规则”部分协同工作,稍后介绍此方面的内容。
还可以看到此同步规则用于密码同步。如果用户在此同步规则的范围内,密码将从本地同步到云(假设已启用密码同步功能)。
范围筛选器
“范围筛选器”部分用于配置同步规则何时适用。 由于正在查看的同步规则的名称指示该规则只应应用于已启用的用户,因此对范围进行了配置,使 AD 属性 userAccountControl 不得设置第 2 位。 同步引擎在 AD 中找到用户时,如果 userAccountControl 设置为十进制值 512(已启用的普通用户),则应用此同步规则。 如果用户的 userAccountControl 设置为 514(已禁用的普通用户),则不应用该规则。
范围筛选器具有可以嵌套的组和子句。 必须满足组内所有子句的条件,才能应用同步规则。 如果定义了多个组,则要应用该规则,必须满足至少一个组的条件。 也就是说,组之间按逻辑“或”进行计算,组内按逻辑“与”进行计算。 可以在出站同步规则 出站到 Microsoft Entra ID – 组联接 中找到此配置的示例。 有多个同步筛选器组,例如,一个用于安全组 (securityEnabled EQUAL True),一个用于分发组 (securityEnabled EQUAL False)。
此规则用于定义哪些组应预配到 Microsoft Entra ID。 分发组必须已启用邮件功能,才能与 Microsoft Entra ID 同步,但对于安全组,则无需电子邮件地址。
连接规则
第三部分用于配置连接器空间中的对象与 Metaverse 中的对象之间的关系。 之前查看的规则没有任何联接规则的配置,因此,你需要查看AD 中的输入 – 用户联接。
联接规则的内容取决于在安装向导中选择的匹配选项。 对于入站规则,评估从源连接器空间中的对象开始,将按顺序对联接规则中的每个组进行评估。 如果根据某个联接规则,某个源对象的评估结果是与 Metaverse 中的某个对象完全匹配,则这两个对象将联接在一起。 如果已对所有规则进行评估但没有匹配项,则使用描述页上的“链接类型”。 如果此配置设为 Provision,则如果联接条件中至少存在一个属性(具有值),会在目标(即 Metaverse)中创建一个新对象。 将新对象预配到 metaverse 也称为将对象投影到 metaverse。
联接规则只评估一次。 当连接器空间对象与 metaverse 对象联接在一起时,只要仍然满足同步规则的范围,它们就保持联接。
评估同步规则时,必须只有一个定义了联接规则的同步规则在范围内。 如果为一个对象找到多个包含联接规则的同步规则,则会引发错误。 因此,最佳做法是,当一个对象有多个适用于该对象的同步规则时,只让一个同步规则定义了 Join。 在 Microsoft Entra Connect 同步的现成配置中,可以通过查看名称并查找在名称末尾带有单词 Join 的规则来找到这些规则。 如果另一个同步规则将对象联接在一起或在目标中预配了新对象,则未定义任何联接规则的同步规则将应用属性流。
查看上图,可以看到规则尝试将 objectSID 与 msExchMasterAccountSid (Exchange) 和 msRTCSIP-OriginatorSid (Lync) 相联接,而这正是我们在帐户资源林拓扑中所预期的。 您会发现所有森林都遵循相同的规则。 假设每个林都可以是账户林或资源林。 如果有帐户存在于单个林中且不需要加入,此配置也能正常运行。
变换
“转换”部分定义当对象已联接且满足范围筛选条件时,应用于目标对象的所有属性流。 返回到 AD 中的 In – 用户帐户已启用 同步规则,可找到以下转换:
如果将此配置放在帐户-资源林部署的上下文中,应在帐户林中找到已启用的帐户,在具有 Exchange 和 Lync 设置的资源林中找到已禁用的帐户。 查看的同步规则包含登录所需的属性,这些属性应从存在已启用帐户的林中流入。 所有这些属性流会在一个同步规则中进行组合。
转换可以具有不同类型:常量、直接和表达式。
- 常量流始终输出硬编码值。 在上例中,始终将名为 accountEnabled 的 Metaverse 属性设置为 True 值。
- 直接流始终将源中的属性值按原样传递到目标属性。
- 第三种流类型是“表达式”,它允许进行更高级的配置。
表达式语言是 VBA(Visual Basic for Applications),因此具有 Microsoft Office 或 VBScript 使用经验的用户会熟悉这种格式。 属性括在方括号内,即 [attributeName]。 属性名称和函数名称是区分大小写的,但同步规则编辑器将对表达式求值并在表达式无效时提供警告。 所有表达式都使用嵌套函数表示在一行上。 为了显示配置语言的强大功能,下面给出了 pwdLastSet 流的示例,但插入了附加注释:
// If-then-else
IIF(
// (The evaluation for IIF) Is the attribute pwdLastSet present in AD?
IsPresent([pwdLastSet]),
// (The True part of IIF) If it is, then from right to left, convert the AD time format to a .NET datetime, change it to the time format used by Azure AD, and finally convert it to a string.
CStr(FormatDateTime(DateFromNum([pwdLastSet]),"yyyyMMddHHmmss.0Z")),
// (The False part of IIF) Nothing to contribute
NULL
)
有关属性流的表达式语言的详细信息,请参阅了解声明性预配/配置表达式。
优先级
现已查看过几个不同的同步规则,但这些规则在配置中配合运行。 在某些情况下,属性值由多个同步规则提供给同一目标属性。 在此情况下,可以使用属性优先级来确定哪个属性胜出。 以属性 sourceAnchor 为例。 此属性是能否登录 Microsoft Entra ID 的重要属性。 可以在两个不同的同步规则中找到此属性的属性流: In from AD – User AccountEnabled 和 In from AD – User Common。 由于有同步规则优先级,如果有多个对象联接到 Metaverse 对象,sourceAnchor 属性将先由具有已启用帐户的林提供。 如果没有启用的帐户,同步引擎将使用 catch-all 同步规则 从 AD 导入 - 用户通用。 此配置可确保即使帐户已禁用,也仍有一个 sourceAnchor。
同步规则的优先级由安装向导按组设置。 组中的所有规则都具有相同的名称,但它们连接到不同的已连接目录。 安装向导赋予规则 In from AD – User Join 最高优先级,并循环访问所有连接的 AD 目录。 接下来,以预定义的顺序继续处理后续规则组。 在组中,以在向导中添加连接器的顺序来添加规则。 如果通过向导添加其他连接器,同步规则会重新排序,新连接器规则插到每个组中的末尾。
整合起来
我们现在对同步规则已有足够的认识,能够了解配置如何在不同的同步规则下运行。 查看某个用户和贡献到 metaverse 的属性时,会发现规则按以下顺序应用:
| 名称 | 评论 |
|---|---|
| 来自 AD – 用户加入 | 联接连接空间对象与 metaverse 的规则。 |
| In from AD – UserAccount Enabled | 登录到 Microsoft Entra ID 和 Microsoft 365 所需的属性。 我们可以从已启用的帐户获取这些属性。 |
| 来自 AD – 来自 Exchange 的用户通用 | 在全局地址列表中找到的属性。 我们假设用户邮箱所在的林具有最佳的数据质量。 |
| 来自 AD – 用户通用 | 在全局地址列表中找到的属性。 如果找不到邮箱,可由任何其他联接对象提供属性值。 |
| In from AD – User Exchange | 仅当检测到 Exchange 时才存在。 流转所有基础结构 Exchange 属性。 |
| In from AD – User Lync | 仅当检测到 Lync 时才存在。 同步所有基础结构 Lync 属性。 |
后续步骤
- 在了解声明性预配中阅读有关配置模型的详细信息。
- 在 Understanding Declarative Provisioning Expressions(了解声明性预配表达式)中了解有关表达式语言的详细信息。
- 在了解用户和联系人中继续了解开箱即用配置的工作原理
- 在如何更改默认配置中了解如何使用声明性预配进行实际更改。
主题概览