Service-Accounts
Ein Service-Account ist die Identität einer Maschine, nicht einer Person: einer Integration, einer Auswertung, eines KI-Support-Agenten. Er hat eigene Rollen und funktioniert weiter, wenn Kolleg:innen das Team verlassen. Er lässt sich auf Nur lesen begrenzen, egal welche Tokens für ihn erstellt werden.
Gründe gegen ein persönliches API-Token
Ein persönliches API-Token handelt als die Kolleg:in, die es erstellt hat. Zum Ausprobieren genügt das, für etwas, das dauerhaft läuft, nicht:
- Verlässt die Kolleg:in das Team oder verliert sie eine Rolle, funktioniert die Integration nicht mehr. Wird sie befördert, erhält die Integration unbemerkt mehr Zugriff.
- Alles, was die Integration tut, wird als Arbeit der Kolleg:in protokolliert.
- Sie können der Integration nicht weniger Rechte geben, als die Kolleg:in hat.
Ein Service-Account löst alle drei Probleme. Er hat genau die Rollen, die Sie ihm geben. Nichts, was er tut, wird einer Kolleg:in zugeschrieben. Seine Zugriffsstufe legt ein für alle Mal fest, ob eines seiner Tokens schreiben darf.
Ein Service-Account meldet sich nur mit API-Tokens an. Er hat kein Passwort und kann das Admin-Panel nicht öffnen.
Einen Service-Account anlegen
Service-Accounts verwalten Super-Admins:
- Öffnen Sie im Admin-Panel Einstellungen → Integrationen → API und wählen Sie Service-Accounts verwalten.
- Wählen Sie Neuer Service-Account und füllen Sie aus:
- Name: woran Admins ihn erkennen, zum Beispiel „Support-Agent“. Der Name erscheint in Protokollen und bei Kommentaren, die der Account schreibt.
- Beschreibung: wofür der Account da ist und wer dafür verantwortlich ist.
- Zugriff: Nur lesen oder Lesen und schreiben. Siehe Zugriffsstufe.
- Rollen: welche Bereiche des Admin-Panels der Account sehen kann. Siehe Rollen.
- Erstellen Sie auf der Seite des Accounts unter Tokens ein Token. Geben Sie ihm eine Bezeichnung, wählen Sie seinen Zugriff und legen Sie ein Ablaufdatum fest. Lesen und schreiben steht nur zur Wahl, wenn die Zugriffsstufe des Accounts Schreiben erlaubt. Ein deaktivierter Account erhält keine neuen Tokens.
- Kopieren Sie das Token. Es beginnt mit
svc-und wird nur dieses eine Mal angezeigt.
Rollen
Ein Service-Account erhält dieselben Rollen wie eine Kolleg:in. Sie legen fest, welche Endpunkte er verwenden kann (siehe Berechtigungen):
| Rolle | Bezeichnung im Admin-Panel | Öffnet |
|---|---|---|
ROLE_ADMIN | Admin | Angebote, Saisons, Veranstalter:innen, Anmeldungen, Konten, Einwilligungen, Kommentare, gesendete Nachrichten, Suche |
ROLE_PARTICIPANTS_ADMIN | Teilnehmer:innen | Teilnehmer:innen und die Namen der Teilnehmer:innen eines Kontos; nur zusammen mit Admin |
ROLE_PAYMENTS_ADMIN | Zahlungen | Belege, Debitor:innen und den debtor eines Kontos; nur zusammen mit Admin |
ROLE_SUPER_ADMIN | Super-Admin | alles: umfasst Admin, Teilnehmer:innen und Zahlungen, dazu das Anlegen von Admin-Konten und das Ändern von Admin-Rollen |
ROLE_HOST | Veranstalter:innen | nur Saisons und Kategorien, siehe unten |
Ein neuer Service-Account erhält die Rolle Admin und die Zugriffsstufe Nur lesen. Fügen Sie Teilnehmer:innen oder Zahlungen nur hinzu, wenn seine Aufgabe Teilnehmer:innen oder Zahlungen braucht: Jede Rolle öffnet seinen Tokens mehr personenbezogene Daten. Beide zählen nur zusammen mit Admin oder Super-Admin. Das Admin-Panel speichert sie nicht ohne eine der beiden.
Veranstalter:innen sehen die Angebote der Veranstalter-Profile, deren Mitglied sie sind. Ein Service-Account ist kein Mitglied eines Veranstalter-Profils. Mit Veranstalter:innen allein sieht er deshalb weder Angebote noch Veranstalter-Profile. Dasselbe gilt für jeden Service-Account ohne Admin: Selbst die veröffentlichten Angebote erhalten Sie nur ohne Token. Geben Sie ihm Admin, wenn er Angebote braucht.
Ein Service-Account gehört immer zu genau einem Mandanten. Die Rolle der globalen Admins von Installationen mit mehreren Mandanten kann er nicht erhalten.
Zugriffsstufe
Die Zugriffsstufe ist die Obergrenze für jedes Token des Accounts:
read(Nur lesen): Jedes Token des Accounts kann nur lesen, auch eines, das mit Schreibzugriff erstellt wurde, bevor der Account eingeschränkt wurde. Ein Service-Account mit Nur lesen kann nichts ändern, liest aber alles, was seine Rollen erlauben.write(Lesen und schreiben): Tokens können lesen und, wenn sie mit Schreibzugriff erstellt wurden, auch schreiben.
Eine geänderte Zugriffsstufe gilt ab der nächsten Anfrage jedes Tokens.
Auf der Kommandozeile anlegen
Auf dem Server legt ferienpass:api:service-account einen Service-Account und sein erstes Token in einem Schritt an. Damit richten Sie eine Integration ohne Browser ein, oder einen neuen Mandanten, in dem sich noch kein Super-Admin angemeldet hat.
Eine Auswertung mit Nur lesen, einer Rolle und einem Token mit Ablaufdatum
bin/console ferienpass:api:service-account "Auswertung" --tenant=elmsbrueck \
--role=ROLE_ADMIN --valid-until="+90 days" \
--description="Monthly report on attendances"
Ein Account mit Nur lesen, der auch Teilnehmer:innen liest
bin/console ferienpass:api:service-account "Statistik" --tenant=elmsbrueck \
--role=admin --role=participants_admin
- Name
name- Typ
- argument
- Beschreibung
Ein Name, an dem Admins den Account erkennen. Pflicht.
- Name
--tenant- Typ
- string
- Beschreibung
Der Mandant (sein Slug). Pflicht bei Installationen mit mehreren Mandanten;
ferienpass:tenant:listzeigt sie an.
- Name
--access- Typ
- string
- Beschreibung
read(Standard) oderwrite.
- Name
--role- Typ
- string
- Beschreibung
Eine Rolle, die vergeben wird; mehrfach angebbar. Akzeptiert
ROLE_ADMINoder nuradmin. Der Standard istROLE_ADMIN.participants_adminundpayments_adminbrauchenadmindaneben; sonst weist der Befehl sie ab.
- Name
--description- Typ
- string
- Beschreibung
Wofür der Account da ist.
- Name
--token-name- Typ
- string
- Beschreibung
Eine Bezeichnung für das erste Token.
- Name
--valid-until- Typ
- string
- Beschreibung
Ablauf des ersten Tokens, als Datum (
2027-01-01) oder relativ (+90 days). Ohne Angabe läuft das Token nicht ab.
- Name
--no-token- Typ
- flag
- Beschreibung
Nur den Account anlegen und Tokens später im Admin-Panel erstellen.
Der Befehl gibt das Token nur einmal aus. Bewahren Sie es auf wie ein Passwort.
Tokens verwalten
Ein Service-Account kann mehrere Tokens halten, zum Beispiel eines je Umgebung. Auf der Seite des Accounts sehen Sie, wann jedes Token zuletzt verwendet wurde (auf fünf Minuten genau). Dort können Sie:
- Ein Token widerrufen. Es funktioniert sofort nicht mehr. Tun Sie das, wenn Sie ein Token nicht mehr brauchen oder es offengelegt worden sein könnte, und um ein Token zu erneuern: Erstellen Sie das neue, stellen Sie die Integration um und widerrufen Sie dann das alte.
- Den Account deaktivieren. Die API weist alle seine Tokens mit
401(Service account disabled) ab, bis Sie ihn wieder aktivieren. Damit pausieren Sie eine Integration, ohne ihre Einrichtung zu verlieren. - Den Account löschen. Löscht ihn samt allen seinen Tokens.
Was ein Service-Account hinterlässt
fepli nennt den Service-Account dort, wo ein Datensatz einen Namen als Text speichert. Datensätze, die auf das Konto einer Person verweisen, nennen ihn nicht:
- Kommentare, die er schreibt, zeigen seinen Namen als
authorName. - Einwilligungen, die er widerruft, zeigen seinen Namen als
revokedBy. - Veranstalter-Einladungen, die er verschickt, nennen ihn in der E-Mail. Ihr
invitedByistnull. Verlangt eine Saison von Veranstalter:innen eine Vertraulichkeitserklärung, kann er für diese Saison niemanden einladen, ein neues Veranstalter-Profil zu registrieren (409): Ein Service-Account kann sie nicht unterzeichnen. - Belege, die er erfasst, haben kein
recordedBy, weil dieses Feld auf das Konto einer Person verweist. IhrrecordedByNamelautet{name} (Service-Account). - Änderungen, die er an Anmeldungen vornimmt, erscheinen im Verlauf der Anmeldung im Admin-Panel als
{name} (Service-Account). Anmeldungen, die er anlegt, gelten als vom Team eingegeben (createdByAdmin). - Übergänge des Workflows, die er auf Angebote anwendet (veröffentlichen, absagen, …), erscheinen im Verlauf des Angebots im Admin-Panel als
{name} (Service-Account). - Jeder dieser Einträge behält den Namen, den der Service-Account zu diesem Zeitpunkt hatte.
- Die E-Mails zur Teilnahmeliste der Angebote, die er anlegt, erhält niemand. Wer sie erhält, wählen Sie im Admin-Panel unter Listen-Empfänger:innen. Wie jedes neue Angebot übernehmen diese Angebote ihre Kontaktperson aus dem Veranstalter-Profil der ersten Veranstalter:in, es sei denn, Sie senden
contact(Ein Angebot anlegen).