Gå til innhold

Vigobas ma ad ins

AD MA - Installasjon

Funksjonalitet

Oppdaterer Active Directory (AD) med brukere, grupper og gruppemedlemskap basert på data fra lokale fagsystemer.

Forutsetninger

  • MIM 2016 server må være installert og satt opp. Se mer info her.
  • VigoBAS-Config må være installert og satt opp. Se mer info her.
  • Importer VigoBAS-Config provisionregler for AD brukere og grupper:

    • ADMA_UserProvision
    • ADMA_GroupProvision
  • Importer VigoBAS-Config reglene du trenger. De reglene som ligger i attributtflyten som standard er disse:

    • ADMA_title
    • ADMA_userPrincipalName
    • ADMA_userAccountControl_check_basUserActive

Veiledning på import av regler finnes her.

Installasjon

  • Importer agenten i MIM ved å velge fanen Management Agents og så menyen Actions + Import Management Agent. Velg filen <installfiles>\ManagementAgents\AD\AD MA.xml

  • Under Connect to Active Directory Forest, oppgi påloggingsinfo for det aktuelle domenet.!

  • Velg aktuelle partisjoner i dialogboksen Partition Matching

  • Huk av for riktig directory partisjon og klikk på "Containers"

  • Huk av for kun de OU'er som skal importeres til MIM. Hvis du mangler en eller flere OU'er som du ønsker å bruke så må de opprettes på DC'en først.

  • Klikk Next

  • Klikk Next

  • Se igjennom om det er ekstra attributter du trenger utover det som har blitt valgt i testløsningen disse skjermbildene er ifra.

  • Legg på connector filter om du vil at enkelte objecter ikke skal behandles. Default ligger er den ingen connector filter

  • Endre reglene for join og projection hvis nødvendig for user og group

  • Verifiser at default attributtflyt er som ønsket.

  • Verifiserer at "Stage a delete on the object for the next export run" er valgt

  • Verifiser at VigoBAS.Flow.dll er valgt i "Rules extension name". Endre "Exchange 210 RPS URI" til å peke på ditt eget Exchange miljø

For provisioning av brukere leveres det med to regler for provisioning.

  • ADMA_EmployeeUserProvision

  • ADMA_StudentUserProvision

Ved to separate AD domener må man ha en MA pr domene og disse to reglene er for å vise logikken ved å sperre for enkelte brukertyper til å bli provisionert til en MA.

ADMA_EmployeeUserProvision er den med mest funksjonalitet og inneholder blant annet mailbox provisioning til Exchange.

Etter oppsett av selve agenten kan/må det gjøres lokale tilpassinger i VigoBAS-Config regler. Dette gjelder følgende oppsett:
  • Filtrere hvilke brukertyper du vil skal provisioneres av MA'n

if entry['basUserPrimaryRole'].IsPresent and entry['basUserPrimaryRole'].Value == 'employee':

basUserPrimaryRole er satt til enten student eller employee av flowregelen USERS_basUserPrimaryRole i Users MA'n. Har man bare ett domene for alle brukertyper legger man til student i if-settningen evt tar bort hele if-sjekken.

  • Sette dager å beholde deaktiverte brukere før de slettes helt. Std er 90 dager. Settes i provision koden for regelen ADMA_Provision:

DAYS_TO_KEEP = 90

  • Velge OU for aktive og deaktiverte brukere. Std. er oppsett for testmiljøet. Settes i provision koden for regelen ADMA_Provision:

disableDN = 'CN=' + entry['firstName'].Value + ' ' + entry['lastName'].Value + ',OU=DEACT USERS,OU=AUTO,DC=test,DC=buddy,DC=no'

  • UPN må endres i ADMA_userPrincipalName slik at UPN suffiks matcher ditt eget miljø

  • Etter at OU'er for alle aktuelle bruker og gruppe objekter er opprettet på DC'en så må man kjøre en full import på agenten.

Exhange oppsett

PS: Hvis man ikke ønsker å opprette Exchange postbokser (feks. i testmiljø uten Exchange server) så kan man fjerne all Exchange kode (som vist i boksen nedenfor) fra flytregelen, og velge No provisioning under fanen Configure Extensions på AD agenten.

I initial provision flow for ADMA ligger flyt for Exchange attributtene. Disse må endres slik at de matcher ditt eget miljø. Default ser reglen slik ut:




#Set users mailbox db. Mail database based on first letter in firstName.

mbxUsers1 =['A','B','C','D','E','F','G','H','I','J','K']

mbxUsers2 =['L','M','N','O','P']

mbxUsers3 =['Q','R','T','U','V','W','X','Z','Y','Æ','Ø','Å']

if source['firstName'].Value[0].upper() in mbxUsers1:

    target['homeMDB'].Value = 'CN=MBX1,CN=Databases,CN=Exchange Administrative Group (FYDIBOHF23SPDLT),CN=Administrative Groups,CN=BasExch,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=test,DC=buddy,DC=no'

if source['firstName'].Value[0].upper() in mbxUsers2:

    target['homeMDB'].Value = 'CN=MBX2,CN=Databases,CN=Exchange Administrative Group (FYDIBOHF23SPDLT),CN=Administrative Groups,CN=BasExch,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=test,DC=buddy,DC=no'

else:

    target['homeMDB'].Value = 'CN=MBX3,CN=Databases,CN=Exchange Administrative Group (FYDIBOHF23SPDLT),CN=Administrative Groups,CN=BasExch,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=test,DC=buddy,DC=no'



