MusahIssah/Automated-AD-User-Provisioning-Lab.

GitHub: MusahIssah/Automated-AD-User-Provisioning-Lab.

一个完整的Microsoft混合身份实验室构建项目,记录了从本地AD用户同步到Entra ID并启用MFA的全过程及故障排除经验。

Stars: 0 | Forks: 0

# Azure AD 混合身份实验室 ### 项目 5 — IT 支持作品集系列 ## 项目概述 本实验记录了完整的 **Microsoft Entra ID (Azure AD) 混合身份环境**构建过程——将 51 个本地 Active Directory 用户从运行在 Hyper-V 上的 Windows Server 2022 域控制器同步到 Microsoft Azure Entra ID,并通过安全默认值强制执行 MFA。 这是一个真实的家庭实验室构建——包括我遇到的错误、诊断方法和修复方法。每张截图都是真实的。 ## 架构 ``` ┌─────────────────────────────────┐ ┌──────────────────────────────────┐ │ ON-PREMISES (Hyper-V) │ │ MICROSOFT AZURE CLOUD │ │ │ │ │ │ Windows Server 2022 (DC-01) │ │ Microsoft Entra ID │ │ Domain: company.org │◄───────►│ Tenant: musahissahghoutlook │ │ 51 AD Users across OUs: │ Entra │ .onmicrosoft.com │ │ - Finance │ Connect │ │ │ - IT-DEPT │ Sync │ 54 Users (51 synced + 3 cloud) │ │ - Sales │ │ Security Defaults: ENABLED │ │ - Users │ │ MFA: ENFORCED for all users │ └─────────────────────────────────┘ └──────────────────────────────────┘ ``` ## 使用的技术 | 技术 | 用途 | |---|---| | Windows Server 2022 (Hyper-V) | 本地域控制器 | | Active Directory 域服务 | 身份源 — 51 个用户 | | Microsoft Entra Connect Sync v2.6.3.0 | 混合身份同步引擎 | | Microsoft Entra ID (Azure AD) | 云身份平台 | | Microsoft Azure(免费层) | 云基础设施 | | PowerShell | 自动化和同步管理 | | 安全默认值 | 强制所有用户使用 MFA | ## 我的构建过程 — 分阶段说明 ### 阶段 1 — Azure 租户设置 - 创建了 Microsoft Azure 免费账户 - 以全局管理员身份访问 Microsoft Entra 管理中心 - 在本地 Active Directory 域和信任中添加了 `musahissahghoutlook.onmicrosoft.com` 作为备用 UPN 后缀 - 将测试用户 `arobinson` 的 UPN 更新为 `arobinson@musahissahghoutlook.onmicrosoft.com` - 在 Entra ID 自定义域名中验证域状态为 **可用** **截图:** Azure 门户 → Entra 管理中心 → 域已验证 ![Azure 门户设置](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/3582d289e3091943.png) ![Entra 管理中心](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/66ccc98b38091945.png) ![域已验证](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/d6afbe9254091946.png) ### 阶段 2 — UPN 后缀配置 - 在 DC-01 上打开 Active Directory 域和信任 - 添加 `musahissahghoutlook.onmicrosoft.com` 作为备用 UPN 后缀 - 在 ADUC 中更新用户账户以使用新的 UPN 后缀 - 这一步至关重要——如果不匹配 UPN 后缀,用户可以同步但无法登录 Azure ![UPN 后缀已添加](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/45413da06d091947.png) ![用户 UPN 已更新](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/225841dfd7091949.png) ### 阶段 3 — Microsoft Entra Connect 安装 - 从 Entra 管理中心下载了 Entra Connect v2.6.3.0(不是 Microsoft 下载中心——2025 年已更改) - 运行自定义安装向导,选择密码哈希同步 - 连接本地林 `company.org` — 配置了具有复制权限的 MSOL 服务账户 - 选择的 OU:Finance、IT-DEPT、Sales、Users(排除 Builtin、Computers、域控制器) - 通过选择"继续而不匹配所有 UPN 后缀"来跳过 UPN 不匹配警告 ![连接目录](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/efe1c067ed091950.png) ![Entra 登录配置](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/bbdd4aa7af091951.png) ![配置完成](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/8d33a6a07d091952.png) ### 阶段 4 — 同步验证 - 在 DC-01 上打开同步服务管理器 - 确认两个连接器上共有 18 次成功同步运行 - 验证 Entra ID 中有 54 个用户 — 所有用户的 **已启用本地同步:是** - 所有 OU 中的用户均已成功同步 ![同步服务管理器](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/bc0cfa50fd091954.png) ![Azure 中已同步的用户](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/c8bafe3314091958.png) ### 阶段 5 — 通过安全默认值强制执行 MFA - 在 Entra ID → 属性中启用了安全默认值 - 安全默认值强制执行: - 首次云登录时所有用户都需要 MFA - 管理员账户始终需要 MFA - 阻止传统身份验证 - 所有用户必须在 14 天内注册 MFA - 测试了 MFA 强制执行:以同步用户 `arobinson` 登录 — 立即收到 MFA 设置提示 ![MFA 提示正常工作](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/39001ebd01092002.png) ## 我遇到的错误及修复方法 这是本仓库最有价值的部分。真实项目会遇到真实问题。 ### 错误 1 — AADSTS50020:Entra Connect 中使用了错误的账户类型 **发生了什么:** 当 Entra Connect 向导要求连接 Microsoft Entra ID 时,我输入了我的个人 Outlook 账户(`musah.issah.gh@outlook.com`)。收到错误:`User account from identity provider 'live.com' does not exist in tenant 'Microsoft Services'` **根本原因:** Entra Connect 需要一个仅限云的 Entra ID 工作账户——而不是个人 Microsoft/Outlook 账户。 **修复方法:** 在 Entra 租户内直接创建了一个具有全局管理员角色的专用管理员账户 `syncadmin@musahissahghoutlook.onmicrosoft.com`,然后在向导中使用该账户。 **经验教训:** 始终使用仅限云的 `@yourtenant.onmicrosoft.com` 账户进行 Entra Connect——切勿使用个人 Microsoft 账户。 ### 错误 2 — M365 开发沙盒不可用 **发生了什么:** 尝试注册 Microsoft 365 开发者计划以获取免费的 E5 租户和条件访问。收到消息:`"You don't currently qualify for a Microsoft 365 Developer Program sandbox subscription."` **根本原因:** Microsoft 在 2024-2025 年收紧了资格条件。没有 GitHub 或 Visual Studio 上活跃开发活动的账户通常会被拒绝。 **修复方法:** 使用现有的 Azure 免费账户租户。每个 Azure 账户附带的 Entra ID 免费层足以运行 Entra Connect 和同步用户。对于 MFA,使用安全默认值(无需许可证)而不是条件访问(需要 P1/P2)。 **经验教训:** M365 开发者沙盒拒绝非常常见。Azure 免费租户非常适合混合身份实验室。安全默认值提供等效的免费 MFA 基线保护。 ![M365 沙盒被拒绝](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/302fb6fb61092003.png) ### 错误 3 — AADSTS700016:应用注册在错误的租户中失败 **发生了什么:** 在最后配置步骤期间,Entra Connect 尝试在租户中注册自身但失败:`Application with identifier '0ca877e8...' was not found in the directory 'Microsoft Services'` **根本原因:** 向导仍使用之前失败尝试中的个人 Outlook 账户进行身份验证。应用注册尝试进入 `Microsoft Services`(个人账户租户)而不是我的实际 Entra 租户。 **修复方法:** 1. 从 Azure → 应用注册 → 所有应用程序中找到并删除了孤立的应用程序注册 2. 正确创建了 `syncadmin@musahissahghoutlook.onmicrosoft.com` 账户 3. 让该账户登录 Azure 门户并完成密码激活 4. 使用 syncadmin 账户重新运行 Entra Connect 向导 — 成功完成 **经验教训:** 当 Entra Connect 安装中途失败时,始终在重新运行之前清理孤立的应用程序注册。检查 Azure → 应用注册 → 所有应用程序,查找在失败运行日期创建的任何条目。 ### 错误 4 — 条件访问创建按钮变灰 **发生了什么:** 导航到 Identity → Protection → Conditional Access — 尝试创建策略 — 创建按钮无法点击。 **根本原因:** 条件访问需要 Microsoft Entra ID P1 或 P2 许可证。Azure 免费层仅包含 Entra ID 免费层。 **修复方法:** 切换到安全默认值,它提供等效的基线 MFA 强制执行,无需付费许可证。这实际上是 Microsoft 为没有 P1/P2 许可证的组织推荐的配置。 **经验教训:** 了解许可模型。安全默认值 = 免费、租户范围的 MFA 基线。条件访问 = 付费、精细策略控制。对于家庭实验室,安全默认值可实现相同的安全目标。 ## PowerShell 脚本 ### 强制同步 ``` # 强制立即从本地 AD 同步到 Microsoft Entra ID # 在安装 Entra Connect 的服务器上运行 (DC-01) Import-Module "C:\Program Files\Microsoft Azure AD Sync\Bin\ADSync\ADSync.psd1" Write-Host "Starting Entra Connect delta sync..." -ForegroundColor Cyan Start-ADSyncSyncCycle -PolicyType Delta Write-Host "Sync initiated. Check Synchronization Service Manager for results." -ForegroundColor Green ``` ### 批量更新 UPN 后缀 ``` # 批量更新特定 OU 中所有用户的 UPN 后缀 $NewSuffix = '@musahissahghoutlook.onmicrosoft.com' $OUPath = 'OU=Users,DC=company,DC=org' $users = Get-ADUser -Filter * -SearchBase $OUPath foreach ($user in $users) { $newUPN = $user.SamAccountName + $NewSuffix Set-ADUser $user -UserPrincipalName $newUPN Write-Host "Updated: $($user.SamAccountName) -> $newUPN" -ForegroundColor Green } ``` ### 检查同步状态 ``` # 检查 ADSync 服务状态和上次同步时间 Get-Service ADSync Get-ADSyncScheduler | Select-Object NextSyncCycleStartTimeInUTC, CurrentlyRunning, SyncCycleEnabled ``` ## 安全配置 完整文档请参阅 [docs/security-decisions.md](docs/security-decisions.md)。 **摘要:** 已启用安全默认值 — 强制对所有 54 个用户(包括从本地 AD 同步的 51 个用户)执行 MFA。这是 Microsoft 为没有 Entra ID P1/P2 许可证的组织推荐的基线安全配置。 ## 经验教训 1. **Entra Connect 仅从 Entra 管理下载** — 不是 Microsoft 下载中心(2025 年已更改) 2. **个人 Microsoft 账户不能用于 Entra Connect** — 始终在租户中创建专用的仅限云管理员账户 3. **M365 开发者沙盒拒绝很常见** — Azure 免费租户足以进行混合身份实验室建设 4. **在重试之前清理失败的安装** — 孤立的应用程序注册会导致 AADSTS700016 错误 5. **UPN 后缀匹配至关重要** — 没有它,用户可以同步但无法向云资源进行身份验证 6. **安全默认值不是安慰奖** — 它是一个合法的、广泛使用的企业安全基线 ## 项目统计 | 指标 | 值 | |---|---| | 构建时间 | 约 6 小时(包括故障排除) | | 同步用户 | 51 个本地用户 | | Entra 中的总用户 | 54(包括仅限云的管理员账户) | | 完成的同步运行 | 18 次(在同步服务管理器中可见) | | 遇到的错误 | 4 | | 解决的错误 | 4 | | MFA 强制执行 | 是 — 安全默认值 | ## 作者 **Musah Issah** IT 支持专员 | 纽约州纽约市 - LinkedIn:[linkedin.com/in/musah-issah-925ba2313](
标签:Active Directory, AD DS, AI合规, Azure AD, Azure AD Connect, Entra Connect, GPO, Hyper-V, IT运维, Libemu, MFA, Microsoft Entra ID, Plaso, PowerShell自动化, Socks5代理, Windows Server 2022, 云身份, 企业安全, 域控制器, 多因素认证, 安全默认, 混合云, 混合身份, 用户同步, 用户生命周期管理, 目录服务, 组策略, 网络资产管理, 身份安全, 身份管理