特集
MIIS 2003プログラミング(前編)

企業システムのID統合を推進するMIISとは何か?

福井 厚 (Microsoft MVP 2005 - Solution Architect)
2005/06/22
Page1 Page2

 マイクロソフトが提供するMicrosoft Identity Integration Server 2003(以下、MIIS)は、企業内の各情報システムの「ID統合」と「パスワード同期」を強力に推進するためのサーバ製品である。

Windowsメタディレクトリ入門
ADとメタディレクトリ・サービスが切り開く次世代の組織内ID管理

 ID統合とは、以下のようなデータソースに含まれるID情報の管理をまとめることだ。

  • データベース(例:SQL Server、Oracle)

  • ディレクトリ・サービス(例:Active Directory、SUN ONE/iPlanet Directory、Novell eDirectory)

  • そのほかのID保存ファイル(例:LDIF(LDAP Data Interchange Format)、CSV)など

 つまり、MIISを使いID統合を行えば、1つのユーザーID情報を基にして、あらゆる社内システムにアクセスできるようになるわけである。

 またパスワード同期とは、ユーザー自身や管理者が、MIISが提供するAPIを使ってパスワードを変更することで、ほかの各システムに対しても同様にパスワードを自動的に変更すること(つまり、同期すること)である。これにより、ユーザーのパスワード変更に柔軟に対応できる。MIIS 2003 Service Pack 1では、Active Directory上のパスワード変更をイベントとして取得するAPIも提供されている。

 MIISの大きな特徴としては、さまざまなデータソースとの間でID統合を実現するための「多様な管理エージェントの提供」と、企業ニーズに柔軟に対応するための「ルール拡張機能」が挙げられる。

 管理エージェントとは、Active DirectoryやSQL Serverなどの各データソースとの接続を管理する機能で、データソースの種類ごとに用意されている。また「ルール」とは、簡単にいうとID統合の際に用いられるさまざまな条件設定である。このルールによりMIISの機能を柔軟にカスタマイズすることが可能となる。

 特にMIISのルール拡張機能は、.NET Framework上で動作するDLLモジュールとして実現できるため、.NET Frameworkが提供する強力なクラス・ライブラリを利用して、高度なルールを容易に作り込むことができる(以下、このルール拡張機能を利用したプログラミングを「ルール拡張プログラミング」と表記する)。

 本稿では前後編に分けてMIISのルール拡張プログラミングを解説する。前編でMIISの基本的概念とルール拡張プログラミングの基礎を解説し、後編でより具体的で実践的なルール拡張プログラミングについての解説を行う。

 なお、MIISの実行に必要なハードウェアやソフトウェアなどの実行環境対応するデータソースの一覧の詳細については、マイクロソフトのサイトを参考にしてほしい。

MIISとは − MIISの基本概念

 ルール拡張プログラミングの解説を行う前に、まずMIISの基本概念を把握しよう。MIISを理解するには、MIISを構成する要素である以下の3つについて理解する必要がある。

  • メタバース(Metaverse)
  • コネクタ・スペース(Connector Space。もしくは、コネクタ空間)
  • 管理エージェント(Management Agent)

 まずは、これらについて簡単に解説しよう。

 図1にMIISのメタバース、コネクタ・スペース、管理エージェントの関係を示した。この図を眺めながら、以下の解説を読み進めてほしい。

図1 MIISのメタバース、コネクタ・スペース、管理エージェント

■ID情報を管理するデータベース「メタバース」

 MIISは、いわゆるメタディレクトリ製品*1で、内部に「メタバース」と呼ばれる抽象化されたID情報であるIDデータ・オブジェクト(以下、「メタバース・エントリ」)を管理するデータベースを保持している。

*1 メタディレクトリやメタディレクトリ製品については、Master of IP Networkフォーラムの「連載:ディレクトリ・サービスの仕組と活用 ― 第4回:ディレクトリ統合」を参照してほしい。

 メタバース内のメタバース・エントリは、複数の属性から成り立っており、「Person」や「Group」など、いくつかの種類のオブジェクト・タイプがデフォルトで提供されている。また既存のオブジェクト・タイプから新しいオブジェクト・タイプを作成したり、属性を新規に作成して追加したりすることができ、企業が持つID情報に応じて柔軟に設計することが可能となっている。

 メタバース・エントリは、この後で解説するコネクタ・スペース上のオブジェクト(以降、「コネクタ・スペース・エントリ」)と結合され、ID情報を各システム間で同期するようになっている。

■メタバースへの中継を行う空間「コネクタ・スペース」

 コネクタ・スペースは、接続先データソース(例えば、SQL ServerやActive Directory、CSVファイルなど)に存在するデータソース・オブジェクトのシャドウ・コピー・オブジェクト(=データソース・オブジェクトのサブセット)を保持する空間で、各接続先データソースは、コネクタ・スペースを経由してメタバースと接続される。

 コネクタ・スペース上に作成されるシャドウ・コピー・オブジェクトは、(前述したように)コネクタ・スペース・エントリと呼ばれ、メタバースとの間で、コネクタ(接続状態)か、ディスコネクタ(非接続状態)として保持される。

