Blog

Azure DevOps-Berechtigungen auf Unternehmensebene aus dem Schützengraben

Fokko Veegens

Aktualisiert Oktober 15, 2025
12 Minuten

Oder wie Sie die rollenbasierte Zugriffskontrolle (RBAC) in Azure DevOps in Unternehmensumgebungen implementieren und trotzdem wartbar halten. 4 Antipatterns und ein Ansatz, wie Sie dies selbst implementieren können!

Einführung und Schlüsselwerte

Die Zuweisung von Berechtigungen an Benutzer und Benutzergruppen in Azure DevOps ist in kleinen Unternehmen, vielleicht bis zu 25-50 Mitarbeitern, einfach und unkompliziert. Bei einem großen Unternehmen muss man sich jedoch genau überlegen, wie man dies angehen will. Bei einem mittelgroßen Kunden (etwa 250 Benutzer) musste ich die Berechtigungsstruktur in Azure DevOps neu gestalten. Die wichtigste Anforderung war, die Zugriffskontrolle über den Microsoft Identity Manager (MIM) verwalten zu können. microsoft identity manager ). Microsoft MIM wird eingesetzt, um eine rollenbasierte Zugriffskontrolle (RBAC - role-based access control) zu implementieren. Wikipedia-Seite zur rollenbasierten Zugriffskontrolle). Die Idee hinter dieser Implementierung ist, dass Teamleiter anstelle eines Supportteams den Zugriff auf Systeme genehmigen können (Selbstbedienung). Dieser Zugriff wurde von den Systemadministratoren durch die Einrichtung von MIM-Rollen und Microsoft Entra ID oder Active Directory (AD)-Gruppen vordefiniert. Durch die Verwendung von MIM-Rollen, die mit Entra-Gruppen verknüpft sind, ist es nicht mehr notwendig, einzelnen Benutzern Berechtigungen zuzuweisen, da sie lediglich einer Gruppe hinzugefügt werden müssen.

In diesem Artikel geht es nicht um die Einrichtung von RBAC selbst, sondern darum, wie Sie RBAC in Azure DevOps erleichtern.

Wichtiger Hinweis: Ich gehe davon aus, dass Sie über ausreichende Kenntnisse und Erfahrungen verfügen, um Entscheidungen über Änderungen der Berechtigungen in Azure DevOps zu treffen. Eine nützliche Referenz zum Verständnis von Berechtigungen ist diese: Dokumentationsseite zu permissions-access?view=azure-devops

Annäherung

Lassen Sie uns nun mit dem Ansatz fortfahren;

Ich habe die folgenden Schlüsselwerte als Grundlage für die Implementierung festgelegt:

  • Wartbarkeit - Häufige Änderungen sollten so mühelos wie möglich sein
  • Sichtbarkeit - Man sollte leicht erkennen können, welche spezifischen Berechtigungen eine Person hat
  • Integration - Die Einrichtung sollte mit MIM integriert werden
  • Transparenz - Die Mitarbeiter haben Zugang zu allen Ressourcen innerhalb von Azure DevOps, es sei denn, es gibt einen triftigen Grund, den Zugang zu beschränken. Dies gilt vor allem für Ingenieure (dies widerspricht dem Prinzip des geringstmöglichen Umfangs an Privilegien, aber ich ziehe Transparenz dem geringstmöglichen Umfang an Privilegien vor, wenn möglich).

Die Schlüsselwerte werden unter Verwendung der folgenden Richtlinien implementiert:

  • Verwenden Sie keine "Verweigern"-Berechtigungen
  • Berechtigungen werden immer über Entra/AD- oder Azure DevOps-Gruppen vergeben, niemals über einen einzelnen Benutzer. Dies gilt auch für die Mitgliedschaft in Gruppen auf Team Project-Ebene
  • Die Mitgliedschaft in jeder "Administratoren"-Gruppe (Projektadministratoren, Endpunktadministratoren, Build-Administratoren, Release-Administratoren usw.) ist auf das Team beschränkt, das Azure DevOps verwaltet. Das Problem ist, dass diese Gruppen die Berechtigung zum Ändern von Berechtigungen erteilen
  • Sorgen Sie für Ordnung und Sauberkeit. Wenn ein Team aufhört zu existieren, besprechen Sie mit dem Team, was es übernehmen kann: - Entfernt (Backlogs, Bereiche, Iterationen, Pipelines, Repos) - Archiviert (Backlogs) - Übertragen auf ein anderes Team
  • Wenn das Unternehmen separate Konten für die Systemadministration verwendet, sollten die Benutzer nicht in der Lage sein, über diese Konten auf Azure DevOps zuzugreifen. Dafür sind sie nicht gedacht. Außerdem würde dies zu zusätzlichen Lizenzkosten führen. Die einzige Ausnahme sollte/kann das Team sein, das Azure DevOps verwaltet, so dass sie die Belange trennen können
  • Einheitliche Namen für Azure DevOps- und Entra/AD-Gruppen im gesamten System
  • Standardmäßige Azure DevOps-Gruppen verfügen über vorgefertigte Berechtigungen, die in keiner Weise geändert werden sollten. Wenn benutzerdefinierte Berechtigungen erforderlich sind, erstellen Sie eine weitere Gruppe

