配置跨租户同步
本文介绍使用 Microsoft Entra 管理中心配置跨租户同步的步骤。 配置后,Microsoft Entra ID 会自动预配和取消预配目标租户中的 B2B 用户。 有关此服务的功能、工作原理以及常见问题的重要详细信息,请参阅使用 Microsoft Entra ID 自动将用户预配到 SaaS 应用程序和取消预配。
学习目标
学完本文后,你将能够:
- 在目标租户中创建 B2B 用户
- 在目标租户中删除 B2B 用户
- 使用户特性在源租户和目标租户之间保持同步
先决条件
源租户
- Microsoft Entra ID P1 或 P2 许可证。 有关详细信息,请参阅许可证要求。
- 用于配置跨租户访问设置的安全管理员角色。
- 用于配置跨租户同步的混合标识管理员角色。
- 用于将用户分配到某个配置和删除配置的云应用程序管理员或应用程序管理员角色。
目标租户
步骤 1:规划预配部署
步骤 2:在目标租户中启用用户同步
提示
本文中的步骤可能因开始使用的门户而略有不同。
目标租户
登录到目标租户的 Microsoft Entra 管理中心。
浏览到“标识>外部标识>跨租户访问设置”。
在“组织设置”选项卡上,选择“添加组织”。
通过键入租户 ID 或域名并选择“添加”来添加源租户。
在已添加组织的“入站访问”下,选择“继承自默认项”。
选择“跨租户同步”选项卡。
选中“允许用户同步到此租户”复选框。
选择“保存”。
如果看到“启用跨租户同步和自动兑换”对话框询问你是否要启用自动兑换,请选择“是”。
选择“是”会在目标租户中自动兑换邀请。
步骤 3:在目标租户中自动兑换邀请
目标租户
在此步骤中,你自动兑换邀请,使源租户中的用户不必接受同意提示。 必须同时在源租户(出站)和目标租户(入站)中选中此设置。 有关详细信息,请参阅自动兑换设置。
在目标租户中的同一“入站访问设置”页上,选择“信任设置”选项卡。
选中“自动兑换租户 <租户> 邀请”复选框。
如果之前在“启用跨租户同步和自动兑换”对话框中选择了“是”,则可能已选中此框。
选择“保存”。
步骤 4:在源租户中自动兑换邀请
源租户
在此步骤中,你自动在源租户中兑换邀请。
登录到源租户的 Microsoft Entra 管理中心。
浏览到“标识>外部标识>跨租户访问设置”。
在“组织设置”选项卡上,选择“添加组织”。
通过键入租户 ID 或域名并选择“添加”来添加目标租户。
在目标组织的“出站访问”下,选择“继承自默认项”。
选择“信任设置”选项卡。
选中“自动兑换租户 <租户> 邀请”复选框。
选择“保存”。
步骤 5:在源租户中创建配置
源租户
在源租户中,浏览到“标识>外部标识>跨租户同步”。
如果使用 Azure 门户,请浏览到“Microsoft Entra ID”>“管理”>“跨租户同步”。
选择“配置”。
在页面顶部,选择“新建配置”。
为配置提供一个名称,然后选择“创建”。
刚创建的配置最长可能需要 15 秒才能显示在列表中。
步骤 6:测试与目标租户的连接
源租户
在源租户中,应该会看到新的配置。 否则,请在配置列表中选择你的配置。
选择“开始”。
将“预配模式”设置为“自动”。
在“管理员凭据”部分下,将“身份验证方法”更改为“跨租户同步策略”。
在“租户 ID”框中,输入目标租户的租户 ID。
选择“测试连接”以测试连接。
应会看到一条消息,指出提供的凭据已被授权启用预配。 如果测试连接失败,请参阅本文后面的故障排除提示。
选择“保存”。
“映射”和“设置”部分随即显示。
关闭“预配”页面。
步骤 7:定义谁在预配范围中
源租户
借助 Microsoft Entra 预配服务,可通过以下一种或两种方式定义将预配的人员:
- 基于对配置的分配
- 基于用户的特性
先小部分测试。 在向所有用户推出之前,请先在少量用户中进行测试。 如果预配范围设置为分配的用户和组,可以通过将一两个用户分配到配置来控制它。 如下一步中所述,可以通过创建基于特性的范围筛选器来进一步细化属于预配范围的人员。
在源租户中选择“预配”,然后展开“设置”部分。
在“范围”列表中,选择是同步源租户中的所有用户,还是仅同步分配到配置的用户。
建议选择“仅同步已分配的用户和组”,而不是“同步所有用户和组”。 减少范围内的用户数可以提高性能。
如果进行了任何更改,请选择“保存”。
在“配置”页面上,选择“用户和组”。
若要使跨租户同步工作,必须向配置分配至少一个内部用户。
选择“添加用户/组”。
在“添加分配”页面中,选择“用户和组”下的“未选择任何内容”。
在“用户和组”窗格中,搜索并选择要向配置分配的一个或多个内部用户或组。
如果你选择了一个要向配置分配的组,则只有属于该组中直接成员的用户才会在预配范围内。 可以选择静态组或动态组。 该分配不会级联到嵌套组。
选择“选择” 。
选择“分配”。
有关详细信息,请参阅向应用程序分配用户和组。
步骤 8:(可选)使用范围筛选器定义属于预配范围的人员
源租户
无论在上一步中对“范围”选择的值如何,你都可以通过创建基于特性的范围筛选器来进一步限制同步的用户。
在源租户中选择“预配”,然后展开“映射”部分。
选择“预配 Microsoft Entra ID 用户”以打开“属性映射”页面。
在“源对象范围”下,选择“所有记录”。
在“源对象范围”页面上,选择“添加范围筛选器”。
添加任何范围筛选器,定义哪些用户属于预配范围内。
若要配置范围筛选器,请参阅使用范围筛选器确定要预配的用户或组的范围中提供的说明。
依次选择“确定”和“保存”,保存所做的全部更改。
如果添加了一个筛选器,你将看到一条消息,指出保存更改将导致重新同步所有已分配的用户和组。 这可能需要很长的时间,具体取决于目录的大小。
选择“是”并关闭“特性映射”页面。
步骤 9:查看特性映射
源租户
通过特性映射,可以定义数据在源租户和目标租户之间的流动方式。 有关如何自定义默认特性映射的信息,请参阅教程 - 在 Microsoft Entra ID 中为 SaaS 应用程序自定义用户预配特性映射。
在源租户中选择“预配”,然后展开“映射”部分。
选择“预配 Microsoft Entra ID 用户”。
在“特性映射”页面上,在“特性映射”部分向下滚动以查看租户之间同步的用户特性。
第一个属性 alternativeSecurityIdentifier 是一个内部属性,用于跨租户唯一标识用户、将源租户中的用户与目标租户中的现有用户匹配,并确保每个用户只有一个帐户。 无法更改匹配的属性。 尝试更改匹配属性或添加其他匹配属性将导致
schemaInvalid
错误。选择“成员(userType)”属性以打开“编辑属性”页面。
查看“userType”特性的“常量值”设置。
此设置定义将在目标租户中创建的用户类型,可以是下表中的值之一。 默认情况下,用户将创建为外部成员(B2B 协作用户)。 有关详细信息,请参阅 Microsoft Entra B2B 协作用户的属性。
常量值 说明 成员 默认。 用户将创建为目标租户中的外部成员(B2B 协作用户)。 用户将能够充当目标租户的任何内部成员。 来宾 用户将创建为目标租户中的外部来宾(B2B 协作用户)。 注意
如果目标租户中已存在 B2B 用户,则“成员(userType)”不会更改为“成员”,除非将“应用此映射”设置设为“始终”。
所选用户类型具有以下应用或服务限制(但不限于):
应用或服务 限制 Power BI - Power BI 中对 UserType 成员的支持目前为预览版。 有关详细信息,请参阅使用 Microsoft Entra B2B 将 Power BI 内容分发给外部来宾用户。 Azure 虚拟桌面 - Azure 虚拟桌面不支持外部成员和外部来宾。 如果要定义任何转换,在“特性映射”页面上选择要转换的特性,例如“displayName”。
将“映射类型”设置为“表达式”。
在“表达式”框中,输入转换表达式。 例如,对于显示名称,可以执行以下操作:
- 颠倒名字和姓氏,并在中间加一个逗号。
- 在显示名称末尾添加一个括在括号中的域名。
提示
可以通过更新跨租户同步的架构来映射目录扩展。 有关详细信息,请参阅在跨租户同步中映射目录扩展。
步骤 10:指定其他预配设置
源租户
在源租户中选择“预配”,然后展开“设置”部分。
选中“发生故障时发送电子邮件通知”复选框。
在“通知电子邮件”框中输入应接收预配错误通知的人员或组的电子邮件地址。
电子邮件通知在作业进入隔离状态的 24 小时内发送。 有关自定义警报,请参阅了解预配与 Azure Monitor 日志的集成方式。
若要防止意外删除,请选择“防止意外删除”并指定阈值。 默认情况下,阈值设置为 500。
有关详细信息,请参阅在 Microsoft Entra 预配服务中启用意外删除防护。
选择“保存” 以保存所有更改。
步骤 11:测试按需预配
源租户
完成配置后,可以使用其中一个用户测试按需预配。
在源租户中,浏览到“标识>外部标识>跨租户同步”。
选择“配置”,然后选择你的配置。
选择“按需预配”。
在“选择用户或组”框中,搜索并选择一个测试用户。
选择“预配”。
片刻后,将显示“执行操作”页面,其中包含有关在目标租户中预配测试用户的信息。
如果用户不在范围内,你将看到一个页面,其中包含有关跳过测试用户的原因的信息。
在“按需预配”页面上,可以查看有关预配的详细信息,并可以选择“重试”。
在目标租户中,验证已预配测试用户。
如果一切按预期工作,请将其他用户分配到配置。
有关详细信息,请参阅 Microsoft Entra ID 中的按需预配。
步骤 12:启动预配作业
源租户
预配作业对“设置”部分的“范围”中定义的所有用户启动初始同步周期。 初始周期执行的时间比后续周期长,只要 Microsoft Entra 预配服务正在运行,后续周期大约每 40 分钟就会进行一次。
步骤 13:监视预配
源租户和目标租户
启动预配作业后,可以监视其状态。
在源租户的“概述”页面上,检查进度栏来查看预配周期的状态以及完成进度。 有关详细信息,请参阅检查用户预配状态。
如果预配疑似处于非正常状态,配置将进入隔离状态。 有关详细信息,请参阅隔离状态本地的应用程序预配。
选择“预配日志”来确定预配成功或预配失败的用户。 默认情况下,日志按配置的服务主体 ID 进行筛选。 有关详细信息,请参阅 Microsoft Entra ID 中的预配日志。
选择“审核日志”,查看 Microsoft Entra ID 中记录的所有事件。 有关详细信息,请参阅 Microsoft Entra ID 中的审核日志。
还可以查看目标租户中的审核日志。
在目标租户中,选择“用户”>“审核日志”,查看记录的事件进行用户管理。
步骤 14:配置离开设置
目标租户
即使用户是在目标租户中预配的,他们仍然能够删除自己。 如果用户删除了自己,并且他们处于范围内,则会在下一个预配周期中再次预配这些用户。 如果要使用户无法从你的组织中删除自己,则必须配置“外部用户离开设置”。
在目标租户中,浏览到“标识”>“外部标识”>“外部协作设置”。
在“外部用户离开设置”下,选择是否允许外部用户自行离开组织。
此设置也适用于 B2B 协作和 B2B 直连,因此,如果你将“外部用户离开设置”设置为“否”,B2B 协作用户和 B2B 直连用户将无法自行离开组织。 有关详细信息,请参阅以外部用户身份离开组织。
故障排除提示
删除配置
按照以下步骤在“配置”页上删除配置。
常见场景和解决方案
症状 - 测试连接失败并出现 AzureDirectoryB2BManagementPolicyCheckFailure
在源租户中配置跨租户同步并测试连接时,连接失败并出现以下错误消息:
You appear to have entered invalid credentials. Please confirm you are using the correct information for an administrative account.
Error code: AzureDirectoryB2BManagementPolicyCheckFailure
Details: Policy permitting auto-redemption of invitations not configured.
原因
此错误表示未设置在源租户和目标租户中自动兑换邀请的策略。
解决方案
按照步骤 3:在目标租户中自动兑换邀请和步骤 4:在源租户中自动兑换邀请中的步骤操作。
症状 -“自动兑换”复选框处于禁用状态
配置跨租户同步时,“自动兑换”复选框处于禁用状态。
原因
你的租户没有 Microsoft Entra ID P1 或 P2 许可证。
解决方案
必须具有 Microsoft Entra ID P1 或 P2 才能配置信任设置。
症状 - 目标租户中最近删除的用户未还原
在目标租户中软删除一个同步的用户后,下一个同步周期中未还原该用户。 如果你尝试使用按需预配来软删除某用户,再还原该用户,这可能会导致用户重复。
原因
不支持在目标租户中还原以前软删除的用户。
解决方案
在目标租户中手动还原软删除的用户。 有关详细信息,请参阅使用 Microsoft Entra ID 还原或删除最近删除的用户。
症状 - 由于用户启用了短信登录,因此跳过用户
从同步中跳过用户。 范围步骤包括以下状态为 false 的筛选器:“筛选外部用户.alternativeSecurityIds EQUALS 'None'”
原因
如果为用户启用了短信登录,则预配服务会跳过这些用户。
解决方案
为用户禁用短信登录。 以下脚本演示如何使用 PowerShell 禁用短信登录。
##### Disable SMS Sign-in options for the users
#### Import module
Install-Module Microsoft.Graph.Users.Actions
Install-Module Microsoft.Graph.Identity.SignIns
Import-Module Microsoft.Graph.Users.Actions
Connect-MgGraph -Scopes "User.Read.All", "Group.ReadWrite.All", "UserAuthenticationMethod.Read.All","UserAuthenticationMethod.ReadWrite","UserAuthenticationMethod.ReadWrite.All"
##### The value for phoneAuthenticationMethodId is 3179e48a-750b-4051-897c-87b9720928f7
$phoneAuthenticationMethodId = "3179e48a-750b-4051-897c-87b9720928f7"
#### Get the User Details
$userId = "objectid_of_the_user_in_Entra_ID"
#### validate the value for SmsSignInState
$smssignin = Get-MgUserAuthenticationPhoneMethod -UserId $userId
if($smssignin.SmsSignInState -eq "ready"){
#### Disable Sms Sign-In for the user is set to ready
Disable-MgUserAuthenticationPhoneMethodSmsSignIn -UserId $userId -PhoneAuthenticationMethodId $phoneAuthenticationMethodId
Write-Host "SMS sign-in disabled for the user" -ForegroundColor Green
}
else{
Write-Host "SMS sign-in status not set or found for the user " -ForegroundColor Yellow
}
##### End the script
症状 - 用户无法预配,并出现错误 AzureActiveDirectoryForbidden
范围内的用户无法预配。 预配日志详细信息包括以下错误消息:
Guest invitations not allowed for your company. Contact your company administrator for more details.
原因
此错误指示目标租户中的来宾邀请设置配置了限制最多的设置:“组织中的任何人都不能邀请包括管理员在内的来宾用户(限制最严格)”。
解决方案
将目标租户中的来宾邀请设置更改为限制较少的设置。 有关详细信息,请参阅配置外部协作设置。
症状 - 用户主体名称不会为处于挂起接受状态的现有 B2B 用户进行更新
首次通过手动 B2B 邀请邀请用户时,邀请将发送到源用户电子邮件地址。 因此,目标租户中的来宾用户是使用源邮件值属性使用用户主体名称 (UPN) 前缀创建的。 有一些环境,源用户对象属性 UPN 和 Mail 具有不同的值,例如 Mail == user.mail@domain.com 和 UPN == user.upn@otherdomain.com。 在这种情况下,将使用 UPN 作为 user.mail_domain.com#EXT#@contoso.onmicrosoft.com 创建目标租户中的来宾用户。
当源对象被置于跨租户同步的范围内时,问题就出现了,除了其他属性外,目标访客用户的 UPN 前缀也会更新,以匹配源用户的 UPN(使用上面的示例,其值为:user.upn_otherdomain.com#EXT#@contoso.onmicrosoft.com)。 但是,这在增量同步周期期间不会发生,更改将被忽略。
原因
当手动邀请到目标租户 B2B 用户不接受或兑换邀请时,会出现此问题,因此其状态处于待接受状态。 通过电子邮件邀请用户时,会创建一个对象,其中包含一组从邮件填充的属性,其中一个属性就是 UPN,它指向源用户的邮件值。 如果以后决定将用户添加到跨租户同步的范围,系统将尝试基于 alternativeSecurityIdentifier 属性将源用户与目标租户中的 B2B 用户联接,但之前创建的用户没有填充 alternativeSecurityIdentifier 属性,因为邀请未兑换。 因此,系统不会将此视为新的用户对象,也不会更新 UPN 值。 以下情况下不会更新用户主体名称:
- 手动邀请用户时,UPN 和邮件是不同的。
- 在启用跨租户同步之前,已邀请用户。
- 用户从未接受邀请,因此它们处于“挂起接受状态”。
- 将用户引入跨租户同步的范围。
解决方案
若要解决此问题,请针对受影响的用户运行按需预配以更新 UPN。 还可以重启预配,为所有受影响的用户更新 UPN。 请注意,这会触发初始周期,对于大型租户来说可能需要很长时间。 若要获取处于挂起接受状态的手动受邀用户列表,可以使用脚本,请参阅以下示例。
Connect-MgGraph -Scopes "User.Read.All"
$users = Get-MgUser -Filter "userType eq 'Guest' and externalUserState eq 'PendingAcceptance'"
$users | Select-Object DisplayName, UserPrincipalName | Export-Csv "C:\Temp\GuestUsersPending.csv"
然后,可以为每个用户使用 PowerShell 的 provisionOnDemand。 此 API 的速率限制是每 10 秒 5 个请求。 有关详细信息,请参阅按需预配的已知限制。