Gestione dell'identità e degli accessi

Gestione di utenti con ILM 2007

John McGlinchey

 

Informazioni di riepilogo:

  • Comprendere gli elementi di ILM 2007
  • Provisioning e deprovisioning
  • Creazione di un'estensione di regole per l'importazione e l'esportazione
  • Utilizzo di profili di esecuzione per implementare le modifiche

Contenuto

Che cos'È ILM?
Elementi ILM
Provisioning e deprovisioning
Importazione ed esportazione estensioni
Eseguire profili
Il futuro

Microsoft Identity Lifecycle Manager (ILM) 2007 è uno strumento chiave che consente agli amministratori aziendali sincronizzare gli utenti, computer e altri oggetti della directory tra diverse directory e database. Gli utenti, computer, gruppi e anche la struttura di unità ORGANIZZATIVA di Active Directory può essere integrati con LDAP, SQL Server e altri database. Gli attributi possono essere tratto da diverse origini, uniti a un'identità di fiducia e forniti tutte le origini dati. Con ILM, un'organizzazione non necessario progettare una base di fiducia singola per identità tuttavia, possibile integrare invece un reticolo di diverse origini dati con un insieme personalizzato di regole che è possibile simulare i processi e procedure di tale organizzazione.

Gli scenari di utilizzo ILM più comuni includono la sincronizzazione di più Active Directory, l'aggiornamento di un comune Exchange elenco indirizzi globale (EIG) utilizzando più domini di Active Directory o insiemi di strutture e la sincronizzazione di account tra le implementazioni LDAP o tra LDAP e Active Directory. Inoltre, ho utilizzato ILM per migrare da uno o più di Active Directory a un dominio nuovo in un nuovo insieme di strutture e per sistema operativo e applicazione di provisioning utilizzando System Center Configuration Manager (SCCM).

I concetti chiave e i metodi di ILM possono essere un uphill formazione esperienza per gli amministratori orientato sull'infrastruttura con tecniche di sviluppo limitato. Non solo è necessario qualcosa conoscere ILM e codice di estensione ILM lo sviluppo, è inoltre necessario comprendere le origini dati connesse come Active Directory, Exchange, LDAP, SQL Server e così via. Questo tipo di complessità deve essere suddiviso in parti di piccole, consumo, ovvero ciò che si passerà in questo articolo.

Che cos'È ILM?

ILM 2007 combina la gestione di identità e gestione dei certificati che insieme forniscono elementi chiave del modello di identità e gestione di Access (IDA). La parte di ILM alla gestione delle identità era nota come MIIS (Microsoft Identity Integration Server) e, prima che, MMS (Microsoft Meta-Directory Server). (La parte di gestione certificati, in cui vengono gestiti il ciclo di vita dei certificati e smart card, non verrà considerata in questo articolo, ma può essere integrato con la gestione di identità). Durante la gestione delle identità può hanno avuto una crisi identità a sé stante, non verifica un problema le identità di gestione.

Una funzione chiave di IDA con ILM è l'extensibility. Se non vi è un modo semplice selezionabile per eseguire un'operazione, è possibile scrivere codice per estendere le funzionalità di ILM. Anche se qualsiasi codice non necessario affatto che alcune implementazioni di ILM semplice, la maggior parte necessario eseguire una sorta di provisioning di account utente o gruppi, in modo che sta probabilmente destinato a scrivere del codice. Non è importante comprendere, tuttavia. Una volta i concetti chiave verso il basso e comprendere come e quando il codice viene riprodotto nel quadro di IDA, codice di provisioning di ILM è piuttosto semplice.

Elementi ILM

Come con qualsiasi operazione complessa, è necessario comprendere i concetti importanti prima di diving in.

