ID同期を行う – グループの発信同期

 
新型インフルエンザが流行っていますね。
Tech・Edを間近に控え、感染するわけにはいかないので、
外出を控え、お寿司も食べず(→ インフルエンザ関係ないけど、おなか壊したら良くないので)
がんばっています。(→大した頑張りじゃないけど..)
そういえば、Tech・Ed North America 2009に行ったときは、
ちょうど新型インフルエンザが流行り始めた時期でしたが、誰もそんなこと気にしていなかったなあ。
 
 
今回は、グループの同期を見てみたいと思います。
これまで、ユーザーの着信同期と発信同期を見てきましたが、グループについてももちろん同期が可能です。
 
MSILMポータルサイトには、配布グループ(画面表記では「配布リスト」)を作成するWebページと、
セキュリティグループを作成するWebページがあります。
 
 
 
ここからグループを作成すると、MSILMデータベースの中にグループのオブジェクトが作成されます。
これをActive Directoryまでレプリケートさせれば、グループに関してもFIM2010を通じた管理が可能となります。
 
グループの発信同期を行うときは、ユーザーのときと同じく
・OSRの作成
・ワークフローの作成
・MPRの作成
をMSILMポータルサイトから行います。
同時に、MSILMデータベース用コネクタスペースからメタバースへ同期するときの関連づけを
MSILMデータベース用管理エージェントで設定します。
 
このうち、ユーザーと異なる設定が必要となる、
MSILMデータベース用管理エージェントでの関連づけの設定と、OSRの作成の2つを見てみたいと思います。
 
■MSILMデータベース用管理エージェントでの関連づけの設定
Identity Management管理ツールから、MSILMデータベース用管理エージェントのプロパティを開き、
Configure Attribute Flowページを開きます(下図)。
 
 
ここで、ObjectType:Groupを展開し、コネクタスペースからメタバースへ同期する際の属性の関連づけを設定します。
一般的に必要な属性として、accountname, member, type, scope, displaynameがあります。
これらはすべて、同じ名前の属性がメタバースにもあるので、上図のように同じ名前どうしで関連づけをします。
そして、ユーザーのときと同じくExpectedRulesList属性の関連づけもお忘れなく。
設定できたら、OKをクリックして保存しておきます。
 
■OSRの作成
OSRの作成方法は基本的にユーザー用のOSR作成と同じです。
異なるのは関連づけの部分になります。
では、関連づけの部分を意識しながら手順を見てみましょう。
 
MSILMポータルサイトから、同期規則→新規でOSRの作成を開始します。
 
全般的な情報タブでは、同期規則の名前とフロータイプを指定します。
ここでは、_Outbound-ADDSGroupという名前にしておきます。
また、フロータイプはOSRの作成ですから、「発信」になります。
 
スコープタブでは、メタバースと関連づけする、コネクタスペースとオブジェクトの種類を選択します。
メタバースオブジェクト型 : group
接続されたシステム : ADDSMA (→ Active Directory用の管理エージェント)
接続されたオブジェクト型 : group
 
リレーションシップタブでは、キーを指定します。
AccountName(メタバース) → sAMAccountName (コネクタスペース)の指定をします。
また、「接続されたシステム内にオブジェクトを作成」にチェックをつけておきます。
 
Outbound属性フロータブでは、メタバースに格納されたオブジェクトの属性を
コネクタスペースのどの属性に関連づけするかを指定します。
ここでは、下の図のように指定してみました。
 
 
ここで注目は、一番下の項目です。
なにやらグチャグチャと文字が並んでいますが、ここはグループのスコープと種類の関連づけをしています。
メタバースでは、グループのスコープはscope属性、グループの種類はtype属性と別々の属性で情報を格納しています。
一方、Active Directoryのスコープと種類の属性は、まとめてgrouptypeという属性に格納されています。
scope属性とtype属性の2つがマージされて、grouptype属性にどのように格納されるかは下の表の通りになっています。
 
 
 
このように、2つの属性情報を1つにまとめなければなりません。最初から作成するグループの種類とスコープが決まっていれば
grouptype属性には数字を決めうちで入れてしまうこともできるでしょうが、実際の運用ではそうはいきません。
そこで、IIFという関数を使って、条件分岐をさせ、scope属性とtype属性の情報に合わせて値がgrouptype属性に入るように
したいと思います。(詳細な情報は ILMのMVPである、Brad Turnerさんのブログでも紹介されています)
IIF関数の基本的な書式ですが、
IIF(Eq(scope,"Global")),2,0)のような書き方をします。
説明すると、scope属性がGlobalだったら、値は2、それ以外は0という見方です。
以上を踏まえると、次のような書き方をすれば、すべての条件を網羅することができます。
 
IIF(Eq(type,"Distribution"),IIF(Eq(scope,"Universal"),8,IIF(Eq(scope,"DomainLocal"),4,IIF(Eq(scope,"Global"),2,0))),IIF(Eq(scope,"Universal"),-2147483640,IIF(Eq(scope,"DomainLocal"),-2147483644,IIF(Eq(scope,"Global"),-2147483646,0))))
 
これをCumstomExpression関数で設定すればOKです。
 
 
 
ここまでのところで、OSRの作成は完了です。
 
 
では、グループをMSILMポータルサイトから作成してみましょう。
今回は、セキュリティグループを作成してみたいと思いますので、
ポータルサイトのトップページから、セキュリティグループのリンクをクリックし、新規をクリックします。
 
基本情報タブでは、グループの名前やスコープなどを指定します。
ここでは、Managersという名前のグループを作成します。
 
 
メンバータブでは、グループのメンバーを指定します。
前の基本情報タブで、
「メンバーの選択」欄を名前に指定した場合、グループのメンバーを手動で指定するのですが、
「メンバーの選択」欄を計算済みに指定した場合、グループのメンバーの指定にクエリを設定することができます。
ここでは、役職属性に「部長」の文字が含まれるユーザーを条件にしてみました。
そうすれば、営業部長、開発部長、宴会部長…みんなManagersグループのメンバーになりますね。
 
 
所有者タブでは、このグループの所有者を指定します。所有者を指定しておくと、
ポータルサイトのトップページにある、自分のグループの欄にこのグループが表示され、
メンバーシップのカスタマイズなどの管理があとからできるようになります。
 
 
以上でできあがりです。
ここまでのところで、Identity Manager管理ツールからRun Profileを実行すると、
メタバース経由でActive Directoryにグループが作成されます。
メンバーの変更があったときは、もう一度Run Profileを実行することで、Active Directoryにあるグループの
メンバーシップ情報も書き換わります。
(この部分のデモはTech・Edでお楽しみください)
 
あっさり実行していますけど、クエリの実行結果に基づいてグループのメンバーが
自動的に替わるってすごいことだと思いませんか?
いままでだと、VBScriptでこの手の処理を行うようなスクリプトを書いたり、Exchange Serverを使ったり、
しなければならなかった訳ですから。