Odoo API Key: Warum jede Schnittstelle einen eigenen Benutzer braucht

Ein API Key in Odoo hat keine eigenen Rechte, er erbt die seines Benutzers. Warum deine Anbindungen eigene Service-User brauchen und wie du sie prüfst.

⏱️ ~5 Min. Lesezeit

Die Anbindung von n8n an Odoo dauert zehn Minuten, und genau darin liegt das Problem. Bei einem Kunden lief der Workflow über den API Key eines ganz normalen Mitarbeiterkontos, das zufällig volle Rechte hatte, und damit hatte n8n plötzlich Lesezugriff auf die Lohnbuchhaltung.

Was der Workflow sollte: Auftragsdaten abholen. Was er konnte: sämtliche Modelle lesen und schreiben.

Technisch funktioniert so eine Anbindung einwandfrei, und deshalb fällt sie auch niemandem auf. Solange alles läuft, schaut keiner nach, mit welchen Rechten die Gegenstelle eigentlich unterwegs ist. Landet der Key aber in einem Workflow-Export, auf einem Screenshot oder bei einem externen Dienstleister, hat dieses System Zugriff auf Personalakten, Kontobewegungen und alles andere, was der zugehörige Benutzer sehen darf. Dazu kommen zwei leisere Probleme. Wird das Konto des Mitarbeiters deaktiviert, weil er das Unternehmen verlässt, steht die Schnittstelle still, und zunächst weiß niemand warum. Und weil jede automatische Änderung unter seinem Namen erscheint, lässt sich im Nachhinein kaum unterscheiden, was ein Mensch und was ein Workflow geändert hat.

Was ein API Key in Odoo eigentlich ist

Um zu verstehen, warum das passiert, lohnt ein kurzer Blick darauf, wie Odoo externe Zugriffe regelt. Eine API ist die Schnittstelle, über die andere Programme mit Odoo sprechen, also Daten abfragen, anlegen oder ändern, ohne dass jemand die Oberfläche bedient. Damit Odoo weiß, wer da anfragt, braucht jede Anfrage einen Ausweis, und dieser Ausweis ist der API Key. Du erzeugst ihn in den Kontoeinstellungen eines Benutzers, Odoo zeigt ihn genau einmal an, und ab dann meldet sich das externe System mit diesem Schlüssel an.

Ein API Key in Odoo hat keine eigenen Rechte. Jede Anfrage läuft mit genau den Zugriffsrechten, Datensatzregeln und Feldrechten des Benutzers, dem der Key gehört. Wer einen Key über das Konto der Buchhalterin erstellt, gibt n8n, dem Drittsystem oder dem externen Dienstleister exakt das, was die Buchhalterin sehen und ändern darf. Odoo selbst empfiehlt in seiner Entwicklerdokumentation deshalb, für automatisierte Anbindungen eigene Bot-Benutzer anzulegen.

Die Lösung: ein Service-User mit minimalen Rechten

Wenn der Key die Rechte seines Benutzers erbt, liegt die Lösung beim Benutzer selbst. Ein Service-User ist ein eigenes Konto, das nur für eine Schnittstelle existiert und von keinem Menschen zum Arbeiten genutzt wird. Er bekommt ausschließlich Zugriff auf die Bereiche, die die Anbindung wirklich braucht. Wenn n8n Aufträge lesen soll, bekommt n8n Zugriff auf Aufträge und auf nichts anderes.

In der Praxis heißt das, dass du in den Zugriffsrechten bei jeder App, die die Schnittstelle nicht braucht, gar keinen Zugriff vergibst und bei den übrigen die niedrigste Stufe wählst, mit der die Anbindung funktioniert. Administrationsrechte bekommt ein Service-User nie, auch nicht kurz zum Testen, weil solche Ausnahmen erfahrungsgemäß bleiben. Arbeitest du mit mehreren Firmen in einer Datenbank, beschränkst du ihn zusätzlich auf die Firma, um die es geht. Ein Nebeneffekt, den viele unterschätzen, betrifft die Nachvollziehbarkeit: Jede Änderung erscheint im Chatter und in den Feldern „Erstellt von“ und „Zuletzt geändert von“ unter dem Namen des Service-Users, sodass du sofort siehst, welche Daten aus der Schnittstelle kommen.