Implementierung

Die Implementierung von Sicherheitsstrukturen kann mühsam sein und sich in langwierige Prozesse einfügen. Daher halte ich es für gut, dies so agil wie möglich anzugehen und den Fortschritt nicht mehr als nötig zu verlangsamen.

Der Aufbau der Gruppenstruktur in AD und MIM nimmt viel Zeit in Anspruch, also dachte ich mir, ich würde (1) erstellen Sie die Berechtigungsgruppen (die tatsächlich eine zukünftige Rolle in MIM widerspiegeln) in Azure DevOps auf der Ebene Sammlung/Organisation. Dann (2) Benutzer in diese Gruppen aufnehmen und sobald die AD/MIM-Gruppen fertig sind, kann ich die (3) ersetzen Sie die einzelnen Benutzer durch die Gruppen.

Es hilft auch, zuerst (1) die neue Berechtigungsgruppe erstellen, dann (2) die Berechtigungen an diese Gruppe zu vergeben und dann (3) die Gruppe mit anderen Gruppen oder Einzelpersonen füllen (dies ist ein Zwischenschritt, bevor die eigentlichen MIM-Rollen verfügbar sind). Danach, (4) können die alten Berechtigungen entfernt werden.

Bevor wir zu den eigentlichen Schritten und Beispielen übergehen, sollten wir uns einige Antimuster ansehen.

Antipattern 1 - Direkt an Einzelpersonen vergebene Berechtigungen

Direkt einer Person zugewiesene Berechtigung

Wenn einer Person in einer großen Umgebung sehr spezifische Berechtigungen zugewiesen werden, ist es sehr schwer, diese nachzuvollziehen. Es gibt keinen zentralen Ort, an dem man diese Berechtigungen einsehen kann. Ein Beispiel ist die Schubkraft Berechtigung in einem Git Repo. Diese Berechtigung wird häufig angefordert und implementiert, indem einer Person die Berechtigung für ein bestimmtes Repository erteilt wird. Diese Berechtigung kann nur zurückverfolgt werden, indem Sie in die Repository-Einstellungen gehen, zu einem bestimmten Repository navigieren und dann die Sicherheitseinstellungen überprüfen. Keine leichte Aufgabe in einer Umgebung, in der ein Projekt 100+ Repos enthält...

Erstellen Sie stattdessen eine Gruppe auf Team-Projekt- oder Organisationsebene, weisen Sie dieser Gruppe Berechtigungen zu und machen Sie andere Gruppen/Personen zu Mitgliedern dieser Gruppe.

Schritt 1: Erstellen Sie eine Gruppe auf Organisationsebene und fügen Sie Mitglieder hinzu;

Erstellen Sie eine Gruppe auf Organisationsebene

 

Schritt 2: Erstellen Sie eine Gruppe auf Projektebene und machen Sie eine Gruppe auf Organisationsebene zu einem Mitglied dieser Gruppe;

Erstellen Sie eine Gruppe auf Projektebene

 

Schritt 3: Weisen Sie der Gruppe auf Projektebene Berechtigungen zu (die Gruppe wird nicht standardmäßig angezeigt; suchen Sie sie mit Hilfe des Suchfeldes);

Berechtigungen einer Gruppe zuweisen

Antimuster 2 - Einsatz von Teams in Fällen, in denen Gruppen verwendet werden können

Team anstelle von Gruppe

 

Wenn Sie ein Team erstellen, werden in der Regel ein Bereich sowie Boards, teamspezifische Einstellungen und Dashboards erstellt. Wenn Sie ein Team erstellen, um eine Gruppe von Personen zu beherbergen, die nur (eine) bestimmte Berechtigung(en) teilen, dann ist das ein ziemlicher Aufwand. Verwenden Sie eine Gruppe statt eines Teams. Ein Team ist nur erforderlich, wenn eine Gruppe von Personen mit Azure Boards zusammenarbeitet. Wenn keine Azure Boards erforderlich sind, erstellen Sie stattdessen eine Gruppe.

