AD Replikator Agent

Indledning#

AD Replikator Agent holder OU-strukturen og brugernes placering i Active Directory ajour med organisationen i OS2sofd og kan vedligeholde tilhørende sikkerhedsgrupper. Dette dokument beskriver installation og konfiguration.

KomponentServicenavnDownloadÆndringslog
AD Replikator AgentSofdCoreADReplicatorDownloadÆndringslog

Forudsætninger#

Windows Server#

Servicen skal installeres på en Windows maskine med:

  • Netværksmæssig adgang til kommunens AD
  • Netværksmæssig adgang til SOFD Core via HTTPS

Service konto i AD#

Der skal oprettes en servicekonto, som har lov til at

  • Oprette og redigere OU’ere
  • Flytte brugere
  • Oprette og vedligeholde sikkerhedsgrupper

API bruger til SOFD Core backend#

Der skal i konfigurationen tilføjes en API nøgle til OS2sofd. Denne oprettes via OS2sofds administrative brugergrænseflade. Integrationen skal have læseadgang til OS2sofd.

Konfiguration#

Start med at installere servicen, og dernæst opsæt konfigurationen. Endeligt kan der knyttes en servicekonto til servicen og servicen kan startes.

Download service#

Hent installeren via download-linket øverst på siden eller fra den samlede Download-oversigt.

Konfiguration af service#

Konfiguration af servicen foretages i filen appsettings.json

SofdSettings#

IndstillingEksempelKommentar
BaseUrlhttps://kommune.sofd.ioURL til SOFD installationen
ApiKeyxxxNøgle til API’et
OrgUnitPageSize2000Max antal enheder der læses ud (sæt til en værdi højere end det samlede antal enheder i OS2sofd)
ExcludeFromSyncTagNameNavnet på det (optionelle) Tag der kan sættes på enheder i OS2sofd, som gør at enheden ikke replikeres til AD
PersonsPageSize1000Antal gange der max læses brugere - de to settings til sammen skal være højere end antallet af brugere i OS2sofd
SOFDToADOrgUnitMap(se eksempel nedenfor)Mapning mellem OS2sofd UUIDer og AD OUer (distinguishedName). Der skal minimum angives én mapning her (typisk fra rod-enhed i OS2sofd til en OU i OS2sofd), men det er muligt at splitte op i flere mapninger sådan at organisationen i OS2sofd sendes til forskellige steder i AD.

Eksempel på SOFDToADOrgUnitMap:

"SOFDToADOrgUnitMap": {
        "sofd_uuid_1": "ad_dn_1",
        "sofd_uuid_2": "ad_dn_2"
}

PAMSettings#

IndstillingEksempelKommentar
Enabledtrue/falseAngiver om PAM er slået til
CyberArkAppIdAppId til CyberArk api-kald
CyberArkSafeSafe til CyberArk api-kald
CyberArkObjectObject til CyberArk api-kald
CyberArkAPIBase url til CyberArk api

ActiveDirectorySettings#

