Q

Active Directory環境で,指定されたOU(組織単位)内に直接ユーザー・アカウントやパスワードの設定をしたいと考えています。どういった方法があるでしょう?一般の運用管理者のため,プログラミングよりもバッチで気軽に実行できるコマンドが望ましいのですが。

A

本来は,ADSIを使って専用のプログラムを開発するのが柔軟性が高く理想的です。 ただし,そのためにはプログラミングの知識が必要となるため,ここではWindowsに標準的に存在するツールを使う方法を紹介します。

 まずWindows Server 2003を使っているならば「dsadd user」コマンドを利用する方法があります。この場合,以下のように入力することで最小限の設定ができます。

 dsadd user[ユーザー識別子](-samid[アカウント名])-pwd[パスワード]

 ただし,このdsaddコマンドはWindowsServer 2003でしかサポートされません(Windows 2000ドメインに参加しているWindows Server 2003では利用可能)。その代わり,Windows2000 Serverなどでは「ldifde」コマンドで,アカウントの追加およびパスワードのインポートができます。

パスワードもインポート可能なldifde
 ldifdeコマンドは,LDIF形式に従ってテキスト・ファイルに記述した情報を,Active Directoryにエクスポート/インポートできるツールです。 似た働きをするツールとして「csvde」というコマンドもありますが,このcsvdeではパスワードのインポートはできません(パスワードのエクスポートはどちらも未対応)。

 ldifdeでパスワードをインポートするには,後述するように128ビットSSL通信が可能な環境が必要です。 そのため,Windowsコンポーネントである「証明書サービス」を事前にインストール・設定しておきます。

 準備が終わったところで,図4の手順で作業を実行します。


△ 図をクリックすると拡大されます
図4●ldifdeコマンドを使えばOUやユーザーの作成,パスワードの変更を一括して実行できる

 (1)まず「ldifde -i -f testou.ldf」と実行して,決められた書式で記載されたファイル(ここではtestou.ldf)からOU情報をインポートします。ファイル内のdnには識別名,objectClassにはオブジェクト・クラス,ouにはOUの名前を定義しておきます。

 (2)次に,「ldifde -i -f testuser.ldf」と実行してファイル(ここではtestuser.ldf)からユーザー情報をインポートします。インポート内容については設定時に必要最小限のもののみとなっています。このファイル内のsAMAccountNameには,いわゆるユーザー・アカウント名を定義しておきます。

 (3)最後に「ldifde -i -f moduser.ldf -t636」と実行して,ファイル(ここではmoduser.ldf)からパスワードをインポートした後にユーザー・アカウントを有効にします。このファイル内のchangetypeでは実行するメソッドを,replace以下には置き換えるプロパティ名と内容を定義します。パスワードのインポートの際には128ビットSSL通信が必要なため,LDAP SSLが待ち受けるTCP 636に接続するようにコマンドを実行する必要があります。

パスワードのエンコード形式に注意
 なお,最後のパスワードを設定したファイルをインポートする時に[システムに接続されたデバイスが機能していません。]とエラーが出る場合は,パスワードの内容を設定しているunicodePwdの項目が誤っているケースがほとんどです。

 このunicodePwdには,二重引用符(")でくくられたUTF-16リトル・エンディアン形式のパスワード文字列をBase64でエンコードした内容を記述しなければなりません。例えば,図4に示したmoduser.ldfの例では「password$01」というパスワードを設定しています。実際には,川俣晶氏のフリーウエア「tconv」(該当サイト)などを利用しUTF-16リトル・エンディアン変換済みファイルとしてリダイレクト出力した後に,一般的なBase64変換アプリケーションで作成するといった方法を使うのがよいでしょう。

 今回説明した方法に関する情報がいくつかサポート技術情報として公開されているので併せて参照してください(237677,263991,247078,269190)。

 マイクロソフトでは,ここで紹介したldifdeやcsvde,dsadd,ADSIに加え,以前からリソース・キットで提供しているaddusersなど,ActiveDirectoryへユーザー・アカウントを一括でインポートする方法をいくつも提供しています。表1にそれらをまとめたので,状況に応じて使い分ける参考にしてください。


△ 図をクリックすると拡大されます
表1●Active Directoryにユーザー・アカウントを一括インポートできるツールの比較

小鮒 通成