Antipattern 3 - Ändern der Berechtigungen von Standardgruppen

Ändern der Standard-Gruppenberechtigungen

 

Jede Azure DevOps-Organisation verfügt über Standardgruppen (siehe Referenz am Ende dieses Beitrags), und jedes erstellte Teamprojekt verfügt ebenfalls über Standardgruppen. Wenn Sie die Berechtigungen dieser Gruppen ändern, stiftet das Verwirrung bei Ihren Mitarbeitern. Die Leute erwarten, dass sich Standardgruppen standardmäßig so verhalten. Wenn Sie ein anderes Verhalten benötigen, erstellen Sie eine neue Gruppe speziell für dieses Verhalten. Sehen Sie sich die Lösung für das erste Antipattern "Einzelpersonen direkt zugewiesene Berechtigungen" an, mit der auch dieses Antipattern gelöst wird.

Antipattern 4 - Missbrauch von Administratorgruppen auf Projektebene

Mitgliedschaft in einer Administratorengruppe

 

Um eine Azure-Pipeline zu erstellen, die einen bestimmten Agent-Pool verwendet, benötigen Sie die Berechtigung, diesen Agent-Pool zu nutzen, da die Pipeline sonst nicht verwendet werden kann. Um die Berechtigungen zu erteilen, sollten Sie die Personen nicht in die Gruppe der Build- oder Release-Administratoren aufnehmen! Warum nicht? Weil diese Personen die Berechtigung erhalten, Berechtigungen zu ändern, was Ihr RBAC-Modell durcheinander bringen könnte.

Die Mitgliedschaft in einer administrativen Gruppe verleiht die Berechtigung zur Änderung

 

Erstellen Sie stattdessen eine separate Gruppe, in der die Benutzer Rolle in diesem speziellen Agent-Pool oder in mehreren Agent-Pools zugewiesen ist. Dies ist nur auf Team Project-Ebene möglich, nicht auf Organisationsebene (die Rolle Benutzer ist dort nicht verfügbar).

Schritt 1: Erstellen Sie eine Gruppe auf Projektebene und fügen Sie die Gruppe Team Project Contributors zu dieser Berechtigungsgruppe hinzu.

Neue Gruppe erstellen

 

Schritt 2: Geben Sie der benutzerdefinierten Berechtigungsgruppe für alle Agent Pools die Rolle Benutzer

Mitglied der Benutzerrolle machen

Strategie zur Umsetzung

Bevor Sie mit der Umsetzung beginnen, sollten Sie sich Gedanken über die Strategie machen. Die Strategie hängt ganz von der Situation ab, in der sich das Unternehmen befindet. In meinem Fall war ich in der Lage, sie in kleinen Phasen umzusetzen, so dass ich den Kurs/die Richtung ändern konnte, wenn die von mir gewählten Lösungen nicht wie erwartet funktionierten. Außerdem konnte ich den Prozess in zwei Schritten durchführen:

  1. Benutzer in Azure DevOps-Gruppen (auf Organisationsebene) aufnehmen
  2. Ersetzen Sie diese Benutzer durch die neuen Entra/AD/MIM-Gruppen, sobald diese bereit sind.

Bei der Ausarbeitung Ihrer eigenen Strategie hat es mir geholfen, diese Punkte zu beachten:

  • Informieren Sie die Benutzer über Änderungen, die Sie vornehmen. So können sie sich melden, wenn sich Änderungen der Berechtigungen auf ihre Arbeit auswirken.
  • Kurze Verbesserungszyklen gegenüber langen Projekten mit Big-Bang-Implementierungen
  • Bleiben Sie regelmäßig in Kontakt mit dem für MIM und Entra/AD zuständigen Team und erkundigen Sie sich nach dessen Anforderungen
  • Nehmen Sie Änderungen so vor, dass sie leicht wieder rückgängig gemacht werden können.

Konventionen zur Namensgebung

Es ist hilfreich, wenn die Gruppen in Azure DevOps einer Namenskonvention entsprechen. Das macht sie leicht zu erkennen. Natürlich steht es jedem frei, seine eigenen Konventionen festzulegen, aber dies sind die Konventionen, die ich verwendet habe:

