Ga naar inhoud

Dedicated group manager

Teams die een spoke krijgen, hebben ook toegang nodig tot een paar resources buiten de spoke. Voorbeelden zijn de centrale Bastion host, die toegang geeft tot hun virtual machines (Verbinden met VM's), en een registry met de images van de managed templates. Elke teamgroep met de hand aan die resources toevoegen schaalt niet. Wijs de rol in plaats daarvan één keer toe aan een dedicated groep, en laat een pipeline de teamgroepen in die groep bijhouden.

Deze pagina beschrijft die pipeline en het bijbehorende script, voor het platformteam.

Herkomst van deze pagina

Het script en de pipeline komen uit de spoke canvas van eerdere versies, en de pipeline is een Azure DevOps- pipeline. Namen zijn die van de startbestanden. Controleer wat jouw codeversie meelevert.

Wat het doet

Het script leest alle spoke-bestanden, verzamelt de teamgroepen van elke spoke en houdt de dedicated groep op orde:

  • teamgroepen die nog niet in de dedicated groep zitten, worden toegevoegd;
  • teamgroepen die in geen enkel spoke-bestand meer voorkomen (de spoke is weg), worden verwijderd;
  • een optionele lijst met groepsnamen wordt altijd toegevoegd, of een spoke ernaar verwijst of niet (bijvoorbeeld een securityteam).

De pipeline start bij een commit naar main van de configuratierepository, dus de groep wijzigt op aanvraag, zodra een spoke wordt toegevoegd of verwijderd. Gebruikers draaien hem niet.

flowchart LR
    c["Commit to main<br/>(spoke file added or removed)"] --> p["Pipeline"]
    p --> s["Script reads all spoke files"]
    s --> g["Dedicated Entra ID group<br/>(in an administrative unit)"]
    g -.->|"role assigned once<br/>on the resource"| r["Bastion, registry, ..."]

Buiten scope

Het script wijst geen rollen toe aan de dedicated groep. Wijs de rol (bijvoorbeeld de pull-rol van de registry, of het recht op de Bastion host) zelf als code aan de groep toe.

Onderdelen

Wat Waar Opmerking
DedicatedGroupManager.ps1 Map Scripts van de coderepository Onderdeel van het platform. Wijzig het niet in je kopie.
DedicatedGroupManager.yaml Map pipelines van de configuratierepository Startbestand. Pas het aan.

De pipeline inrichten

  1. Maak een pipeline aan vanuit het bestaande YAML-bestand in de configuratierepository, met de naam DedicatedGroupManager.
  2. Draai hem eenmalig handmatig, om de pool, de variable group en de service connection te autoriseren.
  3. Pas het bestand aan:
Onderdeel Verplicht Wat te doen
Variable group Alleen als de naam verschilt De pipeline gebruikt dezelfde variable group als de spoke-deployment.
ref van de coderepository Ja Gebruik de tag van de codeversie die je draait. Werk hem bij bij elke upgrade.
ScriptArguments Ja Zie de parameters hieronder.

Een fragment van de stap, geanonimiseerd:

trigger:
  branches:
    include:
      - main

steps:
  - task: AzurePowerShell@5
    displayName: "Update group memberships"
    inputs:
      azureSubscription: $(ServiceConnectionName)
      ScriptType: "FilePath"
      ScriptPath: $(System.DefaultWorkingDirectory)/spokedeployment-tf/Scripts/DedicatedGroupManager.ps1
      ScriptArguments: -SpokeFilePath <spoke-folder> -TargetEntraGroup "<group-name>" -TargetEntraGroupAdminUnitId "<administrative-unit-id>" -AlwaysAddGroupsToTargetEntraGroup ""
      pwsh: true
Parameter Betekenis
SpokeFilePath Waar het script begint met zoeken naar spoke-bestanden. Laat normaal de default staan.
TargetEntraGroup Naam van de dedicated groep, aangemaakt in de administrative unit. Voorbeeld: AllSpokeTeams.
TargetEntraGroupAdminUnitId ID van de Entra ID administrative unit waarin de groep wordt aangemaakt.
AlwaysAddGroupsToTargetEntraGroup Kommagescheiden groepsnamen die altijd lid zijn, bijvoorbeeld "Security team,VM management". Leeg voor geen.

Beheer

  • De pipeline gebruikt de service connection van de spoke-deployment. Die moet groepen mogen beheren in de administrative unit van de dedicated groep.
  • Nadat een spoke is verwijderd (Spoke verwijderen), verwijdert de volgende run op main de teamgroepen ervan uit de dedicated groep.
  • Als een team een centrale resource niet kan bereiken, controleer dan eerst of zijn groep in de dedicated groep zit, en of de pipeline is gedraaid nadat het spoke-bestand was gemerged.