IndstillingEksempelKommentar
RootOUDN på den OU som hele strukturen skal bygges i. Indstillingen udfases: Anvend SofdSettings.SOFDToADOrgUnitMap
RootDeletedOusOuOU=Slettede enheder,DC=kommune,DC=dkDN på en OU som integrationen skal flytte slettede enheder til
RequiredOUFields.OUIdFieldadminDescriptionVælg en attribut (single-value tekst attribut) som integrationen kan bruge til at gemme UUID på enheden fra OS2sofd. Dette er et krævet felt.
OptionalOUFields.
EanField
EanFieldInherit
StreetAddressField
CityField
PostalCodeField
LosIDField
OrgUnitTypeField
Valgfri angivelse af AD attributnavne hvor yderligere oplysninger om enheden skal skrives til.
TestOURuntrue/falseAfvikler OU oprettelse/flytning/omdøbning mv. i test-tilstand hvor der ikke ændres i AD, men kun logges hvad der vil ske.
MoveUsersEnabledtrue/falseSæt til “false” hvis man ikke ønsker at flytte brugere (også en god startværdi, indtil man er sikker på at OU strukturen er på plads)
DryRunMoveUserstrue/falseAfvikler flytning af brugere i test-tilstand hvor der ikke ændres i AD, men kun logges hvad der vil ske.
DontMoveUserRegularExpressionsHvis der er brugere som aldrig må flyttes, så kan man angive et regex på de brugernavne som skal være undtaget flytning
DontMoveUserFromTheseOUstrue/falseListe af DN på OUer som der ikke må flyttes brugere fra.
ExcludeExternalUserstrue/falseUndtager eksterne brugere for flytning. Med eksterne menes de brugerkonti som er direkte knyttet til et eksternt tilhørsforhold, eller brugere ikke knyttet til et tilhørsforhold, men hvor det primære tilhørsforhold er eksternt. Bemærk at denne indstilling kun gælder flytning af brugere, ikke gruppemedlemskab. Eksterne (og vikarer) undtages fra grupper via de tilsvarende indstillinger under den enkelte gruppe-opsætning (se ExcludeExternalUsers / ExcludeSubstituteUsers under GroupSettings nedenfor).
GroupSettingsSe afsnittet nedenfor
OUNameReplaceRegexes[“s/,//”,“s/[;:]/-/”]Liste af regulære udtryk i sed-replace-syntaks til at erstatte tegn i OU-navnet. Eksemplet til venstre erstatter alle kommaer med en tom streng samt alle semikoloner og koloner med en bindestreg.
OURunScriptOnCreateC:/scripts/OnOUCreate.ps1Sti til script der afvikles efter OU oprettelse.
OURunScriptOnDeleteC:/scripts/OnOUDelete.ps1Sti til script der afvikles efter OU sletning (flytning til en slettet OU).
OURunScriptOnMoveC:/scripts/OnOUMove.ps1Sti til script der afvikles efter OU flytning.
UserRunScriptOnMoveC:/scripts/OnUserMove.ps1Sti til script der afvikles efter bruger flytning.

GroupSettings#

Dette afsnit er et optionelt sub-set af ActiveDirectoryConfiguration, og bruges til at oprette og vedligeholde et sæt af AD sikkerhedsgrupper

IndstillingEksempelKommentar
EnabledtrueSlå hele funktionen til/fra
DryRunfalseHvis den sættes til TRUE, så logger den alene ændringer til grupper, men udfører dem ikke
UseFastMethodtrue/falseKan sættes til true for at anvende en hurtigere metode til at læse gruppemedlemskaber fra AD.
DaysBeforeFirstWorkday14Angiver hvor mange dage før første arbejdsdag at brugere meldes ind i grupper svarende til deres afdeling.
GroupOUDNOU=Groups,OU=Kommune,DC=dkDen OU i AD’et hvor alle sikkerhedsgrupperne oprettes. Bemærk at der IKKE må ligge andre grupper i denne OU, da integrationen i så fald vil slette dem.
GroupIdFieldadminDescriptionDen attribut som integrationen bruger til at sætte et unikt ID på gruppen, så den ved hvilken enhed gruppen hører til
DirectManagerGroupStruktur der beskriver hvordan grupper med ledere for enheder oprettes og vedligeholdes - se detaljer for opsætningen nedenfor
DirectMemberGroupStruktur der beskriver hvordan grupper med brugere der har direkte tilhørsforhold i enhederne oprettes og vedligeholdes - se detaljer for opsætningen nedenfor
InheritedMemberGroupStruktur der beskriver hvordan grupper med brugere der har tilhørsforhold til enheder (og alle de underliggende enheder) oprettes og vedligeholdes - se detaljer for opsætningen nedenfor
InheritedManagerGroupStruktur der beskriver hvordan grupper med ledere for enheder (og alle de underliggende enheder) oprettes og vedligeholdes - se detaljer for opsætningen nedenfor
DirectExternalGroupStruktur der beskriver hvordan grupper med eksterne brugere der har direkte tilhørsforhold i enhederne oprettes og vedligeholdes - se detaljer for opsætningen nedenfor
InheritedExternalGroupStruktur der beskriver hvordan grupper med eksterne brugere for enheder (og alle de underliggende enheder) oprettes og vedligeholdes - se detaljer for opsætningen nedenfor
DirectSubstituteGroupStruktur der beskriver hvordan grupper med vikar brugere der har direkte tilhørsforhold i enhederne oprettes og vedligeholdes - se detaljer for opsætningen nedenfor
InheritedSubstituteGroupStruktur der beskriver hvordan grupper med vikar brugere for enheder (og alle de underliggende enheder) oprettes og vedligeholdes - se detaljer for opsætningen nedenfor

DirectManagerGroup er bagudkompatibel med ManagerGroup og InheritedMemberGroup er bagudkompatible med MemberGroup, således begge navne kan anvendes. Såfremt indstillingen er enablet både med sit nye og bagudkompatible navn, vil indstillingerne med de nye navn blive brugt. Vi anbefaler, at man i videst mulige udstrækning bruger de nyeste navne.

Hver af de 4 typer af grupper har en sektion der angiver hvordan disse skal skabes. Strukturen er ens for hver af disse, og konfigureres på følgende måde

IndstillingEksempelKommentar
EnabledtrueSlå oprettelsen af denne type af grupper til/fra
NameHvad skal der stå i name feltet for gruppen
SAMaccountNameHvad skal der stå i SAMAccountName feltet for gruppen
DisplayNameHvad skal der stå i displayname feltet for gruppen
DescriptionHvad skal der stå i beskrivelsesfeltet for gruppen
ExcludeExternalUsersEksterne brugere skal ikke tilføjes til denne gruppe
ExcludeSubstituteUsersVikar brugere skal ikke tilføjes til denne gruppe
ExcludeOUsEn liste over OU, som denne gruppe ikke skal indbefatte

I gruppetypernes indstillinger kan følgende pladsholdere anvendes til at generere gruppens felter.

PladsholderBør kun anvendes påForklaringEksempel
{ID}Name, SAMaccountName, DisplayName, DescriptionEnhedens id i SOFD1032
{LEVEL}Name, SAMaccountName, DisplayName, DescriptionAntal enheder væk fra rod-enheden. Rod-enheden vil returnere 0.2
{NAME}Name, SAMaccountName, DisplayName, DescriptionEnhedens navn i SOFDBørn og Unge
{PATH[X]} - hvor X er et tal 1 eller størreName, SAMaccountName, DisplayName, DescriptionEnheden X niveauer over den gældende enhed. Hvis tallet er større end antallet af enheder til roden, returneres en tom streng.Direktionsområde Velfærd
{PATH[X]} - hvor X ikke er et talSAMaccountName, DisplayName, DescriptionEnhedens fulde sti, separeret af X (så hvis / bruges som separator, vil stien ligne rod-enhed/enhed/enhed). Skal ikke anvendes på Name, da det kan forårsage problemer.Eksempel Komme/Direktionsområde Velfærd/Børn og Unge

Start af service#

Efter servicen er konfigureret startes den via Windows Services eller tilsvarende kommandolinjeværktøjer. Servicen hedder SofdCoreADReplicator i Windows Services.

Ved start/genstart af servicen foretages altid en fuld synkronisering, og ellers udføres der en fuld synkronisering 2 gange om dagen (lidt før kl 5 om morgenen, og lidt før kl 17 om eftermiddagen).

Ændringslog#

Ændringslog for AD Replikator Agent. Nyeste version øverst.

VersionDatoÆndring
1.17.126.06.2026Rettet NullReferenceException i simuleret OU-kørsel for endnu ikke-eksisterende OU’er
1.17.026.06.2026Implementeret både direkte og nedarvede eksterne grupper og vikar-grupper; implementeret udelukkelses-muligheder for grupper.
1.16.315.05.2026Rettet gruppe-synkronisering når SOFD har flere rod-OU’er
1.16.206.01.2026Bedre håndtering af specialtegn i gruppenavne
1.16.115.12.2025Bedre håndtering af ugyldige gruppenavne. ID-flettefeltet bruger nu Id-feltet i stedet for MasterId for SOFD-enheder.
1.16.003.12.2025Tilføjet InheritedManager-gruppe samt flettefelterne PATH og LEVEL
1.15.013.10.2025Tilføjet konfigurationsmulighed for at lave OU-navneerstatninger
1.14.129.09.2025Rettelse til håndtering af gruppemedlemskaber for brugere med store bogstaver i brugernavnet
1.14.025.09.2025Yderligere debug-log ved opdatering af grupper
1.13.006.08.2025Performanceforbedring i kald til OS2sofd
1.12.1612.06.2025Rettelse til grupper med MANGE medlemmer
1.12.1406.06.2025Opdatering af gruppemedlemskaber bør køre hurtigere nu
1.12.1304.06.2025Tilføjet konfigurerbar mulighed for at medtage fremtidige tilhørsforhold i gruppemedlemskaber
1.12.1003.06.2025Ændrer kun gruppe-attributter når der reelt er ændringer på det pågældende felt
1.12.903.06.2025Rettet problem med ændring af sAMAccountName
1.12.802.06.2025Rettet NPE-fejl ved gruppeopdatering med tomme beskrivelser
1.12.702.06.2025Opdaterer ikke grupper inde i grupper ;)
1.12.627.05.2025Logger ikke længere hele PowerShell-scriptet ved afvikling
1.12.514.05.2025Mapper ikke deaktiverede brugere til grupper, og respekterer “arbejdssteder”
1.12.409.05.2025Respekterer employeeId på User’e ved oprettelse af OU-gruppemedlemskaber
1.12.308.05.2025OU-grupper oprettes nu som universelle
1.12.207.05.2025Rettet fejl i manager-mapping for OU-grupper
1.12.005.05.2025Understøttelse af oprettelse og vedligehold af OU-grupper
1.11.011.03.2025Simuleringstilstand for OU’er
1.10.104.03.2025Håndterer “boble-op” for brugere i udelukkede OU’er
1.9.110.02.2025Rettet PowerShell-assembly-afhængighed
1.9.020.12.2024Tilføjet konfigurationsindstilling for OU’er, som brugere ikke må flyttes væk fra
1.8.025.11.2024Kan nu udelukke eksterne brugere i konfigurationen
1.7.019.10.2024Tilføjet understøttelse af PowerShell-scripts
1.6.215.10.2024Rettet problem med specialtegn i OU-navne ved omdøbning/flytning
1.6.119.09.2024Tilføjet noget logning
1.6.0Tilføjet understøttelse af CyberArk (Privileged Access Management)
1.5.0Tilføjet understøttelse af flere tegn i OU-navne (fx komma)
1.4.1Fejlrettelse i OrgUnit-rod-mapping
1.4.0Understøtter DisplayName for OU’er
1.3.0Understøttelse af flere organisationsgrene. Kodesignering.
1.2.1Forsøger at fjerne deletion protect-flaget på OU’er før flytning
1.2.0Understøtter skrivning af LOS ID til et konfigurerbart felt på OU’en
1.1.1RegEx er ikke længere versalfølsom
1.1.0Understøtte non-root root :)
1.0.0Første version