亚马逊AWS官方博客

使用 ADMT 迁移本地 AD 用户到 AWS Microsoft AD

AWS Managed Microsoft AD 介绍:

AWS Managed Microsoft AD 在 AWS 云中创建一个完全托管的 Microsoft Active Directory,采用 Windows Server 2012 R2 并在 2012 R2 功能级别上操作。AWS Managed Microsoft AD 可以与 Microsoft SharePoint、Microsoft SQL Server Always On Availability Groups 和多种 .NET 应用程序配合使用。它还支持 AWS 托管的应用程序和服务,包括 Amazon WorkSpaces、Amazon WorkDocs、Amazon QuickSight、Amazon Chime、Amazon Connect 和 Amazon Relational Database Service for Microsoft SQL Server (RDS for SQL Server)。
在本文中,我们主要讨论使用微软提供的 ADMT (Active Directory Migration Tool) 来实现将用户从本地 AD 迁移到 AWS Managed Microsoft AD。需要注意的是:  AWS Managed Microsoft AD 采用 Windows Server 2012 R2 并在 2012 R2 功能级别上操作,如果和本地域功能级别不同,在迁移的时候有可能会出现一些属性无法同步的情况。

先决条件:

      1. 在迁移之前,可以根据自己的业务场景使用 VPN 或者 Direct Connect 将本地数据中心和 AWS VPC 网络打通。
      2. 建立本地 DC 和 AWS Managed AD 的信任关系
      3. 在本地 DC 上安装 pwdmig(Password Export Server) 用于密码迁移

 

操作步骤:

      1. 在 AWS 上创建一个托管 Microsoft AD,本次示例中 AWS 托管 AD 的目录名字为 mad.com ,创建好之后 AWS 会自动在指定的子网中创建2个域控制器.

      1. 修改 VPC DHCP Options,使 VPC DNS 指向 AWS Managed AD DNS 服务器(在先前创建的目录服务中可找到 DNS address )

      1. 创建一个 Windows EC2 ,在配置实例的时候,选择之前新建的目录,以及选择一个 IAM Role 使EC2 实例自动加入到托管 AD 中,IAM Role 至少要有 AmazonEC2RoleforSSM 权限。

      1. EC2 实例启动之后,可以通过在 AWS Managed AD 中创建的admin用户登录,登录成功之后安装 AD 管理工具.

使用 PowerShell 安装命令如下:Add-WindowsFeature RSAT-AD-PowerShell,RSAT-AD-AdminCenter

      1. 在 VPC 安全组界面,搜索之前创建的 Managed AD 的 Directory ID,格式为:d-xxxxxxxxxx,找到之后,修改出站流量,允许本地 DC 所在 CIDR 的所有流量.

      1. 在本地 DC 设置与 AWS Managed AD 林级别的信任,并添加 Managed AD 和本地 onpremise.com 的双向信任,在条件转发器中输入 onpremise.com 的 DNS 地址。如果信任建立失败,请检查AWS Managed AD 的安全组出站策略以及本地数据中心的防火墙设置.

      1. 在 EC2 实例上安装 ADMT 工具(安装的时候需要指定 SQL Server 数据库,也可以在本地安装SQL Server Express 版) 。ADMT 默认安装路径为: C:\Windows\ADMT\,安装成功之后需要使用 ADMT 生成一个 Encryption File,用于源域控制器配置 pwdmig(Password Export Server).

admt key /option:create /sourcedomain:SOURCEDOMAIN.com /keyfile:c:\key.pes /keypassword:KEYPASS

 

        1. 将上一步生成的 key.pes 文件拷贝到本地域控制器,在本地域控制器上安装 pwdming 并指定 key.pes 文件,安装之后重启服务器。
        2. 同时在本地 AD 上打开 services.msc ,找到Password Export Server Service,在 Logon 中修改用户为 AWS Managed AD 的管理员 admin,并将此服务启动。

      另外在本地AD中,将 AWS Managed AD的管理员添加到本地 AD 的 administrators 组中(如果不添加,在使用 ADMT 迁移密码的时候会报错提示访问被拒绝)

        1. 在 EC2 (连接到目标域控制器的实例)上打开 ADMT 工具开始准备迁移,右键选择 “User Account Migration Wizard”

      选择源 AD 和目标 AD

      手动选择要迁移的用户

      选择要迁移到的 OU

       

      迁移密码

      不要勾选“Migrate user SIDs to target domain”。Sid 迁移需要在 AWS Managed AD 启用 SID History,但由于 AWS Managed AD 是一个托管服务,无法修改此属性,因而无法迁移用户的sid.

      之后根据提示点击下一步开始迁移工作,迁移完成之后,可以查看迁移报告,如果有用户迁移失败,可以点击 View Log 按钮查看报错日志。

      经测试: 在迁移用户的过程中,如果用户隶属于某个组,可以实现在迁移用户的过程中自动将组也迁移过去。迁移后的用户默认勾选 “User must change password at next logon”,可以通过PowerShell 脚本取消勾选:

      Set-ADUser localuser001 -ChangePasswordAtLogon $false

      如果要批量修改某一个 OU 下的所有用户的属性,可以参考下面的循环语句:

      Get-ADUser -Filter * -SearchBase "OU=testOU,OU=MAD,DC=mad,DC=com" | % {Set-ADUser $_ -ChangePasswordAtLogon $false}

 

更多资料请参考:

https://docs.aws.amazon.com/zh_cn/directoryservice/latest/admin-guide/ms_ad_tutorial_setup_trust.html
https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/cc974332(v=ws.10)

本篇作者

刘翔

亚马逊 AWS 解决方案架构师,负责基于 AWS 的云计算方案架构的咨询和设计。在加入架构师团队之前,在AWS Support 团队有2年半的工作经验,对AWS底层服务有深入的理解和认识。