現在地

ID連携の花形!MIM 2016やってみる?(2) - MIMを作ってみよう


MIMの基本的なしくみ~概念を知る

みなさん、ご無沙汰しています。新しい仕事に取り組むようになったこともあり、約1年ぶりのコラムになってしまいました。

まず、前回のおさらいですが、MIMの基本機能は、Active Diretoryのような連携元のIDシステム情報を取得(インポート)し、計算式で表現可能な方法で変換(同期)したうえ、Azure Active Directoryのような連携先のIDシステムに適用する(エクスポート)する、ということになります。

MIMのしくみについて、調理で例えると、連携元ID情報=食材、同期=食材の調理、連携先ID情報=完成料理、ということができると思います。

実際に料理するとなると、これだけでは心もとないので、材料の置き場所となる「まな板」や、完成した料理を載せる「お皿」も必要です。材料を吟味して下ごしらえするには「まな板」があると便利です。また完成した料理は「お皿」に盛り付けることで、食べやすく、食欲をそそる見た目になるでしょう。

実際に調理するとなると、食材の置き場所や下ごしらえするための「まな板」があると便利です。また、完成した料理を載せる「お皿」も必要です。お皿に盛りつけることで、食べやすくなり、食欲をそそる見た目にもなるでしょう!

MIMでは、「まな板」と「お皿」を兼ね備えるコンポーネントとして、「コネクタスペース(CS)」が存在します。コネクタスペースは「連携元IDシステム」「連携先IDシステム」など連携対象システムごとに、個別に用意されています。なお、コネクタスペースに接続された連携対象システムのことを「外部システム」と呼称します。

連携元ID情報を「インポート」すると、連携元外部システムのコネクタスペースに情報がそのまま反映されます。連携先システムに「エクスポート」すると、連携先外部システムのコネクタスペースにあるID情報が、実際の連携先システムにマージし反映されます。

連携元システムにとってコネクタスペースでは「まな板」の役割となり、連携先システムでは「お皿」の役割となる、魔法のアイテムですね。仮に連携元・連携先が入れ替わるのなら、役割も逆になるでしょう。

また、実際に調理を行う場合「フライパン」や「なべ」に食材を入れ煮炊きすることで、料理を作ります。当たり前ですが、食材に熱を加えることで、食べられる料理に変換するわけです。

MIMでは、「フライパン」「なべ」に相当するコンポーネントは「メタバース」と呼ばれます。メタバースはすべてのコネクタスペースに接続していて、連携元外部システムのコネクタスペースにある情報を取り込んで「同期」し、連携先外部システム用のコネクタスペースに同期結果を反映させます。当たり前ですが「エクスポート」の前に「同期」を行わないと、連携先システムのコネクタスペースに情報がないため、結果の反映ができません。

ちなみにメタバースでは「移行元IDのスキーマ情報と移行先IDのスキーマ情報」の両方を読み込み、両スキーマ情報を比較して、IDの属性を変換させます。メタバースは「コネクタスペース」からしか情報を読み込めませんので、両スキーマ情報がそれぞれのコネクタスペースに事前にインポートされている必要があります。

移行元システムのスキーマは、事前に「インポート」を行うので問題ありませんが、移行先システムはコネクタスペースがカラのままなので、移行先スキーマ情報をメタバースに読ませるため、初めての同期を行う前に、移行先システム情報を「インポート」して、スキーマ情報をメタバースに引き渡す必要があります。

あわせて、料理を行ううえでのキモは、どの食材をどう料理するかといった「レシピ」になります。「レシピ」を料理をするうえでの「メソッド」の集合と考えると、下ごしらえのための「メソッド」、煮炊きのための「メソッド」、仕上げのための「メソッド」などに分けられるかと思います。それぞれのメソッドを正しい手順で行うことで、想定通りの料理を完成させることができます。

MIMでは、レシピの「メソッド」に相当するコンポーネントは「Management Agent(MA)」と呼ばれます。連携元外部システム用のMAで「下ごしらえ」を、連携先外部システム用のMAで「仕上げ」の定義や実行を行うことができるでしょう。「煮炊き」のメソッドはどこにいったのでしょうか?それは「MIMポータル」用のMAで定義します。

前回、MIMの「セルフマネージメント」機能のために、MIMポータルというWebアプリケーションを使う、とお話ししました。MIMポータルは、ID連携を一元化するためのWebインターフェースとデータベースを持つ、特殊な外部システムです。メタバースと密接に連携し、連携元ID情報をいったん吸い上げて、必要な変更を加えてメタバースに戻すといった、特別な動作を行うことができます。MIMポータル用MAでメタバースの振る舞いを決め、結果的に思い通りの「煮炊き」を実行することができます。

ちなみに各「メソッド」で実際に行う手順ですが、MIMでは「ルール」というコンポーネントで実装されます。材料をフライパンに乗せるまでの手順(入力方向)は「Inbound Synchronization Rules」と呼ばれ、調理済み料理をお皿に盛るまでの手順(出力方向)は「Outbound Synchronization Rules」と呼ばれます。それぞれのルールは必要なMAに紐づけられるため、同期が行われた際この手順に添ってIDの内容が変更されて、出力先に反映します。

このような話を図にすると、次のようになります。

MIMの基本的なしくみをまとめると、以下のようになると思います。

まず、連携元や連携先システムである「外部システム」が入口と出口にあり、そのデータを同期する「メタバース」がMIMの中心にあたります。各外部システムとメタバース間には「コネクタスペース」があり、ここに置かれたデータを使ってメタバースは同期を行い、その振る舞いはMAやルールで決めることができます。入出力の外部システムとは別に、「MIMポータル」というメタバースのための外部システムがあり、MIMポータル用のMAでメタバースの振る舞いを決めることができます。

「基本的なしくみ」といったのは、実際にはこれら変換動作は「ワークフロー」を使って定義されるのですが、実機にインストールし、設定する段階でお話ししたほうがわかりやすいだろう、と思っているためです。

ひとまず基本的なしくみをご理解のうえ、実機を設定すると少しずつMIMのことがわかってくるかと思います。次回は実際の構成となる、サーバーの構成内容や基本的なインストール設定について、お話ししたいと思います。