アイデンティティおよびアクセス管理

ILM 2007 で Active Directory のユーザーを管理します。

John McGlinchey

 

概要。

  • ILM 2007 の要素を理解します。
  • プロビジョニングおよびプロビジョニング解除
  • インポートとエクスポートには、ルール拡張子の構築
  • 実行のプロファイルを使用して変更を実装するには

内容

ILM とは何か
ILM 要素
プロビジョニングおよびプロビジョニング解除
インポートとエクスポートの拡張機能
プロファイルを実行します。
将来

Microsoft アイデンティティのライフサイクル マネージャー (ILM) 2007年は、エンタープライズ管理者はさまざまなディレクトリとデータベース間の同期ユーザー、コンピューター、およびその他のディレクトリ オブジェクトを維持できるキー ツールです。 ユーザー、コンピューター、グループ、および Active Directory の OU 構造も LDAP、SQL Server、および他のデータベースと統合できます。 属性はさまざまなソースから取得した、権限のある ID にマージされすべてのデータ ソースに戻ることができます。 ILM、企業の ID の 1 つ権限のある基礎をデザインしない必要がありますが調整される一連のルール、プロセスを模倣することができますがおよびその企業のプロシージャと多様なデータ ソースのメッシュを統合代わりにできます。

最も一般的な ILM 使用シナリオは、一般的な Exchange グローバル アドレス一覧 (GAL) 複数の Active Directory のドメインまたはフォレストを使用および LDAP および Active Directory 間、または LDAP の実装間のアカウントの同期の更新、複数のアクティブなディレクトリの同期があります。 1 つまたは複数のアクティブ ディレクトリから、新しいフォレストではオペレーティング システムおよびアプリケーションのプロビジョニング システム センター構成マネージャー (SCCM) を使用して、新しいドメインに移行する ILM にも使用するが。

主要な概念と ILM のメソッド、uphill の制限の開発ノウハウ インフラストラクチャ指向管理者のエクスペリエンスを学習もかまいません。 だけでなく実行する ILM および開発 ILM 拡張子コードについて何かを理解には、またする Active Directory、Exchange、LDAP、SQL Server など、接続されているデータ ソースを理解します。 このような複雑さが何をしようとするこの資料では、小規模の消耗品の部分に分割できるならないとします。

ILM とは何か

ILM 2007 は ID 管理と連携アイデンティティおよびアクセス管理 (IDA) モデルの主要な要素を提供する証明書の管理を結合します。 ILM のアイデンティティ管理部分が MIIS (識別情報の統合サーバーにある) より前に、MMS (Microsoft Meta-Directory Server) 以前呼ばれます。 (この記事は、証明書とスマート カードのライフサイクルの管理を証明書管理部分しない扱うが、アイデンティティ管理と統合できます)。 ID 管理されているため危機の発生、身元に際して、独自をいた可能性がありますが、間に、ユーザーの管理、問題がないです。

IDA ILM での重要な特徴その機能を拡張しています。 何かを行う単純で可能な方法がない場合は、ILM の機能を拡張するコード記述できます。 単純ないくつか ILM 実装では、任意のコードをまったく必要ありません、ほとんどには、何らかのコードを記述する宛先をいる可能性がありますのでユーザー アカウントまたはグループの準備を行う必要が。 あります 心配、ただし。 ILM コードの準備は主要な概念ダウンししたら IDA の大きな画像に、コードを再生するタイミングと方法を理解する非常に簡単です。

ILM 要素

任意の複雑な作業、同様するでについて説明する前に重要な概念を理解します。

接続されているディレクトリと Metaverse metaverse (MV) は、データベースだけです。 データベースもだけが、非常に複雑なデータベースです。 ILM では、MV を使用してすべての接続されたディレクトリ (CD) にデータをインポートまたは、MV からの出力データのエクスポートの構成を保存します。 警告を表示-MV データベースは詳しくしていません。 失敗しない. MV データベースから直接レポートを実行またはで何も変更しないでください。 だけするが、破損を終了します。 (話せるここでの経験から:)

マネジメント エージェント 管理エージェント (MA) は、使用して CD を定義するには、ツールです。 作成ルールをインポートし、合併/買収先を使用して、CD から、MV にデータをエクスポート インポートおよびルールをエクスポートします。 このルール合併/買収先属性と方法データが削除された、MV から 1 回、すべての CD から消えますが提供されるも定義します。 TechNet はダウンロード可能なシナリオ文書を持ちルール セットをすぐにすべてのしくみを理解すると使用できます。 単純なシナリオを習得した、いったんし多くのデータ ソース、複雑なデータ操作、および詳細なルールを含むより複雑なソリューションで実装できます ILM。