Ebene Konvention Beispiel Erläuterung
Organisation[Firmenname] - [Gruppe]Contoso - IngenieureDiese Gruppen replizieren die MIM-Gruppen, sie beschreiben eine Rolle, z.B. Ingenieur oder Scrum Master
Organisation[Firmenname] Servicekonto [Servicename]Contoso Servicekonto SonarQubeServicekonten haben manchmal kryptische Namen. Wenn Sie sie in Gruppen zusammenfassen, wird die Verwendung klarer
Team Projekt oder Organisation[Firmenname] Teamleads [Teamname]Contoso Teamleads JedisTeamleads haben mehr Berechtigungen (z.B. Sprint-Administration), sie sind Mitglied der Rolle Team Admins
Team Projekt oder OrganisationBenutzerdefinierte Freigabegruppe - [Teamname oder andere Angabe]Benutzerdefinierte Freigabegruppe - Jedis CD to ProdGenehmigungen können in Pipelines eingerichtet werden. Wenn Sie einzelne Genehmiger hinzufügen, wird die Verwaltung dezentralisiert. Die Verwendung einer Gruppe ist viel einfacher.
Team-ProjektBenutzerdefinierte Berechtigungen - [Bereich] - [Beschreibung der Berechtigung]Benutzerdefinierte Berechtigungen - Repos - Force PushBestimmte Aktionen (in diesem Fall Git Force Push) erfordern spezielle Berechtigungen, die in den Standardgruppen mit Ausnahme der Admin-Gruppen nicht verfügbar sind.
Team-ProjektBenutzerdefinierte Berechtigungen - Abfragen - [Teamname] - Beitragen & LöschenBenutzerdefinierte Berechtigungen - Abfragen - Jedis - Beitragen & LöschenUm einen gemeinsamen Abfrageordner pro Team zu haben, erstellen Sie einen oder mehrere Abfrageordner und weisen Sie ihnen diese Gruppe(n) zu.
Team-ProjektBenutzerdefinierte Berechtigungen - Bereiche - [Team/areaname] - Arbeitsobjekte anzeigenBenutzerdefinierte Berechtigungen - Bereiche - Jedis - Arbeitsobjekte anzeigenUm Personen nur den Zugriff auf das Lesen/Anzeigen von Arbeitsobjekten zu gewähren, fügen Sie die Gruppe/Rolle in diese Gruppe ein.

Bestimmen und erstellen Sie Gruppen auf Organisationsebene

Gruppen auf Organisationsebene sind in der Regel die Gruppen, die die Rollen widerspiegeln würden. Rollen können sein (Blei) Ingenieur, Produktinhaber, Scrum Master, admin oder alles, was Sie brauchen. Bei meinem Kunden habe ich diese Regeln nach und nach entsprechend meinen Bedürfnissen aufgebaut. Ich habe die gesamte Azure DevOps-Umgebung nach benutzerdefinierten Berechtigungen durchsucht und versucht zu überprüfen, ob sie noch notwendig sind und zu welcher Rolle sie gehören. Auf dieser Grundlage habe ich die Rollen auf Organisationsebene erstellt und die ursprünglichen benutzerdefinierten Berechtigungen bereinigt.

Bestimmen und erstellen Sie Gruppen auf Projektebene

Prüfen Sie zunächst immer, ob die Berechtigung/Gruppe auf Organisationsebene generisch gemacht werden kann. Wenn es wirklich notwendig ist, Berechtigungen auf Projektebene einzurichten, dann erstellen Sie dort Gruppen. Einige Situationen, in denen dies nützlich sein kann:

  • Strategische Repositories, die nur für einige leitende Ingenieure zugänglich sind
  • Ein Projekt, mehrere Teams, die ihre eigenen gemeinsamen Abfragen haben
  • Kundenspezifische Projekte, bei denen der Kunde Zugang zu seinem Auftragsbestand hat

Nutzung der Azure DevOps Gruppenregeln

Vor einiger Zeit hat Microsoft Gruppenregeln in Azure DevOps (nur Dienste!). Mit Gruppenregeln können Sie Team Project Access und Lizenzen automatisch Entra-Gruppen zuweisen. Diese Funktion ist insbesondere (aber nicht nur) für die Verwaltung von Lizenzen(Zugriffsebenen) mit Hilfe von Entra Gruppen hilfreich. Ich habe sie zwar nicht bei meinem Kunden eingesetzt, aber wir verwenden sie in unserem eigenen Unternehmen. Unsere Techniker erhalten mit Hilfe von Gruppenregeln standardmäßig die Zugriffsstufe Visual Studio Subscriber. Wir haben eine Gruppenregel, die diese Zugriffsstufe zuweist und unseren Ingenieuren Zugriff auf alle Projekte außer einigen wenigen Team-Projekten gibt.