il Metaverse e la directory connessa Il metaverse (MV) è semplicemente un database. Si tratta di un database piuttosto complesso, ma comunque solo un database. ILM utilizza il MV per archiviare la configurazione di tutte le directory connesse (CD) che importare i dati o esportare dati dal MV. Attenzione: non approfondire il database di MV. E non tuttavia mai con esso. Non tentare di eseguire report direttamente dal database MV o modificare elementi in essa contenuti. Finirà solo danneggia. (Parlo qui dall'esperienza.)

agenti di gestione Agenti di gestione (agenti) sono gli strumenti utilizzati per definire il CD. È possibile creare una regola per l'importazione e l'esportazione di dati nel MV da un CD utilizzando l'agente di gestione di importare ed esportare le regole. Questa regola definisce inoltre quale MA contribuisce a cui attributo e come dati viene eliminati dal MV una volta scompare da tutti i CD. TechNet è documenti scenario scaricabile e set di regole che è possibile utilizzare per iniziare rapidamente una volta compreso come funziona. Una volta che è stato masterizzato in semplici scenari, soluzioni più complesse che coinvolgono molte origini dati, le manipolazioni di dati complessi e le regole dettagliate è possibile implementare utilizzando ILM.

MAs possibile filtrare i dati dal CD non è necessaria per rendere più efficiente la connessione. Ad esempio, non sarà necessario analizzare ogni UO in Active Directory. Selezionare solo le unità organizzative necessarie consentono di ricercare oggetti nuovi o modificati molto più veloci. In un database SQL Server connesso, l'applicazione di filtri dati non necessari possibile salvare molto tempo quando l'elaborazione importazione delle regole (Sebbene sia un metodo ancora più efficiente utilizzare una vista SQL Server per fornire il solo i dati necessari per l'agente di gestione in primo luogo).

spazio connettore, importazione ed esportazione Ogni MA si connette il MV attraverso uno spazio connettore univoco (CS) che riflette gli elementi di dati del CD di. Dati viene quindi spostati da o verso il CS il MV in base alle regole di importazione ed esportazione. Creare un nuovo oggetto in una directory connessa è una questione semplice di creazione di un connettore nel CS per CD e l'esportazione di tale oggetto nel CD.

L'esempio nella Figura 1 Mostra un MA connesso a un server Active Directory. Si tratta di MA il più semplice e più comune che può essere configurata. la figura 2 Mostra gli attributi che vengono trasferiti in ingresso e in uscita della MV. Le frecce di definiscono la direzione del flusso di dati. Si noti che non tutti gli attributi sono selezionati, il modello di flusso solo quelli che sono ritenuti necessari per implementare i dati. I dati viene passato come - è senza apportare modifiche, a meno che non esista un'estensione di importazione o esportazione.

fig01.gif

Figura 1 è che un agente di gestione si connette ILM per una directory connessa, in questo caso, Active Directory, la possibilità di selezionare unità organizzativa specifica.

fig02.gif

Nella figura 2 il flusso di attributi definisce la modalità ogni attributo verrà importare ed esportare di ILM.

Durante i flussi di attributo, può essere in un attributo che viene importato da più CD. Se l'attributo si verifica in più di un CD, sarà necessario decidere quale CD contribuirà l'attributo. Si tratta di precedenza di attributo.

join e proiezione Join indica che la connessione di una voce in uno spazio connettore a un oggetto MV esistente. I criteri per la regola di join sono completamente spetta all'utente. Se si esegue il join agli utenti di un database in di MV, è possibile utilizzare i numeri dipendente o una combinazione di nomi e numeri. È necessario utilizzare un elemento che consente una connessione univoca tra il CD e di MV all'interno di CS. Tenere presente che i criteri di join devono essere univoci o la regola di join verrà generato un errore. Ciò detto, ILM è completamente estendibile e se si desidera, è Impossibile scrivere il codice per decidere quale delle voci non univoche a partecipare.

Proiettando significa inserendo i dati nel MV dallo spazio di connessione di una directory connessa. Per effettuare questa operazione, è necessario creare una proiezione regola (vedere la Figura 3 ), che prevede solo pochi clic del mouse. Provisioning, verrà generata in un minuto, ovvero push dei dati nel CS di un CD dal MV e ciò comporta in modo definito più di pochi clic del mouse. Può essere considerata in questo modo: "del progetto in" è "fornitura uscita" di MV le MV. È possibile progetto senza scrivere codice, ma di fornitura, sarà necessario scrivere del codice. Ecco non a che è non può implementare un flusso di dati non di qualsiasi tipo di implementazione. Se tutti gli oggetti esiste già e si si desidera assicurarsi che gli attributi rimangano sincronizzati, non potrebbe essere necessario alcun codice. È sufficiente configurare tutti gli importazione ed esportazione flussi di dati e le regole di join e si è quasi buona passare.

fig03.gif

Nella figura 3 le regole di join e proiezione vengono utilizzate per definire come oggetti sono associati o creato in ILM.

Una MA può avere più regole di join, ognuno con più criteri di join, ma vi può essere solo una regola di proiezione.

Provisioning e deprovisioning

Il codice nella Figura 4 Mostra un esempio di requisiti per il provisioning di un nuovo utente in Active Directory. Come è stato è capire che è stato necessario creare un nuovo utente? In questo caso specifico, abbiamo le informazioni da un sistema H/R, ma Impossibile altrettanto bene provengono da un'operazione semplice come un foglio di calcolo o un file di testo con informazioni di nuovi utenti e una MA impostare per gli utenti di importare il MV. ILM è molto flessibile e possibile importare dati da un'ampia gamma di origini. Per ora, è opportuno utilizzare Active Directory. Il codice di esempio utilizzato qui è derivato da MIIS 2003 scenari è disponibile per il download" Scenari di Microsoft ® Identity Integration Server 2003."

Nella figura 4 provisioning nuovi oggetti nella directory connessa

''   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

In sostanza, il codice verifica se un utente esiste già. Se l'utente non esiste, un nuovo connettore viene creato per l'utente, come illustrato nella Figura 5 . Se l'utente non esiste, potrebbe già esistere un connettore da Active Directory in CS, vale a dire che ILM non è necessario per le query di Active Directory stessa, solo il CS del MA che si connette a Active Directory. La regola di esportazione definisce i dati di flusso in Active Directory, in modo che il codice di creazione e preparazione all'uso solo necessario creare il connettore e consentire le regole del flusso di eseguire il resto. Una cosa da tenere presente che se si push dei dati all'interno di codice, il provisioning di dati viene inseriti solo quando il connettore viene creato, non su ogni ciclo di sincronizzazione come con flusso di dati impostati utilizzando le regole del flusso.

Nella figura 5 Creazione di un nuovo connettore

'
                ' 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

Per configurare la creazione e preparazione all'uso, sarà necessario richiedere il codice di implementazione e utilizzare Visual Studio per la creazione in una DLL. Il nome assegnato alla DLL non molto questione, ma è necessario inserire la DLL la cartella di estensioni in cui è installato ILM e quindi utilizzare il nome per configurare il provisioning. Una cosa da ricordare è che provisioning si verifica nella MV, non per i singole agenti. Il codice viene eseguito ogni volta che un'andata e ritorno MA su un elemento che deve essere eseguito il provisioning, ma il provisioning non è parte della configurazione MA; è parte la configurazione di gestione di identità di ILM globale, come illustrato nella Figura 6 . Un passaggio di risoluzione dei problemi buona quando si verificano errori durante MA esegue è temporaneamente disattivare provisioning, isolamento e il test solo per l'importazione ed esportazione di regole e non il codice di implementazione. Una volta è confermare che l'importazione e utilizzano le regole di esportazione, quindi è possibile avviare la risoluzione dei problemi il provisioning del codice per individuare il problema.

fig06.gif

Nella figura 6 con un'estensione di regole personalizzate per definire la distribuzione

Annullamento dell'implementazione è il processo di disconnessione di un oggetto da della MV. Sono disponibili tre opzioni per specificare lo stato di un oggetto:

  1. Rendere un oggetto "sezionatore" consente di significa che l'oggetto non è stato aggiunto, ma non viene rimosso dal CD. Se si non è filtrato, è possibile anche fine backup back a destra nel CS durante l'importazione il successivo.
  2. Rendere un oggetto "sezionatore esplicita" allo stesso modo, l'oggetto non è stato aggiunto e non viene rimosso dal CD di, ma in questo caso è contrassegnato anche non essere reimportati.
  3. L'eliminazione dell'oggetto dal CD di significa esattamente che. L'oggetto verrà eliminato dal CS e nel CD della successiva esecuzione di esportazione.

Prestare molta attenzione con le selezioni effettuate deimplementazione, come può essere un incubo principale se non eseguita correttamente e, ancora peggio, si possono distruggere i dati selezionando l'opzione errata. Eseguire sempre il test in un ambiente di laboratorio con backup valido.

Importazione ed esportazione estensioni

A un certo punto, si troverà probabilmente la necessità di eseguire un'operazione con dati di CD durante l'importazione o esportazione, come l'unione di più attributi per formare un nome completo o connessione il nome utente con nome di dominio per formare un indirizzo di posta elettronica. In questo caso, è possibile iniziare la creazione di un'estensione di regole, che è essenzialmente il codice che consente modifiche complesse. Durante l'importazione, un'estensione di regole significa che è possibile adottare più CD attributi input per un singolo attributo di MV. Durante l'esportazione, significa che è possibile inserire più MV attributo in un singolo attributo di CD. Si noti che l'elemento di comune è che l'origine del flusso di dati è possibile utilizzare più attributi ma che la destinazione del flusso di dati necessario un singolo attributo. Anche in questo caso, questo è abbastanza semplice fintanto che il codice inserito e la DLL risultante dovranno essere collocati nella cartella estensioni. È quindi utilizzare tale nome nella definizione di estensione di regole all'interno della configurazione MA (vedere Figura 7 ) nonché come interno il codice per definire la regola che ottiene implementata.

fig07.gif

Nella figura 7 possono essere personalizzato attributo flusso regole estensioni writtenfor attributo complesso fl ows.

Eseguire profili

Dopo avere agenti impostate per importare ed esportare dati, è necessario indicare ILM per eseguire un'importazione, esportazione o una sincronizzazione. Per effettuare questa operazione, si imposta un profilo di esecuzione per ciascuna di queste operazioni all'interno della configurazione MA e quindi eseguire una di esse alla volta per ottenere i dati per spostarsi tra i passaggi appropriati dal CD per curriculum per MV e da MV per CV su CD (vedere la Figura 8 ).

fig09.gif

Figura 8 flussi di dati dalla directory connesse per il connettore metaversethrough spazio e nuovamente.

Le operazioni possono essere completo, che controlla tutti gli elementi, o delta, che controlla solo gli oggetti che sono stati modificati. Per un'importazione completa, ILM verrà così controllare ogni oggetto nella directory connessa e importare tutto lo spazio del connettore. Un'esportazione completa non il contrario, da CS su CD. Una sincronizzazione completa sincronizzerà le MV a ogni oggetto connesso, ogni oggetto durante una sincronizzazione delta Sincronizza solo gli oggetti modificati. Quando attivato, il provisioning ottiene generato durante la sincronizzazione e decide se i nuovi connettori sono necessarie in una directory connessa esaminando il CS per CD.

Per eseguire un profilo, è possibile fare clic con il pulsante destro del mouse su una MA, selezionare e scegliere un profilo. È possibile combinare più passaggi in un unico profilo. Ad esempio, in genere impostare un profilo "Completo Importa & Full Sync" ogni MA nonché "Delta Importa & Delta Sync" e "Esportazione" profili. Profili possono anche essere eseguiti dai file di comando utilizzando uno strumento denominato runMA.vbs, disponibile gratuitamente download in scenari menzionati in precedenza.

I profili di ILM MA in genere vengono eseguiti in sequenza da uno script batch all'interno il servizio di pianificazione di Windows. Sì, sembra un throwback, ma se operazioni verranno probabilmente modificati in futuro, per ora è deve solo creare un semplice script per l'esecuzione di agenti utilizzando runMA. La maggior parte dei dati di directory non vengono modificati in tempo reale comunque. Consente di utilizzare l'utilità di pianificazione sul server ILM per eseguire questo script quando è necessario mantenere aggiornato operazioni. Tenere presente che agenti potrebbe essere necessario da eseguire in un ordine specifico basato sul modello di sincronizzazione di dati e può avere un impatto significativo sull'utilizzo della rete, pertanto bilanciare la necessità di sincronizzazione dei dati con la necessità di probabilmente in conflitto per un impatto minimo sulla rete.

Il futuro

ILM verrà ottenere un aggiornamento in un prossimo futuro che verrà visualizzata una nuova interfaccia basata sul Web, l'integrazione del flusso di lavoro, provisioning utilizzando un'interfaccia utente basata sul Web e modifica di un altro nome. ILM è essere adottato nella famiglia di prodotti di gestione di accesso di protezione e Forefront e come Forefront Identity Manager (FIM) 2010 presto sarà noto. Come si ottiene più vicina a rilasciare per vedere come è possibile applicare quanto appreso in questo articolo per il livello successivo di gestione delle identità e degli accessi, cercare articoli su FIM 2010.

John McGlinchey MCP, MCSA, MCSE è un consulente senior di per i Microsoft Servizi di consulenza in area di Philadelphia, PA, concentrandosi sulle gestione delle identità e degli accessi. John ha più di 30 anni di esperienza nel settore informatico, inclusi più di 20 anni di esperienza di consulenza. Blog di ha all' blogs.technet.com/johnmcg/, e è uno del IDAGUYS in blogs.technet.com/idaguys/che regolarmente blog sugli argomenti IDA. Passare nella figura.