はじめに

ご覧いただき、ありがとうございます。
CSVDE コマンドは Active Directory のユーザーやグループといったデータを、エクスポート・インポートできるものであり、AD 間のデータの移行に利用できます。

AWS のブログに記載されているとおり、AWS マネージドサービス型の AD である AWS Managed Microsoft AD においても CSVDE コマンドは利用できます。
上記の記事はユーザーの移行方法のみが紹介されていますが、そのほかのオブジェクトも可能であるため
本記事では、ユーザーに加えて、グループの移行もやってみます。

目次

前提

Active Directory ツールがインストールされていない場合は、以下のコマンドでインストールします。

> Install-WindowsFeature RSAT-ADDS-Tools

ユーザーを移行する

以下のセルフマネージド AD に存在するユーザー Hoge を移行してみます。

ユーザーをエクスポートする

下記のコマンドでユーザーをエクスポートします。

> csvde -f users.csv -l "DN, objectclass, objectcategory, givenName, sn, name, samAccountName, displayname" -r "(&(objectClass=user)(objectCategory=person))"

C:\Users\Administrator>csvde -f users.csv -l "DN, objectclass, objectcategory, givenName, sn, name, samAccountName, displayname" -r "(&(objectClass=user)(objectCategory=person))"
"(null)" に接続しています
SSPI を使って現在のユーザーとしてログインしています
ディレクトリをファイル users.csv にエクスポートしています
エントリを検索しています...
エントリを書き出しています
....
エクスポートが完了しました。後処理を実行しています...
4 個のエントリがエクスポートされました

コマンドが正しく完了しました

エクスポートされた CSV ファイルを編集する

全てのユーザーをエクスポートしたため、エクスポートされた CSV ファイルには、AD のデフォルトユーザーも含まれています。
デフォルトユーザーも移行すると重複してしまうため、CSV ファイルから削除します。

デフォルトユーザー削除前

DN,objectClass,name,sAMAccountName,objectCategory,displayName
> "CN=Administrator,CN=Users,DC=self-managed,DC=corp,DC=contoso,DC=com",user,Administrator,Administrator,"CN=Person,CN=Schema,CN=Configuration,DC=self-managed,DC=corp,DC=contoso,DC=com",
> "CN=Guest,CN=Users,DC=self-managed,DC=corp,DC=contoso,DC=com",user,Guest,Guest,"CN=Person,CN=Schema,CN=Configuration,DC=self-managed,DC=corp,DC=contoso,DC=com",
> "CN=krbtgt,CN=Users,DC=self-managed,DC=corp,DC=contoso,DC=com",user,krbtgt,krbtgt,"CN=Person,CN=Schema,CN=Configuration,DC=self-managed,DC=corp,DC=contoso,DC=com",
"CN=Hoge,CN=Users,DC=self-managed,DC=corp,DC=contoso,DC=com",user,Hoge,Hoge,"CN=Person,CN=Schema,CN=Configuration,DC=self-managed,DC=corp,DC=contoso,DC=com",Hoge

デフォルトユーザー削除後

DN,objectClass,name,sAMAccountName,objectCategory,displayName
"CN=Hoge,CN=Users,DC=self-managed,DC=corp,DC=contoso,DC=com",user,Hoge,Hoge,"CN=Person,CN=Schema,CN=Configuration,DC=self-managed,DC=corp,DC=contoso,DC=com",Hoge

さらに、移行前後で CN や OU、DC などに変更がある場合は、修正する必要があります。
今回は以下のように変更があります。

ドメイン OU・CN
移行前 self-managed.corp.contoso.com Users
移行後 managed.corp.example.com managed/Users

修正前

DN,objectClass,name,sAMAccountName,objectCategory,displayName
"CN=Hoge,CN=Users,DC=self-managed,DC=corp,DC=contoso,DC=com",user,Hoge,Hoge,"CN=Person,CN=Schema,CN=Configuration,DC=self-managed,DC=corp,DC=contoso,DC=com",Hoge
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

修正後

DN,objectClass,name,sAMAccountName,objectCategory,displayName
"CN=Hoge,OU=Users,OU=managed,DC=managed,DC=corp,DC=example,DC=com",user,Hoge,Hoge,"CN=Person,CN=Schema,CN=Configuration,DC=managed,DC=corp,DC=example,DC=com",Hoge
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

ユーザーをインポートする

最後に、AWS Managed Microsoft AD のドメインに参加しているコンピュータへ接続し
以下のコマンドでユーザーをインポートします。

> csvde –i –f users.csv

コマンド実行前

コマンド実行
C:\Users\Admin>csvde -i -f users.csv
"IP-C613029C.managed.corp.example.com" に接続しています
SSPI を使って現在のユーザーとしてログインしています
ファイル "users.csv" からディレクトリをインポートしています
エントリを読み込んでいます..
1 個のエントリを正しく修正しました。

コマンドが正しく完了しました
コマンド実行後

グループを移行する

次はグループ(Test Group)を移行してみます。

ユーザーを移行する際と必要な属性が異なるため、コマンドが変わっていますが、作業の流れは同じです。

グループをエクスポートする

下記のコマンドでグループをエクスポートします。

> csvde -u -f group.csv -l "member, objectclass" -d "CN=${グループ名},DC=${ドメイン名}" -r "(&(objectClass=group)(objectCategory=group))"

C:\Users\Administrator>csvde -u -f group.csv -l "member, objectclass" -d "CN=Test Group,DC=self-managed,DC=corp,DC=contoso,DC=com" -r "(&(objectClass=group)(objectCategory=group))"
"(null)" に接続しています
SSPI を使って現在のユーザーとしてログインしています
ディレクトリをファイル group.csv にエクスポートしています
エントリを検索しています...
エントリを書き出しています
.
エクスポートが完了しました。後処理を実行しています...
1 個のエントリがエクスポートされました

コマンドが正しく完了しました

エクスポートされた CSV ファイルを編集する

ユーザーの際と同様に、OU や DC などに変更がある場合は、修正する必要があります。

修正前

DN,objectClass,member
"CN=Test Group,DC=self-managed,DC=corp,DC=contoso,DC=com",group,"CN=Hoge,CN=Users,DC=self-managed,DC=corp,DC=contoso,DC=com"
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

修正後

DN,objectClass,member
"CN=Test Group,OU=managed,DC=managed,DC=corp,DC=example,DC=com",group,"CN=Hoge,OU=Users,OU=managed,DC=managed,DC=corp,DC=example,DC=com"
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

グループをインポートする

最後に、AWS Managed Microsoft AD のドメインに参加しているコンピュータへ接続し
以下のコマンドでグループをインポートします。

> csvde –i –f group.csv

コマンド実行前

コマンド実行
C:\Users\Admin>csvde -i -f group.csv
"IP-C6130142.managed.corp.example.com" に接続しています
SSPI を使って現在のユーザーとしてログインしています
ファイル "group.csv" からディレクトリをインポートしています
エントリを読み込んでいます..
1 個のエントリを正しく修正しました。

コマンドが正しく完了しました
コマンド実行後

終わりに

本記事で実施したユーザーとグループは問題なく移行できましたが
AWS Managed Microsoft AD はマネージドサービスであり、一部の機能が制限されているため
そのほかのオブジェクトの移行を考える場合は、まずは試してみたほうが安全と思います。

最後までご覧いただき、ありがとうございました。