Mayi
Mayi lässt Agenten und Automatisierungen nach einzelnen Systemaktionen fragen, statt ihnen dauerhaft Administratorrechte zu geben. Ein Mensch prüft die konkrete Anfrage.
Warum dieses Projekt?
Ein Assistent kann eine sinnvolle Änderung vorbereiten, braucht dafür aber nicht automatisch uneingeschränkten Root-Zugriff. Mayi trennt die Anfrage von ihrer Freigabe: Die Automatisierung beschreibt, was sie tun möchte; ein Mensch entscheidet über diese konkrete Operation.
„Darf ich den Dienst neu laden?“
Ein Agent hat beispielsweise eine Konfigurationsänderung vorbereitet und möchte einen Webserver neu laden. Statt selbst ein Administratorpasswort zu besitzen, reicht er das auszuführende Programm und seine Argumente bei Mayi ein.
Die Freigabekonsole zeigt die Anfrage. Bei einer Genehmigung führt ein getrenntes, privilegiertes Programm genau die gespeicherte Operation aus. Die Entscheidung gilt nicht pauschal für alle späteren Befehle des Agenten.
Warum Anfrage, Freigabe und Ausführung getrennt sind
Eine breite sudo-Freigabe erlaubt einem Programm unter Umständen dauerhaft bestimmte Administratoraktionen. Mayis Ansatz ist dagegen die Prüfung des einzelnen Auftrags. Der Vermittlungsdienst verwaltet die Anfrage, kontrolliert die Rollen der Beteiligten und reicht eine genehmigte Operation an die Ausführung weiter.
Programm und Argumente bleiben getrennte Werte statt einer zusammengesetzten Shell-Zeile. Das vermeidet unbeabsichtigte Interpretation durch eine Shell. Wird allerdings ausdrücklich eine Shell mit einem Skript als Argument freigegeben, kann diese das Skript selbstverständlich ausführen. Mayi beurteilt nicht selbst, ob eine genehmigte Aktion inhaltlich sinnvoll oder ungefährlich ist.
So wird aus einer Anfrage eine freigegebene Aktion
Mayi unterscheidet zwei Rollen: Ein Konto darf Anfragen stellen, ein berechtigtes menschliches Konto darf darüber entscheiden. In der Freigabekonsole sieht die Person, welches Programm mit welchen Argumenten ausgeführt werden soll und von wem die Anfrage stammt.
Die Person bestätigt ihre Identität über PAM – die Anmeldeschnittstelle, mit der Linux beispielsweise Passwörter und Kontoregeln prüft. Der Vermittlungsdienst lässt diese Prüfung über einen getrennten Authentifizierungsdienst durchführen und kontrolliert zusätzlich, ob die Person zur Entscheidung berechtigt ist. Anmeldung und Freigaberolle erfüllen damit unterschiedliche Aufgaben.
Die Entscheidung gehört genau zu der gespeicherten Anfrage und wird nur einmal verwendet. Nach einer Genehmigung erhält der privilegierte Executor, also das ausführende Programm, den ursprünglichen Auftrag. Der Agent bekommt dadurch weder das Passwort der Person noch eine dauerhafte Administratorfreigabe.
Im Ökosystem ergänzt Mayi damit die Arbeit von Agenten: Die Automatisierung bereitet eine Systemaktion vor, der Mensch beurteilt und bestätigt sie, und eine getrennte Komponente führt sie aus.
Quellcode & Dokumentation
Quellcode und die verfügbare Projektdokumentation findest du auf GitHub. Dort stehen auch die Hinweise zum Bauen, zur Nutzung und zur Lizenz.
Mayi auf GitHub ↗