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¶
- Maak een pipeline aan vanuit het bestaande YAML-bestand in de configuratierepository, met de naam
DedicatedGroupManager. - Draai hem eenmalig handmatig, om de pool, de variable group en de service connection te autoriseren.
- 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
mainde 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.
Gerelateerd¶
- Spoke extensions: de ACR-extensie gebruikt hetzelfde idee van geneste groepen.
- Toegang, groepen en PIM
- Identiteits- en toegangsmodel