【IDM】MSMQ を使って確実なユーザー登録を行う その1 ~ MSMQ って何してくれるの?

こうも天気がよいと、なんだかどうでもよくなりますね。メタボドンと来い!ってかんじです。 さて、現在募集中の TechEd ライトニングトーク 登壇者に向けたサンプルスライドを作ってみたわけですが、せっかくなので少し詳細に解説したいと思います。 【TechEd】ライトニングトーク サンプル ~ MSMQ を使用した確実なユーザー登録 ~ MSMQ って、そもそもご存知でしょうか?意識してインストールしないと「コンピュータの管理」にも出てこないので、「始めて聞いた」という方もいらっしゃるかもしれません。 Microsoft Message Queueing(Microsoft Message Queue Service てのは古い言い方だったようです。失礼しまし) の略で、分散メッセージングアプリケーションを開発するための基盤となるサービスです…と書くと、なんか IT Pro とは無縁のもののように思えてきますが、これがまた使ってみるとやめられなくなるくらい面白いです。Developer だけに触らせていたのではもったいないので、IT Pro も使いましょう! で、ここでいう「メッセージ」という言葉ですが、これはメールのようなものだと思ってください。次々と送られてくるメッセージをうまく捌くためのエンジンが MSMQ です。 では、MSMQ がなんでユーザー登録にとって便利なのかということですが。 ユーザー登録は、基本的にシーケンシャルな処理です。おそらく、スクリプトには以下のようなコードを書くことになるでしょう。 ユーザー一覧が書かれたCSVファイルを開く CSVファイルを1行よみとる ユーザーIDをキーにしてActive Directory 上にユーザーを作成 作成できたら氏名やホームディレクトリ等をセット 登録結果の確認処理後、ログを吐き出し 2.に戻って繰り返し 例えば10000人のユーザーを登録する場合、すべての処理をひとまずやってしまってから、ログから正常に終了したかどうかを確認する必要があります。処理に慣れている方であれば、「失敗したユーザー一覧」を別に吐き出して、それをベースに再登録を行ったりなんてことも考えるのではないでしょうか。 処理が失敗する原因はいくつか考えられます。 ネットワーク障害 ドメインコントローラ側の障害 登録データの不備 コードの不備(想定外の入力データ等) いずれにしても重要なのは、失敗した後のことがきちんと想定されているかどうかということです。 そのためにも、ILM などのパッケージを導入するのがお勧めなわけですが、そうは言ってもお金がかかる世界ですから内々でなんとかできるものならなんとかしたい。。と思うのが人情ってものです。 そこで、OS標準機能である MSMQ を使ってしまい、エラー処理に関するコーディングを簡略化してしまおうと。 以下の図をご覧ください。 クリックで拡大 この図の上に書かれた流れが、いまお話した普通の方法です。…

10

【TechEd】ライトニングトーク サンプル ~ MSMQ を使用した確実なユーザー登録 ~

Tech・Ed 2008 YOKOHAMA では、5分間のプレゼンを競い合う ライトニングトーク が開催されます。詳細は以下をご覧ください。 【News】神様がくれた5分 を何に使いますか?僕なら大ジョッキを2杯飲みますけど…  5分頑張れば、定価15万円もするTech・Edのテクニカルセッションを無償で聴講できるのですから、多くのエンジニアの皆さんは知恵を絞っていらっしゃることと思います。 で、何人かの方々から「レベル感がわからない」というご質問をいただきました. そんなに構えていただく必要はありませんが、およそ以下のいずれかに分類されるのかなと思っています。 ちょっとした工夫で処理時間を短縮することができる ちょっとした工夫で処理を自動化することができる 一般的にはできないといわれているけど、工夫するとできる 一般的に使われる用途とは別の用途に使うと効果的 開発者向けだと思っていたけど、IT Pro が使うとすごく便利 仕事には関係ないけど、ちょっとうれしい などなど。 自分では当たり前だと思っていても、他の方から見れば意外と「目からうろこ」だったりしますので、遠慮なさらずご応募お待ちしております。 で、例えば、ということでサンプルを考えてみました。 MSMQ(Microsoft Message Queue Service)を使用した確実なユーザー登録 ユーザー管理の問題点の1つとして、ドメインコントローラやネットワーク障害時のリトライが挙げられます。一度失敗すると、どこまで実行したかを調査し、重複の内容再度実行する必要があります。これはフィールドSEにとって大変な手間です。Windows に標準で実装されているMSMQと連携させて実行することで、リトライを容易に、かつ自動化することが可能です。MSMQ は Windows に標準機能として実装されているにもかかわらず、意外と日の目を見ないコンポーネントです。メッセージのキュー管理機能を PowerShell から操作することで、IT Pro でも簡単に高度な制御を実装した登録プログラムを作成することができます。  クリックで拡大  クリックで拡大 5分という短い時間ですから、スライドにすると2枚が精いっぱいでしょう。これ以上になると、見ている側に忙しい印象を与えてしまいます。 MSMQ は IT Pro の方々の眼中にないコンポーネントだったと思うので、のちほど、このスライドを具体的に実装する方法について解説します。  