Gruppenregeln

Verwaltung von Team- und Team-Admin-Mitgliedschaften

Teams und Teamadministratoren sind ein schwieriges Thema bei RBAC, denn eine MIM-Rolle zu haben bedeutet nicht unbedingt, Mitglied eines bestimmten Teams zu sein. Wenn jemand Teamadministrator ist, kann diese Person tatsächlich Teammitglieder hinzufügen und entfernen. Damit wird das RBAC-Prinzip durchbrochen, bei dem alles über Rollen und nicht über Berechtigungen gesteuert wird.

Team Administratoren

Die Teamadministratoren sind also eine "Gruppe", die Sie vermeiden sollten.

Was die Teammitglieder betrifft, so sind damit einige sehr nützliche Funktionen verbunden. Wenn Personen einem Team angehören, werden sie automatisch über wichtige Ereignisse in ihrem Azure DevOps Team benachrichtigt, sie haben ihr eigenes Backlog, das sofort sichtbar ist, wenn sie Azure Boards aufrufen, und es gibt noch weitere Vorteile. Es gibt hier keinen idealen Ansatz. Man könnte alle in der Organisation verfügbaren Teams auf Organisationsebene definieren und diese Gruppen zu Mitgliedern der Gruppe Engineers machen, so dass die Mitarbeiter nicht Mitglied von zwei Rollen sein müssen (der Rolle Engineers und ihrer Teamrolle). Dies würde zu einer Struktur führen, wie sie im folgenden Diagramm dargestellt ist:

Im Diagramm folgen die Pfeile den Mitgliedschaften. Die Gruppe Contoso Engineers hat also drei Mitglieder:

  • Team Jedis
  • Team Starlords
  • Team Wächter
Struktur der Gruppe

Die folgenden Gruppen enthalten dann entweder Benutzer oder Entra/MIM-Gruppen:

  • Team Jedis
  • Team Starlords
  • Team Wächter

Beachten Sie, dass die Standardgruppe auf Teamprojektebene Contributors die Gruppe Contoso Engineers als Mitglied in jedem Projekt hat, damit alle Ingenieure auf alle Teamprojekte (oder zumindest auf die meisten davon) zugreifen und zu ihnen beitragen können.

Referenz

Diese Referenz beschreibt einige Standardgruppen, die auf verschiedenen Ebenen in Azure DevOps verfügbar sind. Eine vollständige Referenz finden Sie unter: Dokumentationsseite zu permissions-access?view=azure-devops

Standardgruppen auf Organisationsebene

Azure DevOps Server (On Prem):

  • Verwalter der Projektsammlung
  • Projekt Sammlung Build Administratoren
  • Projektabholung Build Service Konten
  • Projekt Sammlung Proxy Service Konten
  • Projekt Inkasso Service Konten
  • Projekt Sammlung Test Service Konten
  • Projekt Sammlung Gültige Benutzer
  • Sicherheitsdienst Gruppe
  • Team Foundation lizenzierte Benutzer (nur verfügbar, wenn in der Vergangenheit die Workgroup Edition von TFS verwendet wurde)

Azure DevOps Services (Cloud):

  • Verwalter der Projektsammlung
  • Projekt Sammlung Build Administratoren
  • Projektabholung Build Service Konten
  • Projekt Sammlung Proxy Service Konten
  • Projekt Inkasso Service Konten
  • Projekt Sammlung Test Service Konten
  • Projekt Sammlung Gültige Benutzer
  • Projektgebundene Benutzer
  • Sicherheitsdienst Gruppe

Standardgruppen auf Team Projekt Ebene

Hinweis: Einige Gruppen werden erstellt, wenn die entsprechende Funktion zum ersten Mal verwendet wird.
  • Administratoren bauen
  • Mitwirkende
  • Administratoren der Einsatzgruppen
  • Endpunkt-Administratoren
  • Endpunkt Schöpfer
  • Projekt-Administratoren
  • Projekt Gültige Benutzer
  • Leser
  • Administratoren freigeben

Verfasst von

Fokko Veegens

Hi, I’m Fokko from Voorburg, where I live with my wonderful girlfriend and our two lovely daughters. I’m passionate about outdoor activities like cycling, sailing, skiing, and snowboarding, as well as working on classic cars. My favorite moments, though, are those spent with my family. As a DevOps consultant, I specialize in blending People, Process, and Products to streamline software delivery and ensure top quality. I love tackling bottlenecks, working closely with teams, and focusing on delivering exceptional value to end-users through DevOps best practices.

Contact

Let’s discuss how we can support your journey.