MA より効率的な接続を作成する必要がある CD からのデータ フィルターできます。 たとえば、Active Directory 内のすべての OU をスキャンする必要がありません。 必要な OU だけを選択するスキャンはるかに高速な変更または新しいオブジェクトを作成できます。 不要なデータがフィルター、接続されている SQL Server データベースは、多くの場合の処理ルールのインポート (ただしより効率的な方法は、SQL Server ビューを使用して、合併/買収先に必要なデータだけを最初に提供する) 時間保存できます。

コネクタ スペース、インポート、およびエクスポートします。 各合併/買収先は、CD-ROM のデータ要素を反映する一意のコネクタ スペース (CS) を通じて、MV を接続します。 データしに移動され、CS をインポートおよびエクスポートの規則に基づいて MV。 接続されているディレクトリに新しいオブジェクトの作成はその CD の CS にコネクタを作成し、CD にそのオブジェクトをエクスポートしの単純な問題です。

合併/買収、 図 1 の表示の例は、Active Directory に接続されました。 これは、最も簡単かつ一般的な MA 構成することができます。 図 2 は、MV のフローは属性を示します。 矢印はデータ フローの方向を定義します。 メモしないすべての属性が選択されて、データの実装に必要なものとするものだけフロー モデルこと。 データとしてフローは、拡張子がインポートまたはエクスポート ファイルがない場合は変更されていませんが。

fig01.gif

図 1 を 管理エージェント接続 ILM 接続されているディレクトリに、ここでは、Active Directory、機能が選択特定組織の単位。

fig02.gif

図 2 、属性フロー各属性はインポートおよびエクスポート外の方法を定義する ILM。

属性のフロー、中には複数の CD からインポートする属性に遭遇したことがあります。 属性が複数の CD で発生した場合可能性があるかを決定する CD は、属性を投稿します。 これを属性の優先順位と呼びます。

結合と推定 MV の既存のオブジェクトに、コネクタ空間内のエントリを接続する手段を結合します。 結合ルールの条件は、完全を構成します。 データベースからユーザーを MV に参加する場合は従業員番号や名前と番号の組み合わせを使用できます。 行う、CD と、MV、CS 内で一意の接続がある必要があります。 結合条件を一意にであるかの結合規則は、エラーになること注意してください。 とはいえ、ILM は完全に拡張し、非固有のエントリへの参加を決定するコードを書き込みする場合は、可能性があります。

MV に接続されているディレクトリの接続されている領域からデータをプッシュする手段を推定します。 これを行うには、射影を作成するルールの ( 図 3 </a0> 参照)、わずかなマウス クリックをします。 プロビジョニング、おしてみましょう、分、つまり、MV から CD の CS にデータをプッシュして、確実により、いくつかのマウス クリック必要があります。 考えるこう:「プロジェクトに」を"不足"の提供、MV と MV。 プロジェクトできるは、準備には、コードを記述せずがコードを記述します。 任意の準備を実行するデータ フローを実装することはできませんという意味です。 すべてのオブジェクトが既に存在し、属性のままで同期を確認するだけで場合は任意のコードを必要はありません。 だけですべてのインポートとエクスポート データ フローを構成と結合規則とほぼ移動してもよい。

fig03.gif

図 3 オブジェクトに関連付けられているまたは ILM。 作成方法の定義に結合および射影ルールを使用

合併/買収先は、それぞれ複数の結合条件を持つ複数の結合規則が 1 つの射影ルールはのみできます。

プロビジョニングおよびプロビジョニング解除

Active Directory で新しいユーザーの準備に必要なの例を 図 4 のコードに示します。 方法がお解明新しいユーザーを作成する必要がありますか。 この特定のケースでは、H と R、システムからの情報を受け取ったおがそのでしただけでなくが新規のユーザーの情報と、MV にそれらのユーザーをインポートするよう設定 MA は、ワークシートまたはテキスト ファイルとして、単純なものから。 ILM は、非常に柔軟なあり、さまざまなソースからデータをインポートできます。 ここでは、Active Directory に貼り付けてみましょう。 ここでは使用例は、MIIS 2003 のシナリオからダウンロード可能なから派生した" Microsoft ® Identity Integration Server 2003 シナリオ."

図 4 の接続されているディレクトリ内の新しいオブジェクトを準備します。

''   Copyright (c) Microsoft Corporation.  All rights reserved.

