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.
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.
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.
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.
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:
- 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.
- 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.
- 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.
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 ).
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.