如何将Azure AD云端用户同步至Azure虚拟网络内的虚拟机AD?
好问题!确实,Azure AD Connect本身只支持从本地AD(包括你这种部署在Azure虚拟网络VM里的AD环境)同步到Azure AD,反向同步它是完全不支持的。不过有几个可行的方案能帮你实现把Azure AD用户同步到VM里的AD,我给你详细拆解下:
方案1:用Microsoft Graph API + PowerShell编写自定义同步脚本
这是最灵活且成本最低的方案,适合有一定脚本能力的场景,步骤大概是:
- 先在Azure AD里注册一个应用程序,给它分配**
Directory.Read.All**的应用权限(需要全局管理员同意),用来读取Azure AD的用户数据。 - 在目标AD所在的VM上,确保安装了Active Directory模块(Windows Server默认自带,非Server系统可以通过RSAT工具安装)。
- 编写PowerShell脚本,核心逻辑:
- 通过Graph API获取Azure AD的用户列表(建议加过滤条件,比如只同步未在目标AD中存在的用户,避免重复创建)
- 映射Azure AD属性到目标AD的对应属性(比如
UserPrincipalName对应AD的userPrincipalName,DisplayName对应displayName,Mail对应mail等) - 使用
New-ADUser命令在目标AD中批量创建用户
- 注意事项:
- Azure AD的密码是加密存储的,无法直接导出,所以创建AD用户后需要设置临时密码,再通知用户自行重置;如果场景允许,也可以让用户在目标AD中重新设置密码。
- 可以把脚本设置成Windows定时任务,实现周期性的增量同步。
方案2:使用Microsoft Identity Manager(MIM)
如果需要更企业级、可管控的同步方案,MIM是官方推荐的工具,它支持自定义方向的同步规则:
- MIM可以同时连接Azure AD和你的VM AD作为数据源
- 你可以创建可视化的同步规则,定义从Azure AD到VM AD的用户属性映射、过滤条件(比如只同步特定安全组内的用户)
- MIM还支持密码管理功能,不过同样因为Azure AD的密码哈希无法直接导出,可能需要结合MIM的密码重置流程,让用户统一管理两边的密码
- 部署MIM需要在Azure VM上安装MIM服务器,确保它能同时访问Azure AD和目标AD的网络环境。
方案3:手动导出导入(适合小批量用户)
如果你的用户数量不多,且只是一次性同步需求,这个方法最省事:
- 在Azure AD门户中导出用户列表为CSV文件(路径:Azure AD > 用户 > 所有用户 > 导出)
- 整理CSV文件,把Azure AD的属性调整为符合目标AD的格式(比如AD的
samAccountName需要符合短命名规则) - 在目标AD的VM上,用PowerShell的
Import-Csv结合New-ADUser批量创建用户 - 缺点是无法自动同步后续的用户变更(比如用户信息更新、新用户加入),仅适合一次性迁移场景。
最后提醒下:不管用哪个方案,都建议先在测试环境中同步几个用户验证属性映射是否正确,再推广到生产环境哦。
内容的提问来源于stack exchange,提问作者user2818430
相关产品推荐
相关产品推荐