■データソースとコネクタ・スペースの接続を管理する「管理エージェント」

 管理エージェントは、接続先データソースとコネクタ・スペースとの間の接続を管理し、インポート/同期/エクスポートなどの処理を実行する。

 管理エージェントはMIISの管理画面で作成でき、そこでは以下のような項目を設定する(これらの設定内容が、どのように働くかについては、以下に示す図2の説明を参照してほしい)。

  • データソースとの接続情報(接続先のログイン情報など)
  • データソースの属性項目(データベースのカラム名など)
  • フィルタ・ルール(IDの接続をフィルタリングする)
  • 結合ルール(ID情報とメタバース・エントリを結合する条件)
  • 投影ルール(メタバース・エントリに存在しない場合に新規に作成するかどうか)
  • インポート属性フロー(データソースからメタバース・エントリの属性へのマッピング)
  • プロビジョニング解除設定(メタバース・エントリが削除された場合のコネクタ・スペース・エントリの扱い)
  • エクスポート属性フロー(メタバース・エントリからデータソースの属性へのマッピング)

 また管理エージェントは、インポートや同期、エクスポートの処理を、実行手順の設定場所(以下、「実行プロファイル」)に登録して実行する。

 なお、ID管理における「プロビジョニング(Provisioning)」とは、あるIDデータをすぐに利用可能な状態にすることだ(逆に「プロビジョニング解除」とは、そのIDデータをすぐに利用不可能な状態にすることである)。具体的には、MIISのメタバース内のオブジェクトの変更を基にして、コネクタ・スペース内でコネクタ・スペース・エントリを作成したり、変更したり、削除したりする一連の自動処理を指している。

 また「属性フロー(Attribute Flow)」とは、コネクタ・スペース・エントリとメタバース・エントリの間でやり取りを行って、メタバース・エントリの属性やコネクタ・スペース・エントリの属性を変更する処理のことだ。属性フローの設定については後述する。

MIISの処理の流れ

 それではMIISがID情報を統合する処理の流れを簡単に解説する。MIISでの処理の流れは以下のようになっている。

図2 MIIS上の処理の流れ

接続先データソース(データソースA)からインポート処理を実行する。

コネクタ・スペース上にデータソース上のIDデータに対応したコネクタ・スペース・エントリ(シャドウ コピー・オブジェクト)が作成される。

フィルタ・ルールが存在し、コネクタ・スペース・エントリがフィルタの条件にマッチした場合は、メタバースへ接続されずにディスコネクタ(非接続状態)となる。

結合条件に一致するメタバース・エントリがメタバース上に存在せず、投影が設定されている場合は、同期処理の実行中にメタバース上に新規にメタバース・エントリが作成される。結合条件に一致するメタバース・エントリがメタバース上に存在する場合は、コネクタ・スペース・エントリとメタバース・エントリが結合され、コネクタ・スペース・エントリはコネクタ(接続状態)となる。

さらに同期処理によってプロビジョニングが実行され、コネクタ・スペース上のほかの接続先データソース用のコネクタ・スペース・エントリが作成される。

エクスポート処理によって、コネクタ・スペース・エントリに対応するデータソース上のオブジェクト(データソースB)が作成、更新される。

 上記の各処理によって、接続先データソース間のオブジェクトがMIISのメタバース・エントリと同期される。ここで重要なのは、MIISのメタバース・エントリが中心となって各データソース・オブジェクトと連携されるため、メタバース・エントリの型であるオブジェクト・タイプは、すべてのデータソース上のオブジェクトの属性を適切に反映したものでなければならないということである。従ってMIISのメタバース・オブジェクト・タイプを適切に設計することがMIISでは非常に重要となる。

 また、上記の処理の流れ以外にも、接続先データソースのオブジェクトが削除された結果、コネクタ・スペース・エントリがディスコネクタとなる場合や、さらにその結果でメタバース・エントリが削除され、結果的にほかのデータソースのオブジェクトも削除されるような状況が発生する場合もある。このような複雑な処理をMIIS上で管理するために、MIISでは管理用コンソールとして次に解説する「Identity Manager」が提供されている。

 

 INDEX
  [特集]
  MIIS 2003プログラミング(前編)
  企業システムのID統合を推進するMIISとは何か?
  1.MIISの基本概念と処理の流れ
    2.簡単なルール拡張プログラミングの例
  MIIS 2003プログラミング(後編)
  柔軟なID管理を実現するMIISルール拡張プログラミング
    1.管理エージェント用のルール拡張
    2.メタバースのルール拡張
 


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間