Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Azure DevOps Services
Berechtigungsprüfungen sind Teil vieler Azure DevOps Services-Vorgänge. Im großen Maßstab können viele explizite Berechtigungszuweisungen, Ausnahmen auf Ressourcenebene und Gruppenmitgliedschaften die Berechtigungsauswertung und Aktualisierungen verlangsamen. Große Zugriffssteuerungslisten erfordern außerdem, dass der Dienst mehr Berechtigungsdaten und Identitäten abruft und auflösen kann.
Verwenden Sie die Empfehlungen in diesem Artikel, um den Umfang der Berechtigungsdaten zu reduzieren, die von Azure DevOps Services verarbeitet werden.
Tip
Sie können KI verwenden, um Azure DevOps-Aufgaben zu unterstützen. Informationen zu den ersten Schritten finden Sie unter Enable AI-Unterstützung bei Azure DevOps MCP Server.
Grenzwerte für weiche Leistung
Verwenden Sie die folgenden Grenzwerte als Planungsziele für große Organisationen. Azure DevOps Services erzwingt diese Grenzwerte nicht oder blockiert Berechtigungsänderungen, die sie überschreiten. Die Überschreitung erhöht jedoch das Risiko langsamer Berechtigungsabfragen, Auswertungen und Mitgliedschaftsaktualisierungen.
| Maßnahme | Empfohlener Höchstwert |
|---|---|
| ACEs in einem Sicherheitsnamespace | 1,000,000 |
| Mitglieder in einer Microsoft Entra oder Azure DevOps Gruppe | 10,000 |
Ein Zugriffssteuerungseintrag (Access Control Entry, ACE) speichert die Berechtigungen, die einem Benutzer oder einer Gruppe zugewiesen sind. Berücksichtigen Sie bei geschachtelten Gruppen die vollständige effektive Mitgliedschaft bei Verwendung der Gruppengrößenrichtlinie.
Empfohlene Praktiken
| Praxis | Leistungsvorteil |
|---|---|
| Berechtigungen Gruppen statt einzelnen Benutzern zuweisen | Ersetzt viele Benutzerzugriffssteuerungseinträge (ACCESS Control Entries, ACEs) durch eine Gruppen-ACE. |
| Verwenden des umfassendsten Abgleichsbereichs und der Vererbung | Verhindert, dass identische ACEs für untergeordnete Ressourcen wiederholt werden. |
| Verwenden Sie Ablehnen nur für Ausnahmen. | Beschränkt explizite Außerkraftsetzungen und ACEs auf Objektebene. |
| Verwenden Sie passend dimensionierte Identitätsgruppen | Reduziert die unnötige Verarbeitung von Gruppenmitgliedschaften. |
| Ressourcen in Projekten und Organisationen ausbalancieren | Begrenzt die Anzahl der ressourcen, die innerhalb einer Grenze ausgewertet werden. |
| Inkrementelles Anwenden von Berechtigungsänderungen | Reduziert die Auslastung von großen oder häufigen Aktualisierungen der Zugriffssteuerung. |
Zuweisen von Berechtigungen für Gruppen
Verwenden Sie integrierte oder benutzerdefinierte Azure DevOps Sicherheitsgruppen, um Rollen, Teams und Zugriffskohorten darzustellen. Die Zuweisung einer Berechtigung zu einer Gruppe erstellt eine ACE. Durch direktes Zuweisen derselben Berechtigung zu vielen Benutzern wird für jeden Benutzer eine ACE erstellt.
- Bevorzugen Sie integrierte Gruppen wie Leser, Mitwirkende und Project Administratoren, wenn ihre Berechtigungen dem erforderlichen Zugriff entsprechen.
- Erstellen Sie eine benutzerdefinierte Gruppe, wenn eine integrierte Gruppe nicht mit dem erforderlichen Zugriff übereinstimmt.
- Ersetzen Sie keine Gruppe durch Hunderte oder Tausende von direkten Benutzerzuweisungen.
Verwenden des umfassendsten Abgleichsbereichs und der Vererbung
Legen Sie eine Berechtigung einmal auf dem höchsten unterstützten Bereich fest, der der Zugriffsanforderung entspricht. Zulassen, dass untergeordnete Ressourcen die Berechtigung erben und die Vererbung aktiviert bleiben, es sei denn, eine untergeordnete Ressource benötigt einen anderen Zugriff.
Beispiel:
| Zugriffsanforderung | Bevorzugter Bereich |
|---|---|
| Ausführen einer Aufgabe auf Organisationsebene | Organisationsebene, wenn die Berechtigung auf dieser Ebene verfügbar ist |
| Zugreifen auf alle Ressourcen eines unterstützten Typs in einem Projekt | Projektebene oder das übergeordnete Element des Ressourcentyps auf Projektebene |
| Zugreifen auf alle Git-Repositorys in einem Projekt | Git-Repository-Eintrag auf oberster Ebene |
| Auf alle Branches eines Repositorys zugreifen | Repositoryebene |
| Zugriff auf ein Repository, einen Branch, eine Pipeline, einen Bereichspfad oder eine andere Ressource | Objektebene |
Vermeiden Sie es, identische Berechtigungen für jedes Repository, jeden Branch, jede Pipeline oder jede andere untergeordnete Ressource separat festzulegen. Bei Git-Repositorys erben einzelne Repositorys Berechtigungen vom Git-Repositoryeintrag der obersten Ebene.
Deaktivieren Sie die Vererbung nur, wenn eine Ressource andere Zugriffsrechte als die übergeordnete Ressource benötigt. Das Deaktivieren der Vererbung über viele Ressourcen erfordert in der Regel explizitere Zuordnungen.
Verwenden Sie „Verweigern“ nur für Ausnahmen
Gewähren Sie den Zugriff über eine Gruppe, und belassen Sie die Berechtigungen für Identitäten, die diese Berechtigung nicht erhalten sollen, auf Nicht festgelegt. Erstellen Sie eine Gruppe mit genau den erforderlichen Berechtigungen, anstatt breiten Zugriff zu gewähren und dann viele Verweigerungseinträge hinzuzufügen.
Verwenden Sie "Verweigern" nur, wenn Sie eine geerbte Zulassung für eine bestimmte Ausnahme außer Kraft setzen müssen. Ein einzelner Verweigerungseintrag ist kein Leistungsproblem. Viele Ausnahmen fügen jedoch ACEs hinzu und erfordern häufig mehr Berechtigungszuweisungen auf Objektebene.
Verwenden Sie passend dimensionierte Identitätsgruppen
Verwenden Sie Gruppen, die den Zugriffsanforderungen entsprechen, z. B. eine Geschäftseinheit, ein Projekt, ein Produkt oder eine Auftragsfunktion. Weder Entra-Gruppen noch Azure DevOps Gruppen bieten eine bessere Leistung. Wenden Sie die gleichen Richtlinien für Größe und Schachtelung auf beide Gruppentypen an.
- Vermeiden Sie das Hinzufügen einer mandanten- oder unternehmensweiten Gruppe, z. B. eine Gruppe "Alle Mitarbeiter" .
- Vermeiden Sie tief geschachtelte oder häufig geänderte Gruppenstrukturen, wenn eine einfachere Gruppe denselben Zugriff bietet.
- Teilen Sie eine sehr große Gruppe in kleinere Zugriffskohorten auf, wenn ihre Mitglieder nicht alle denselben Zugriff erfordern.
- Wenn jedes Mitglied denselben Zugriff benötigt, weisen Sie eine Gruppe in einem geerbten übergeordneten Bereich zu, anstatt einzelne Zuordnungen oder duplizierte Gruppen zu verwenden.
Gruppen mit mehr als 10.000 Mitgliedern sind ein Leistungsrisiko. Verschachtelung, häufige Änderungen der Mitgliedschaften und der Zugriff auf viele zugriffsgeschützte Ressourcen können die Auswirkungen verstärken. Reduzieren Sie unnötige Mitgliedschaften, und teilen Sie die Gruppe in kleinere Zugriffskohorten auf, wenn sie praktisch sind.
Ressourcen in Projekten und Organisationen ausbalancieren
Vermeiden Sie die Konzentration von Tausenden von Repositorys und den meisten berechtigungsgeschützten Ressourcen in einem Projekt, während andere Projekte nur wenige enthalten. Vorgänge, die barrierefreie Ressourcen ermitteln, müssen möglicherweise Berechtigungen für den gesamten Satz auswerten.
Verteilen Sie große Repositorys und andere Ressourcen über Projekte hinweg, bevor zu viele Ressourcen in einem Projekt gesammelt werden. Erstellen Sie pro Repository kein Projekt; Die Projektanzahl hat auch praktische Leistungsbeschränkungen.
Im extremen Unternehmensmaßstab können mehrere kleinere Organisationen eine bessere Leistung als eine Organisation durchführen, die die meisten Unternehmensressourcen und Berechtigungsdaten enthält. Teilen Sie Organisationen entlang stabiler Produkt- oder Geschäftsgrenzen, um ressourcen- und berechtigungslasten zu verteilen. Verwenden Sie diesen Ansatz nur, wenn der Skalierungsvorteil den Aufwand für die Verwaltung von Ressourcen in separaten Organisationen überwiegt.
Änderungsaufkommen bei der Berechtigungsautomatisierung reduzieren
Wenn Sie Berechtigungen mithilfe von Skripten, REST-APIs oder Configuration-as-Code-Workflows verwalten:
- Wenden Sie nur die Änderungen an, die erforderlich sind, um den beabsichtigten Zustand zu erreichen. Entfernen und erstellen Sie unveränderte Berechtigungszuweisungen nicht bei jeder Ausführung neu.
- Legen Sie Berechtigungen im übergeordneten Bereich fest, anstatt entsprechende Einträge für jede untergeordnete Ressource zu generieren.
- Nehmen Sie, wo unterstützt, Batchänderungen vor und befolgen Sie die bewährten Methoden für die Azure DevOps-REST-API.
- Vermeiden Sie Schleifen mit hoher Frequenz beim Berechtigungsabgleich.
- Vermeiden Sie routinemäßig das Erstellen und Löschen einer großen Anzahl von Projekten oder berechtigten Ressourcen.
- Entfernen Sie veraltete explizite Zuweisungen, um die Zugriffssteuerungsliste (Access Control List, ACL) und das ACE-Volume zu reduzieren.