Kläre vorab zwei Punkte mit deinem Vertrag. Zum einen, ob ein zusätzlicher Benutzer bei dir als lizenzpflichtiger Nutzer zählt. Zum anderen, ob dein Tarif den externen API-Zugriff überhaupt umfasst, denn laut Odoo-Dokumentation ist der Zugriff über die externe API nur in den Custom-Tarifen enthalten.

Ein Benutzer pro Schnittstelle

Ist das Prinzip einmal klar, stellt sich schnell die Frage, ob ein einziger Service-User für alle Anbindungen reicht. Technisch geht das, nur addieren sich die Rechte dann wieder auf. Der Shop braucht Artikel und Bestände, der Versanddienstleister Lieferungen und das Dashboard Umsatzzahlen, und am Ende darf das gemeinsame Konto doch wieder fast alles. Mit einem Benutzer pro Schnittstelle bleibt jede Anbindung auf ihr Gebiet beschränkt, und wenn ein Dienstleister wechselt oder ein Key in falsche Hände gerät, sperrst du genau diesen einen Zugang, ohne dass die anderen ausfallen.

Gib Benutzer und Key einen Namen, aus dem hervorgeht, welches System dahintersteckt, und lege den Key im Zugangsdatenspeicher des anbindenden Tools ab. In n8n ist das ein Credential, niemals Klartext in einem Workflow-Knoten. In aktuellen Odoo-Versionen bekommt jeder neue Key außerdem eine Laufzeit, nach der er ungültig wird. Plane die Erneuerung deshalb fest ein, damit die Schnittstelle nicht an einem Montagmorgen unbemerkt ausfällt.

Jetzt ist ein guter Zeitpunkt zum Aufräumen

Bleibt die Frage, wann man das angehen sollte, und darauf gibt es gerade eine ziemlich klare Antwort. Mit Odoo 19 kam die neue JSON-2-API, und die alten Zugänge über XML-RPC und JSON-RPC sind laut Odoo-Dokumentation für die Entfernung mit Odoo 20 vorgesehen. Wer seine Anbindungen für diesen Umstieg ohnehin anfassen muss, setzt die Berechtigungen am besten im selben Schritt sauber auf, anstatt sie später einzeln nachzuziehen.

Wie wir Schnittstellen in Odoo grundsätzlich aufbauen und wann ein fertiges Modul reicht, liest du im Artikel Odoo Schnittstellen programmieren.

Checkliste: Prüffragen für deine Odoo-Anbindungen

Mit diesen Fragen gehst du deine bestehenden Schnittstellen in einer Stunde durch:

  • Über welchen Benutzer läuft jede Schnittstelle, und ist das ein Mensch?
  • Hat einer dieser Benutzer Administrationsrechte?
  • Welche Apps braucht die Schnittstelle wirklich, und welche Rechte hat sie tatsächlich?
  • Teilen sich mehrere Anbindungen einen Benutzer oder einen Key?
  • Wo ist der Key gespeichert, und wer kann ihn dort einsehen?
  • Was passiert mit der Schnittstelle, wenn der Mitarbeiter, dessen Key sie nutzt, das Unternehmen verlässt?
  • Wann läuft der Key ab, und wer kümmert sich um die Erneuerung?
  • Läuft die Anbindung noch über XML-RPC oder JSON-RPC?

Fazit: unspektakulär und trotzdem wichtig

Die Lösung ist unspektakulär, und gerade deshalb bleibt sie so oft liegen. Ein eigener Benutzer mit minimalen Rechten kostet bei der Einrichtung ein paar Minuten mehr und erspart dir die Situation, in der ein Automatisierungstool mehr über deine Firma weiß als die meisten Mitarbeiter. Wer seine Odoo-Anbindungen gerade über normale Benutzer-Keys betreibt, sollte einen Blick darauf werfen.

Wenn du deine bestehenden Schnittstellen einmal von außen durchsehen lassen willst, sprich uns für eine Analyse an. Wir schauen uns an, welche Anbindung mit welchen Rechten läuft, und sagen dir, wo du nachschärfen solltest.