SXAccessSXAccessDoku
Dashboard öffnen

Dienstkonten und Token

Nicht-menschliche Identitäten für die Automatisierung, mit eigenen Zugriffstoken und eigener Rolle.

Ein Dienstkonto ist ein Mitglied, als das sich keine Person anmeldet. Es hat einen Namen, eine Rolle und ein oder mehrere Zugriffstoken. CI-Pipelines, Provisionierungsskripte, Terraform und Monitoring-Systeme authentifizieren sich mit einem Dienstkonto an der öffentlichen API.

Ein Dienstkonto statt eines Tokens auf Ihrem eigenen Konto zu verwenden, ist schlicht gute Betriebspraxis: Die Automatisierung läuft weiter, wenn Sie ausscheiden, und in der Aktivität steht die Pipeline statt einer Person.

Der Reiter „Service accounts“ mit drei Konten in der Rolle „User“.
Dienstkonten stehen auf derselben Seite neben den Mitgliedern und haben eigene Rollen.

Ein Dienstkonto anlegen

  1. 1

    Dienstkonto hinzufügen

    Wählen Sie unter People → Service accounts die Schaltfläche Create service account und benennen Sie das Konto nach dem System, das es nutzen wird: terraform, ci-provisioner.

  2. 2

    Die kleinste nötige Rolle vergeben

    Role steht zunächst auf User, einer Rolle, die nichts ändern kann. Wählen Sie Auditor, wenn es nur liest, Network Admin, wenn es Zugriffsregeln, Gruppen, Routen, Netzwerke und DNS verwaltet, und Admin, wenn es Geräte, Registrierungsschlüssel oder Mitglieder bearbeiten muss. Ein Dienstkonto kann unabhängig von seiner Rolle alles in seiner Organisation lesen; die Rolle entscheidet nur, was es ändern darf. Siehe Rollen und Berechtigungen.

  3. 3

    Ein Token anlegen

    Öffnen Sie das Konto, wechseln Sie zu Tokens und wählen Sie Create token. Tragen Sie unter Name ein, wer das Token nutzt, und legen Sie Expires in fest: 1 bis 365 Tage, standardmäßig 30. Das Token wird nur einmal angezeigt, direkt nach dem Anlegen; kopieren Sie es also sofort. Token für ein Dienstkonto können nur Eigentümer und Administratoren anlegen.

  4. 4

    Token aufbewahren

    Legen Sie es direkt in Ihrer Secret-Verwaltung oder als CI-Secret ab, niemals in einem Repository, einer Terraform-Variablendatei oder einem Shell-Profil. Das Beispiel unten liest es aus der Variablen SXACCESS_TOKEN, die Ihre Pipeline von dort befüllt.

shell - ein Token verwenden
curl -sS https://app.sxaccess.com/api/devices \  -H "Authorization: Token $SXACCESS_TOKEN" | jq '.[].name'

Was ein Token darf

Ein Token handelt als das Konto, dem es gehört, mit dessen Rolle und nur in der Organisation, in der es angelegt wurde; auch der Header X-Organization-Id stellt es nicht auf eine andere um. Ein Token durchläuft nie die Anmeldung, daher gelten die Anmelderegeln der Organisation, einschließlich Zwei-Faktor, nicht für Token. Wie Anfragen aussehen, beschreibt die Seite Öffentliche API; wie Fehler gemeldet werden, steht unter Fehler.

Ein Token rotieren

Token haben ein Ablaufdatum, und ein abgelaufenes Token wird abgewiesen: Die Automatisierung bleibt stehen, und das ist besser als Zugangsdaten, die ewig gelten. Legen Sie zum Rotieren zuerst das neue Token an, stellen Sie das System darauf um und prüfen Sie, ob es funktioniert. Die Spalte Last used im Reiter Tokens zeigt, wann jedes Token zuletzt benutzt wurde; so können Sie verfolgen, dass das alte nicht mehr verwendet wird, bevor Sie in seinem Zeilenmenü Delete wählen. In der Übergangszeit sind beide Token gültig, es gibt also keine Unterbrechung.

Um ein Konto ganz stillzulegen, öffnen Sie es und wählen im Reiter Profile unter Remove from this organization die Schaltfläche Remove service account, dann Remove. Das Konto und alle seine Token funktionieren danach sofort nicht mehr.

Was in der Aktivität erscheint

Jede Änderung, die mit einem Token vorgenommen wird, verzeichnet die Aktivität unter dem Konto, dem das Token gehört. Eine Pipeline, die Registrierungsschlüssel anlegt, hinterlässt eine klare Spur; das Token einer Person, das eine Pipeline benutzt, eine irreführende. Lesezugriffe werden nicht verzeichnet. Das Anlegen und Löschen von Token erscheint als API token created und API token deleted. Siehe Aktivitätsprotokoll.