Rechtemanagement in Azure Devops ist ein Graus. Oder eine Schnitzeljagd für die ganze Familie – je nachdem wie gut man gerade drauf ist.
Neulich hat ein Kollege gefragt, ob wir nicht an einer Stelle sehen könnten, welche Rechte ein User hat. Tja, das wäre schön!

Allgemeine Rechte

Aber schauen wir doch mal, was der intuitivste Anlaufpunkt für Userrechte in einem Azure Devops Projekt so zu bieten hat.

Hm, wir sehen allgemeine Rechte für die Boards, Analytics und Test Plans.
Aber was ist mit Pipelines, Repositories und Artifacts?

Repositories

Bei Repositories ist das noch halbwegs einfach. Die Settings unter dem Menüpunkt haben einen Tab für Security, wo die Rechte eingestellt werden können.

Kleiner Haken: jedes Repository hat selbst ebenfalls noch einmal solche Rechteeinstellungen. Und man sieht es halt nicht direkt!
Es gibt auch keine Übersicht, welche User Repo-Zugriff haben – was eine Menge sein können, da ja die Standard „Azure DevOps Groups“ alle zumindest Leserechte haben!
Um also heraus zu finden, ob ein bestimmter User Zugriff auf ein Repo hat – sei es via Gruppe oder direkter Zuweisung – müsste ich alle Repositories einzeln durchgehen. Bei potentiell einigen hundert Repos eine Sisyphus-Aufgabe!

Aber zumindest sind die Einstellungen für diese Rechte noch halbwegs einfach zu finden.
Also hat sich Microsoft wohl gesagt: das lässt sich ändern!

Pipelines

Um nämlich die Rechte für Pipelines einstellen zu können, müssen wir uns schon aus den Projekt-Settings heraus begeben, und uns den Pipelines selbst zuwenden:

In dem Menü neben „Create Pipeline“ (der Button mit den drei Punkten), versteckt sich der Punkt „Manage Security“.
Wenn schon Pipelines vorhanden sind, dann verschiebt sich das natürlich nach Rechts oben.

Ein klick darauf offenbart uns die wohlbekannte Struktur für Rechtevergabe – nur diesmal halt mit Settings für Pipelines.

Aber auch hier: das lässt sich – analog zu den Repositories – auch wieder für jede Pipeline noch mal extra einstellen! Ohne Übersicht!
Klingt schon umständlich? Dann wartet mal den nächsten Punkt ab!

Release Pipelines

Denn neben den regulären Pipelines, gibt es ja noch die Release-Pipelines. Die sind schon bekackt genug, weil sie sich nicht automatisiert, sondern nur manuell via GUI anlegen lassen.
Aber das ist ein anderes Thema. Zurück zu den Rechten. Da geht es schon gut los:

Kein Menü vorhanden, wenn noch keine Pipelines existieren!

Hmpft, nunja. Schauen wir uns das also in einem Projekt an, wo schon welche da sind.

Da haben wir an gewohnter Stelle (oben Rechts) tatsächlich wieder ein Menü mit entsprechendem Security-Punkt. Aber die Tatsache, dass an der Stelle immer schon die Details der erstbesten Release-Pipeline angezeigt werden, sollte uns stutzig machen.
Und in der Tat:

Dort können wir nur die Rechte für diese spezifische Release-Pipeline einstellen.
Na toll. Und wo stellen wir jetzt die globalen Rechte ein? Ein weiteres Menü gab es in der Default-Übersicht ja nicht.

Tut es auch nicht! Das versteckt sich in der Ordnerübersicht, die sich hinter diesem unscheinbaren Aktensymbol versteckt:

Und schau sieh da – auf einmal haben wir neben den Optionen zum Anlegen neuer Release-Pipelines ein neues Menü.

Ist es nicht toll, dass das alles so wahnsinnig intuitiv zugänglich ist?

Das es auch hier wieder keine Möglichkeit gibt, die Rechte einzelner User heraus zu finden, ohne alle Release-Pipelines einzeln durch zu gehen, brauche ich glaube ich nicht extra zu erwähnen!?

An der Stelle schon die Schnauze voll? Tja, ich auch.
Aber halt! Da war doch noch was…

Artifacts

Richtig. Darum wollten wir uns ja auch noch kümmern. Und wir sind jetzt schon vorgewarnt! Also erst mal im Menü oben Rechts nachschauen, welches da mit „Azure Artifacts settings“ gelabelt ist.

Doch die Ernüchterung folgt auf den Fuß:

Es wäre ja auch zu schön gewesen.
Ok, dann eben den Button daneben, für die „Feed settings“.

Aha. Zumindest das, ließ sich ja vergleichsweise einfach finden.
Wenn man die Erfahrung bei den Pipelines allerdings noch nicht gemacht hat, dann sucht man sich ggfs. auch hier nen Wolf.

Und noch etwas hinterlässt einen faden Beigeschmack: Die Feeds sind nicht projektgebunden! Sondern global/projektübergreifend.
Warum lässt sich das also nicht in den Organisationsettings einstellen? Warum muss ich in ein beliebiges Projekt gehen, um es dort für alle Projekte einzustellen?

Fazit

Hier bleibt eigentlich nur zu sagen: Benutzbarkeit ungenügend, setzen!