Imports Microsoft.MetadirectoryServices
Imports System.Xml

Public Class MVProvision
    Implements IMVSynchronization

    '
    ' These two variables are initialized based on a xml configuration file
    ' The values are read during the Initialize() method of the Rules Extension
    '
    Dim fabrikamUsersContainer As String
    Dim fabrikamDisabledUsersContainer As String

    '
    ' Number of retries on name conflict
    '
    Private Const RETRY_NUM_LIMIT = 1000

    Public Sub Provision( _
        ByVal mventry As MVEntry) _
        Implements IMVSynchronization.Provision

        Dim employeeStatus As String
        Dim ADMA As ConnectedMA
        Dim dn As ReferenceValue
        Dim container As String
        Dim rdn As String
        Dim myConnector As CSEntry
        Dim csentry As CSEntry
        Dim numADConnectors As Integer
        Dim successful As Boolean = False
        Dim cnForObject As String
        Dim numberToAppend As Integer = 1

        If Not mventry.ObjectType.Equals("person") Then
            Exit Sub
        End If

        If Not mventry("cn").IsPresent Then
            Throw New UnexpectedDataException("cn does not exist on MV bject")
        End If

        ADMA = mventry.ConnectedMAs("ADMA")
        '
        ' Get the cn attribute from MV which will be used to configure CS dn
        '
        cnForObject = mventry("cn").Value.ToString()

        '
        ' Based on the value of "employeeStatus" determine the container in AD
        '
        employeeStatus = mventry("employeeStatus").Value.ToLower
        Select Case employeeStatus
            Case "active"
                container = UsersContainer
            Case "inactive"
                container = DisabledUsersContainer
            Case Else
                '
                ' employeeStatus must be active or inactive to be valid
                ' any other case is an error condition for this object. 
                ' Throw an exception to abort this object's synchronization. 
                '
                Throw New UnexpectedDataException("employeeStatus=" + employeeStatus.ToString)
        End Select

        Do
            Try

                ' Based on the value of "cn" determine the RDN in AD
                rdn = "CN=" & cnForObject

                ' Now construct the DN based on RDN and Container
                dn = ADMA.EscapeDNComponent(rdn).Concat(container)

                '
                ' If there is no connector present, add a new AD connector
                ' and call a subroutine to set the initial values on the CS Object
                '
                numADConnectors = ADMA.Connectors.Count
                If 0 = numADConnectors Then

                    csentry = ADMA.Connectors.StartNewConnector("user")
                    csentry.DN = dn
                    SetInitialValues(csentry, mventry)
                    csentry.CommitNewConnector()
                ElseIf 1 = numADConnectors Then
                    '
                    ' check if the connector has a different DN and rename if necessary
                    ' First get the connector
                    '
                    myConnector = ADMA.Connectors.ByIndex(0)

                    '
                    ' MMS will rename/move if different, if not nothing will happen
                    '
                    myConnector.DN = dn
                Else
                    Throw New UnexpectedDataException("multiple AD connectors:" + 
                      numADConnectors.ToString)
                End If

                successful = True

            Catch ex As ObjectAlreadyExistsException

                '
                ' There is a duplicate object in the target AD, 
                ' change the cn accordingly to avoid conflict
                '
                cnForObject = mventry("cn").Value & " (" _
                                & numberToAppend.ToString & ")"
                numberToAppend = numberToAppend + 1

                If numberToAppend > RETRY_NUM_LIMIT Then
                    Throw New UnexpectedDataException( _
                        "Retry for " & mventry("cn").Value _
                        & " exceeds limit " & numberToAppend.ToString)
                End If

            Finally ' Add cleanup code in the Finally section

            End Try

        Loop While Not successful

    End Sub
    ' Set Values on a NEW provisioned CS Entry
    Private Sub SetInitialValues( _
    ByRef csentry As CSEntry, _
    ByVal mventry As MVEntry)

        csentry("unicodepwd").Values.Add(mventry("employeeID").Value)

    End Sub

    Public Function ShouldDeleteFromMV( _
        ByVal csentry As CSEntry, _
        ByVal mventry As MVEntry) _
        As Boolean Implements IMVSynchronization.ShouldDeleteFromMV

        Throw New EntryPointNotImplementedException
    End Function

    Public Sub Initialize() Implements IMVSynchronization.Initialize

        Const SCENARIO_XML_CONFIG = "\simpleprov.xml"

        Dim config As XmlDocument = New XmlDocument
        Dim dir As String = Utils.ExtensionsDirectory()
        config.Load(dir + SCENARIO_XML_CONFIG)

        Dim rnode As XmlNode = config.SelectSingleNode(
           "rules-extension-properties/account-provisioning/container")
        Dim node As XmlNode = rnode.SelectSingleNode("root")
        Dim rootContainer As String = node.InnerText

        node = rnode.SelectSingleNode("enabled-users")
        UsersContainer = node.InnerText + "," + rootContainer

        node = rnode.SelectSingleNode("disabled-users")
        DisabledUsersContainer = node.InnerText + "," + rootContainer

    End Sub

    Public Sub Terminate() Implements IMVSynchronization.Terminate
    End Sub