6

【News】Identity Lifecycle Manager ‘2’ Beta 3 ダウンロード開始

昨日何年かぶりにボーリングをしました。 2ゲームでアベレージ 90程度でした。それにしても、ビールを飲みながらのボーリングってのは、酔いますね。 そんな私にうれしいお知らせです。もちろん、みなさんにも。 待ちに待った ILM ‘2’ のベータ版が一般公開されました。これまでは、一部のエンジニアにしか公開されていませんでしたが、これで ILM ‘2’ が広く世の中に認識されることになります。 ILM ‘2’ Beta 評価プログラムへの参加は、マイクロソフトの connect サイトにアクセスしてください。 Microsoft Connect 「Welcome to the Identity Lifecycle Manager “2” (ILM “2”) Beta Site」https://connect.microsoft.com/site/sitehome.aspx?SiteID=433 もちろん、MSサイト内に公式な製品サイトも立ち上がりました。  Identity Lifecycle Manager ‘2’ 製品サイトhttp://www.microsoft.com/windowsserver/ilm2/default.mspx 今後、ベータ版に実装されている機能などを、このblog を通じてご紹介してまいります。


【IDM】Active Directory から OpenLDAP への パスワードの同期 その 4 ~Ldap ブラウザでパスワードの変更結果を検証する

※2008/08/29 Tech・Ed会場にてリンク切れを指摘していただきましたので修正いたしました。(汗) ある調べごとがあり、「’watch node’」 という単語を 某検索エンジンに放り込んだところ、以下の表示が。 もしかして: ‘watch nude’   し、し、しっ、失礼なっっっ!  それはともかく Active Directory とのパスワード同期シリーズ の続きです。過去の記事は以下を参照してください。あとでまとめサイト作って公開します。 【IDM】パスワード同期機能の有効活用 その1 ~ パスワード同期機能とは 【IDM】パスワード同期機能の有効活用 その2 ~ Windows Server 2008 でのパスワード同期機能のセットアップ 【IDM】パスワード同期機能の有効活用 その3 ~ unixUserPassword 属性から暗号化されたパスワードを取得する 【IDM】Active Directory から OpenLDAP への パスワードの同期 その1 ~ パスワードを SHA1 で暗号化 【IDM】Active Directory から OpenLDAP への パスワードの同期 その2 ~ ADSI でパスワードを同期する 【IDM】Active Directory から OpenLDAP…

1

(sample) Fedora 8 : /etc/ldap.conf

# @(#)$Id: ldap.conf,v 1.38 2006/05/15 08:13:31 lukeh Exp $## This is the configuration file for the LDAP nameservice# switch library and the LDAP PAM module.## The man pages for this file are nss_ldap(5) and pam_ldap(5)## PADL Software# http://www.padl.com## Your LDAP server. Must be resolvable without using LDAP.# Multiple hosts may be specified, each separated by…


(sample) Fedora 8 : /etc/openldap/slapd.conf

## See slapd.conf(5) for details on configuration options.# This file should NOT be world readable.#include        /etc/openldap/schema/core.schemainclude        /etc/openldap/schema/cosine.schemainclude        /etc/openldap/schema/inetorgperson.schemainclude        /etc/openldap/schema/nis.schemainclude        /etc/openldap/schema/misc.schema# Allow LDAPv2 client connections.  This is NOT the default.allow bind_v2# Do not enable referrals until AFTER you have a working directory# service AND an understanding of referrals.#referral    ldap://root.openldap.orgpidfile        /var/run/openldap/slapd.pidargsfile  …


(sample) fedora 8 : /etc/openldap/ldap.conf

## LDAP Defaults## See ldap.conf(5) for details# This file should be world readable but not world writable.#BASE    dc=example, dc=com#URI    ldap://ldap.example.com ldap://ldap-master.example.com:666#SIZELIMIT    12#TIMELIMIT    15#DEREF        neverURI ldap://127.0.0.1/BASE dc=example-fedora,dc=jpTLS_CACERTDIR /etc/openldap/cacerts


【IDM】Active Directory から OpenLDAP への パスワードの同期 その3 ~(余談)Fedora 8 を Hyper-V上で動作させる

