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|