#If all new mailboxes to one mailbox db: Use this:

#target['homeMDB'].Value = 'CN=MBX1,CN=Databases,CN=Exchange Administrative Group (FYDIBOHF23SPDLT),CN=Administrative Groups,CN=BasExch,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=test,DC=buddy,DC=no'



target['msExchHomeServerName'].Value = '/o=BasExch/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Configuration/cn=Servers/cn=EXCHANGE1'



target['mailNickname'].Value = source['uid'].Value



Initsielt må man bestemme seg om man vil fordele brukerene på flere databaser eller om man vil opprette alle nye brukere i samme database. I koden over er det vist 2 eksempler. Det første eksempelet vil fordele brukerene i 3 forskjellige databaser baset på første bokstav i fornavnet. Det andre (det som er kommentert ut i koden) vil legge alle nye mailboxer i samme database.

Slik finner man verdiene som exchangeattributtene trenger:

msexchangehomeservername

Åpne Exchange management consollet på en av exchangeserverene dine og kjør følgende cmdlet:


Get-Mailbox <alias for mailbox>|select-object ServerLegacyDN

homeMDB

Fra samme ps consoll kjør følgende cmdlet:


Get-MailboxDatabase <navn på mailboxdatabase>|Select-Object distinguishedName

Gruppe provisionering

Provisionering av grupper gjøres ved å legge de gruppetypene du vil provisionere inn i arryet willProv. Disse gruppetypene settes av import MA'ene til description feltet på MV objectet.


# -*- coding: utf-8 -*-



agentName = 'AD MA Ansatt'

connectors = entry.ConnectedMAs[agentName].Connectors.Count

provisionGroup = False

#type attribute on group object in MV contains the groupType

willProv = ['company','department','orgUnit']



if entry['displayName'].IsPresent and entry['type'].IsPresent and entry['type'].Value in willProv:

    if connectors >= 0:

        provisionGroup = True



return provisionGroup

I initial provisionflow setter du DN til hvor du vil ha de ulike gruppene:


# -*- coding: utf-8 -*-

import sys

import string





if source['displayName'].IsPresent:



    #Remove illigal characters for use in displayName. Replace with "-"

    _displaynameIN =source['displayName'].Value

    inCharSet = "[]:;|=+*?<>\,/\\"

    outCharSet = "---------------" 

    splCharReplaceList = string.maketrans(inCharSet, outCharSet)

    _displayname = _displaynameIN.translate(splCharReplaceList)



    #Constuct the displayName visible in Exchange GAB

    if source['type'].Value == 'company':

        _displayname = 'VFK-Virksomhet-' + _displayname

    if  source['type'].Value == 'orgUnit':

        _displayname = 'VFK-OrgEnhet-' + _displayname

    else:

        _displayname = 'VFK-' + _displayname



    target['displayName'].Value = _displayname





    #Remove national characters for use in CN

    inCharSet = "ÆØÅæøå" 

    outCharSet = "AOAaoa" 

    splCharReplaceList = string.maketrans(inCharSet, outCharSet)

    _cn = _displayname.translate(splCharReplaceList)



    #Construct the CN

    initConstructedCN = 'CN=' + _cn



    #Set DN. Change to match your AD structure

    if source['type'].Value == 'company':

        tryDN=initConstructedCN + ',OU=AUTO GRUPPER,OU=GRUPPER,OU=CORP,DC=ansatt,DC=vfklab,DC=no'

        target.DN = source.ConnectedMAs['AD MA Ansatt'].CreateDN(tryDN)



    if source['type'].Value == 'department':

        tryDN=initConstructedCN + ',OU=AUTO GRUPPER,OU=GRUPPER,OU=CORP,DC=ansatt,DC=vfklab,DC=no'

        target.DN = source.ConnectedMAs['AD MA Ansatt'].CreateDN(tryDN)



    if source['type'].Value == 'orgUnit':

        tryDN=initConstructedCN + ',OU=AUTO GRUPPER,OU=GRUPPER,OU=CORP,DC=ansatt,DC=vfklab,DC=no'

        target.DN = source.ConnectedMAs['AD MA Ansatt'].CreateDN(tryDN)





#The flowrule above could be written like this when all groups will be provision

#to the same OU

#if source['type'].Value in ['company','orgUnit','department']:

#       tryDN=initConstructedCN + ',OU=AUTO GRUPPER,OU=GRUPPER,OU=CORP,DC=ansatt,DC=vfklab,DC=no'

#       target.DN = source.ConnectedMAs['AD MA'].CreateDN(tryDN)





De ulike typene av grupper (basisgrupper, undervisningsgrupper osv) kan være ulike typer i AD. Dette styres av flowrule ADMA_groupType


# -*- coding: utf-8 -*-

#ADMA_groupType 

# Set groupType based on type attrib in MV



if source['type'].Value == 'trinn':

    target['groupType'].Value = '8'



else:

    #Default groupType is Universal Security group

    target['groupType'].Value = '-2147483640'

Dette er de verdiene groupType attributtet kan ha:

| Type | Scope | groupType|

|---------------|-------------|----------|

| Distribution| Global| 2 |

| |Domain local | 4|

| |Universal | 8|

| Security |Global|-2147483646|

| |Domain local |-2147483644|

| |Universal |-2147483640|