Dedicated Group Manager¶
Teams, die einen spoke bekommen, brauchen außerdem Zugriff auf einige Ressourcen außerhalb des spokes. Beispiele sind der zentrale Bastion-Host, der Zugriff auf ihre virtuellen Maschinen gibt (Verbindung zu virtuellen Maschinen), und eine Registry, die die Images der Managed Templates enthält. Jede Team-Gruppe von Hand zu diesen Ressourcen hinzuzufügen skaliert nicht. Weise stattdessen die Rolle einmal einer dedizierten Gruppe zu und lass eine pipeline die Team-Gruppen in dieser Gruppe pflegen.
Diese Seite beschreibt diese pipeline und ihr Skript, für das Plattform-Team.
Herkunft dieser Seite
Das Skript und die pipeline stammen aus dem spoke canvas früherer Versionen, und die pipeline ist eine Azure-DevOps- pipeline. Namen sind die der Starter-Dateien. Prüfe, was deine Code-Version mitliefert.
Was sie macht¶
Das Skript liest alle spoke-Dateien, sammelt die Team-Gruppen jedes spokes und hält die dedizierte Gruppe auf dem aktuellen Stand:
- Team-Gruppen, die noch nicht in der dedizierten Gruppe sind, werden hinzugefügt;
- Team-Gruppen, die in keiner spoke-Datei mehr vorkommen (der spoke ist weg), werden entfernt;
- eine optionale Liste von Gruppennamen wird immer hinzugefügt, egal ob ein spoke auf sie verweist (zum Beispiel ein Security-Team).
Die pipeline wird durch einen Commit auf main des Konfigurations-Repositorys ausgelöst, die Gruppe ändert sich also bei Bedarf, sobald
ein spoke hinzugefügt oder entfernt wird. Nutzer führen sie nicht aus.
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, ..."]
Nicht im Umfang enthalten
Das Skript weist der dedizierten Gruppe keine Rollen zu. Weise die Rolle (zum Beispiel die Pull-Rolle der Registry oder das Recht auf dem Bastion-Host) der Gruppe selbst zu, als Code.
Komponenten¶
| Was | Wo | Anmerkung |
|---|---|---|
DedicatedGroupManager.ps1 |
Ordner Scripts des Code-Repositorys |
Teil der Plattform. Ändere es nicht in deiner Kopie. |
DedicatedGroupManager.yaml |
Ordner pipelines des Konfigurations-Repositorys |
Starter-Datei. Passe sie an. |
Die pipeline einrichten¶
- Erstelle im Konfigurations-Repository eine pipeline aus der bestehenden YAML-Datei, mit dem Namen
DedicatedGroupManager. - Führe sie einmal von Hand aus, um den Pool, die Variable Group und die service connection zu autorisieren.
- Passe die Datei an:
| Punkt | Erforderlich | Was zu tun ist |
|---|---|---|
| Variable Group | Nur wenn ihr Name abweicht | Die pipeline nutzt dieselbe Variable Group wie das spoke-Deployment. |
ref des Code-Repositorys |
Ja | Verwende den Tag der Code-Version, die du betreibst. Aktualisiere ihn bei jedem Upgrade. |
ScriptArguments |
Ja | Siehe die Parameter unten. |
Ein anonymisierter Auszug des Schritts:
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 | Bedeutung |
|---|---|
SpokeFilePath |
Wo das Skript mit der Suche nach spoke-Dateien beginnt. Behalte normalerweise den Default. |
TargetEntraGroup |
Name der dedizierten Gruppe, die in der Administrative Unit erstellt wird. Beispiel: AllSpokeTeams. |
TargetEntraGroupAdminUnitId |
ID der Entra-ID-Administrative-Unit, in der die Gruppe erstellt wird. |
AlwaysAddGroupsToTargetEntraGroup |
Kommagetrennte Gruppennamen, die immer Mitglieder sind, zum Beispiel "Security team,VM management". Leer für keine. |
Betrieb¶
- Die pipeline nutzt die service connection des spoke-Deployments. Sie muss Gruppen in der Administrative Unit der dedizierten Gruppe verwalten dürfen.
- Nachdem ein spoke entfernt wurde (spoke löschen), entfernt der nächste Lauf auf
mainseine Team-Gruppen aus der dedizierten Gruppe. - Wenn ein Team eine zentrale Ressource nicht erreicht, prüfe zuerst, ob seine Gruppe in der dedizierten Gruppe ist und ob die pipeline nach dem Merge der spoke-Datei gelaufen ist.
Verwandte Seiten¶
- Spoke extensions: Die ACR-Extension nutzt dieselbe Idee verschachtelter Gruppen.
- Zugriff, Gruppen und PIM
- Identitäts- und Zugriffsmodell