End Class

つまり、コードは、ユーザーが既に存在するかどうかを調べます。 図 5 に示すように、ユーザーが存在しない場合は、新しいコネクタが [ユーザーの作成されます。 ユーザーが存在する場合は既にある、ILM 自体、Active Directory に接続する、MA の CS だけ Active Directory を照会する必要はありませんので、CS で Active Directory からコネクタ。 エクスポート ルールをプロビジョニングのコードは、必要がありますのみコネクタを作成および残りの部分は、フロー ルールを使用するように Active Directory にフローするデータを定義します。 覚えて、プロビジョニング、コード内のデータをプッシュする Do 場合のみ、コネクタが作成されるとすべての同期サイクルではなくフロー規則を使用して設定するデータ フローと同様にデータがプッシュされること 1 すべきです。

図 5 の新しいコネクタの作成

'
                ' If there is no connector present, add a new AD connector
                ' and call a subroutine to set the initial values on the CS Object
                '
                numADConnectors = ADMA.Connectors.Count
                If 0 = numADConnectors Then

                    csentry = ADMA.Connectors.StartNewConnector("user")
                    csentry.DN = dn
                    SetInitialValues(csentry, mventry)
                    csentry.CommitNewConnector()

                ElseIf 1 = numADConnectors Then
                    '
                    ' check if the connector has a different DN and rename if necesarry
                    ' First get the connector
                    '
                    myConnector = ADMA.Connectors.ByIndex(0)

                    '
                    ' MMS will rename/move if different, if not nothing will happen
                    '
                    myConnector.DN = dn
                Else
                    Throw New UnexpectedDataException("multiple AD connectors:" + 
                      numADConnectors.ToString)
                End If

                successful = True

プロビジョニングを構成するには、プロビジョニングのコードを実行し、Visual Studio を使用して DLL に構築する必要があります。 DLL に付ける名前は、多くの問題を ILM がインストールされている拡張フォルダーに、DLL を格納し、その名前を使用して準備を構成する必要があります。 1 つを覚えておくことですがプロビジョニング、個々 の MA ではなく、MV に行われます。 コードを介して、準備はならないものたびに、合併/買収先へのトリップを実行するがプロビジョニング、合併/買収先の構成の一部はなく 図 6 に示すように、全体的な ILM ユーザー マネージャーの構成の一部です。 1 つの良いトラブルシューティング ステップ、一時的にプロビジョニング、それによってだけで、インポートするテストを分離を無効にし、ルールとプロビジョニング コードされませんをエクスポートする合併/買収先の実行中にエラーが発生した場合。 確認すると、インポート エクスポート ルールをしているし、提供コードを問題を見つけるトラブルシューティングを開始できます。

fig06.gif

図 6 の 準備を定義する、カスタム ルールの拡張の使用

プロビジョニング解除は、MV からオブジェクトを切断のプロセスです。 オブジェクトの状態を指定の 3 つの選択肢があります。

  1. CD からは削除されませんが、オブジェクトが参加できなく、オブジェクトを"disconnector"を行うは意味します。 場合にフィルター処理されませんもかもしれません、次回のインポートで、CS で右バックを終了します。
  2. "明示的な disconnector"のオブジェクトを作成するオブジェクトなった参加しているし、CD-ROM からは削除されませんがここがもマークを再びインポートしていない予定があるは同様に意味します。
  3. 正確にことを意味の CD から、オブジェクトを削除します。 オブジェクトは、次のエクスポートの実行に、CS と CD の両方から削除されます。

十分に注意 deprovisioning の設定として不適切なオプションを選択してデータを破壊が正常に完了し、さらに悪い、ない場合は、大きな悩みの種を指定できます。 常に適切なバックアップとラボ環境でテストを行います。

インポートとエクスポートの拡張機能

いくつかの時点で、インポートまたはエクスポートして、完全な名前を形成する複数の属性のマージや電子メール アドレスを形成するドメイン名でユーザー名を接続中に CD のデータ処理を実行する必要があります可能性があります。 このような場合複雑な変更を有効にするコード本質的には、ルールの拡張の作成を開始する時間は方です。 インポート、[規則の拡張子を CD の複数の属性を単一の MV 属性への入力として実行できますは意味します。 エクスポート、こと複数 MV 属性を 1 つの CD 属性に取り込むことができますを示します。 ここでの一般的な要素が元のデータ フローの複数の属性を使用できますが、データ フローのターゲットする必要が、単一の属性をあることことを確認します。 繰り返しますが、これは非常に単純なコードと結果、DLL は、拡張フォルダーに配置する限りです。 合併/買収先構成内には、ルール拡張を定義するその名前をしに使用する ( 図 7 を参照) として内にも実装を取得するルールを定義するコード。

fig07.gif

図 7 の カスタム属性フロー ルール拡張を使用できます writtenfor 複雑な属性 fl ows。

プロファイルを実行します。

MA するように設定データをインポートおよびエクスポートしたら、ILM、インポート、エクスポート、または、同期を実行するように指示があります。 これを行うには、これらの操作、合併/買収先の構成内の各に対して、実行のプロファイルの設定し、そのうちの 1 つを一度に MV に [CV を CD から、次を CD に [CV MV から、適切な手順を移動するデータを取得する実行 ( 図 8 </a0> 参照)。

fig09.gif

図 8 、metaversethrough、コネクタに接続されているディレクトリからのデータ フローの領域し、再度バックアウトします

操作は、すべての内容を検査する完全または差分、変更されているオブジェクトだけを検査する実行されます。 したがって、フル インポートの ILM 接続されたディレクトリ内のすべてのオブジェクトを検査をすべてをコネクタ空間にインポートします。 フル エクスポートは、CD に CS から逆をしません。 差分同期が、変更されたオブジェクトだけを同期中に完全な同期は、接続されている各オブジェクトに MV ですべてのオブジェクトを同期します。 有効にするとと、プロビジョニングの同期中にトリガーを取得され、その CD を CS を検査して、接続されているディレクトリで新しいコネクタが必要なかどうかの決定します。

プロファイルを実行するには、合併/買収先を右クリックを実行] をクリックし、プロファイルを選択します。 複数のステップは、1 つのプロファイルに結合できます。 たとえば、する通常セットアップ「デルタ インポート & デルタ同期」などすべて合併/買収先に [フル インポート & 完全同期] プロファイルおよびプロファイルのエクスポート"します。 プロファイルもで実行できる無料の runMA.vbs、利用可能と呼ばれるツールを使用するコマンド ファイルからダウンロード前述のシナリオ。

ILM 合併/買収先のプロファイルは、通常、Windows スケジューラ サービス内のバッチ スクリプトから順番に実行されます。 はい、throwback のように見えますが、点は、将来変更可能性があります、しなくてここでは必要がありますだけでビルドする runMA を使用して、MA を実行する単純なスクリプト。 ほとんどのディレクトリ データはリアルタイムでこのまま変更されません。 ILM サーバーでよく点を最新の状態に保つ必要に応じて、このスクリプトを実行、タスク スケジューラを使用します。 MA が、データの同期モデルに基づいて特定の順序で実行できるネットワーク使用率に大きな影響を与える、ために最小限の影響、ネットワーク上の競合する可能性がありますが必要でデータの同期の必要性のバランスできるようにする注意してください。

将来

ILM は取得アップグレード、近い将来、新規の Web ベースのインターフェイス、ワークフローの統合、もたらすは Web ベースの UI を使用しての準備- と別の名前変更します。 ILM は、Forefront ファミリのセキュリティおよびアクセス管理製品に採用されている Forefront ユーザー マネージャー (FIM) 2010年としては認識される早く. アイデンティティおよびアクセス管理のレベルにここで学んだ教訓の適用方法を使用して解放に近い位置を取得、FIM 2010 にここで記事を探します。

ジョン McGlinchey MCP、MCSA、MCSE はマイクロソフト コンサルティング サービス、フィラデルフィア、PA 領域でアイデンティティおよびアクセス管理に焦点のシニア コンサルタントです。 John は 30 年以上の経験、20 年以上のコンサルティング経験を含む、コンピューター業界にします。 彼のブログで blogs.technet.com/johnmcg/、彼は 1 で、IDAGUYS の blogs.technet.com/idaguys/ユーザー IDA トピックに関するブログを定期的にします。 図を移動します。