先日、宇都宮に向かう湘南新宿ラインの中で、「納豆がこんなに好きなのに、奥さんが納豆嫌いなため、家で食べられない」と、納豆への熱い想いを語るサラリーマンを見ました。 そうか、この手があったか… さて、余談に余談を重ねます。 「OpenLDAP の環境はどうしているのか?」というお問い合わせをいただいたいので、ここでご紹介します。 ご想像通りですが、Hyper-V RC0 上で動かしています。 (クリックすると大きい画面で表示) MSDN blog にも紹介されていますので、以下をご覧ください。 Ben Armstrong’s Virtual PC Guy’s WebLog Installing Fedora Core 8 on Hyper-V http://blogs.msdn.com/virtual_pc_guy/archive/2007/12/31/installing-fedora-core-8-on-hyper-v.aspx Fedora Project Fedora ダウンロード http://fedoraproject.org/get-fedora 上記 blog をご覧いただければお分かりの通り、とくに何も特別なことはしていません。 留意点としては、以下の2点です。 レガシーネットワークアダプターを使用する VMAddition は現時点でサポートされていない Linuxに対応した VMAddition は、ベータ版検証申し込みサイトからダウンロードすることができるようになっていますが、対象となっているのは、 SUSE Linux Enterprise Server 10 SP1 (x86) SUSE Linux Enterprise Server 10 SP1 (x64) だけのようです。今後、 Red Hat Enterprise Linux 5 もサポート予定であるとも書かれています。 興味のある方は、以下のサイトに接続してみてください。 …

1

【IDM】Active Directory から OpenLDAP への パスワードの同期 その2 ~ ADSI でパスワードを同期する

昔、「おしいれのぼうけん」ていう絵本がありました。いまでもトラウマです…ねずみばぁさん…。 そんなノスタルジックな想いはともかく、現実に戻って OpenLDAP にパスワードを同期する方法について考察します。 以前、以下の記事で、生パスワードを PowerShell を使用して SHA1  で暗号化する方法を書きました。 【IDM】Active Directory から OpenLDAP への パスワードの同期 その1 ~ パスワードを SHA1 で暗号化 今回は、SHA1 のことはひとまずおいといて、パスワード同期機能で作成された unixUserPassword を取り出し、ADSI を使用して OpenLDAP に同期してみます。 パスワード同期機能および unixUserPassword 属性については、以下で詳しく解説していますので参考にしてください。 【IDM】パスワード同期機能の有効活用 その1 ~ パスワード同期機能とは 【IDM】パスワード同期機能の有効活用 その2 ~ Windows Server 2008 でのパスワード同期機能のセットアップ 【IDM】パスワード同期機能の有効活用 その3 ~ unixUserPassword 属性から暗号化されたパスワードを取得する # ここでは、パスワードの暗号化形式は DES を使用しています。  解説はソースの中にインラインで書きます。ソースをダウンロードするには、こちらから どうぞ。 今回は、以下の環境を想定しています。 Active Directory ドメイン : example64.jp…

2

【IDM】Active Directory から OpenLDAP への パスワードの同期 その1 ~ パスワードを SHA1 で暗号化

当初の予定を変更し、パスワードの暗号化について、ちょっとだけ触れておきたいと思います 以下では、Active Directory に格納された DES / MD5 形式のパスワードをそのままとりだしました。取り出したまま OpenLDAPに格納すれば、生パスワードを経由することなくパスワードの同期が行えます(同期の手法については、また後日)。 【IDM】パスワード同期機能の有効活用 その3 ~ unixUserPassword 属性から暗号化されたパスワードを取得する 同僚の田辺氏が、上記のスクリプトを PowerShell に置き換えてくれましたので、よろしければそちらも参照してください。 『【IDM】パスワード同期機能の有効活用 その3 ~ unixUserPassword 属性から暗号化されたパスワードを取得する』PowerShell 編 さて、ここで当然の要求が出てきます。 DES や MD5 じゃなくて、SHA1 で 暗号化したいんだけど!!?? 当然ですね。 暗号化と文字コード変換はなんとかなるとしても、DES / MD5 を複合化することはできませんので、事前に「生パスワード」が取得できるという前提で書きます。  で、その暗号化と文字コード変換ですが、VBSで何とかしようとしてみたのですが…うまい方法が無く….田辺さんに懐柔されたようで悔しいのですが、PowerShell を使用することにします。 生パスワードを 「annou$01 」 とします。 PS C:\> $strPassword = “annou$01″PS C:\> $objUTF8Enc = new-object System.Text.UTF8EncodingPS C:\> $bytPassword = $objUTF8Enc.GetBytes($strPassword)PS C:\>…

7