Service-Token

Übersicht

Mit Service-Token ist es möglich, sich bei SUSE Observability zu authentifizieren, ohne ein zugehöriges Benutzerkonto zu haben. Dies ist nützlich in Situationen, in denen Sie SUSE Observability von Headless-Diensten wie einem CI-Server aus verwenden möchten. In einem solchen Szenario möchten Sie typischerweise kein Benutzerkonto in Ihrem Identitätsanbieter bereitstellen.

Verwalten von Service-Token

Service-Token können über die sts CLI verwaltet werden. Es stehen die folgenden Befehle zur Verfügung:

> sts service-token --help
Manage service tokens.

Usage:
  sts service-token [command]

Available Commands:
  create      Create a service token
  delete      Delete a service token
  list        List service tokens

Use "sts service-token [command] --help" for more information about a command.

Es ist auch möglich, einen neu starten-Service-Token bei der Installation von SUSE® Observability einzurichten.

Service-Token erstellen

Die Open Telemetry und Kubernetes StackPacks ermöglichen es Ihnen, ein Subjekt und einen Service-Token mit allen erforderlichen Berechtigungen zu erstellen.

Um einen Service-Token für SUSE® Observability zu erstellen, können Sie die sts CLI verwenden.

sts service-token create

Beachten Sie, dass der Service-Token nur einmal angezeigt wird. Es ist nicht möglich, den Token erneut anzuzeigen.

Dieser Befehl benötigt die folgenden Befehlszeilenargumente:

Flaggen Beschreibung

--name

Der Name des Service-Tokens

--expiration

Das Ablaufdatum des Service-Tokens, das Format ist yyyy-MM-dd. Das Ablaufdatum ist optional.

--roles

Eine durch Kommas getrennte Liste von Rollen, die dem Service-Token zugewiesen werden sollen

Zum Beispiel wird der folgende Befehl einen Service-Token mit dem Namen my-service-token und der Rolle stackstate-k8s-troubleshooter erstellen:

> sts service-token create --name my-service-token --roles stackstate-k8s-troubleshooter
✅ Service token created: svctok-aaaaa-bbbb-ccccc-ddddd

Richten Sie ein neu starten-Service-Token ein.

Beim Installieren von SUSE® Observability ist es möglich, es mit einem (temporären) neu starten-Service-Token zu initialisieren. Dies ermöglicht die Verwendung der CLI, ohne zuerst mit SUSE® Observability zu interagieren und ein API-Token aus der Benutzeroberfläche zu erhalten. Um dies einzurichten, fügen Sie den folgenden Codeausschnitt in die Konfigurationsdatei SUSE® Observability ein:

Um SUSE® Observability so zu konfigurieren, dass ein neu starten-Service-Token auf Kubernetes erstellt wird, müssen die folgenden Werte in die Datei authentication.yaml eingefügt werden. Beispiel:

stackstate:
  authentication:
    serviceToken:
      bootstrap:
        token: <token>
        roles:
          - stackstate-admin
        ttl: 24h

Befolgen Sie die folgenden Schritte, um SUSE® Observability so zu konfigurieren, dass ein neu starten-Service-Token erstellt wird:

  1. In authentication.yaml - fügen Sie das neu starten-Service-Token hinzu:

    • token - Das Token, das beim (initialen) Start von SUSE® Observability erstellt wird.

    • roles - Ein Array von Rollen, die dem neu starten-Service-Token zugewiesen sind.

    • ttl - Optional. Die Lebensdauer des Service-Tokens, als Zeitdauer angegeben.

  2. Speichern Sie die Datei authentication.yaml zusammen mit dem values.yaml aus den Installationsanweisungen für SUSE® Observability.

  3. Führen Sie ein Helm-Upgrade aus, um die Änderungen anzuwenden.

     helm upgrade \
       --install \
       --namespace suse-observability \
       --values values.yaml \
       --values authentication.yaml \
     suse-observability \
     suse-observability/suse-observability
  • Der erste Durchlauf des Helm-Upgrade-Befehls führt dazu, dass Pods neu gestartet werden, was eine kurze Unterbrechung der Verfügbarkeit verursachen kann.

  • Schließen Sie authentication.yaml bei jedem helm upgrade Durchlauf ein.

  • Die Authentifizierungskonfiguration wird als Kubernetes-Secret gespeichert.

Richten Sie das neu starten-Service-Token aus einem externen Secret ein.

Anstatt das neu starten-Token über die Helm-Werte anzugeben, können Sie das neu starten-Token auch aus einem Secret lesen, das außerhalb des Helm-Charts erstellt und verwaltet wird (ein externes Secret). Um ein neu starten-Token von einem externen Secret zu verwenden, befolgen Sie diese Schritte und fügen Sie die folgenden Daten hinzu:

kind: Secret
metadata:
   name: "<custom-secret-name>"
type: Opaque
data:
  bootstrap_token: <base64 of token>

Dieses Token kann neben den bereits vorhandenen Daten zum Secret hinzugefügt werden.

Liste der Service-Token

Die ID, der Name, das Ablaufdatum und die Rollen aller erstellten Service-Token können mit dem sts CLI angezeigt werden. Beispiel:

> sts service-token list
ID              | NAME             | EXPIRATION | ROLES
107484341630693 | my-service-token |            | [stackstate-admin]

Service-Token löschen

Ein Service-Token kann mit dem sts CLI gelöscht werden. Übergeben Sie die ID des Service-Tokens als Argument. Beispiel:

> sts service-token delete 107484341630693
✅ Service token deleted: 107484341630693

Service-Token verwenden

Sie verwenden Service-Token zur Authentifizierung bei der Nutzung der SUSE Observability APIs: * Bei der Verwendung des CLI * Bei der direkten Nutzung der HTTP APIs * Bei der Erfassung von Telemetriedaten

SUSE Observability sts CLI

Ein Service-Token wird zur Authentifizierung mit dem sts CLI verwendet. Für weitere Informationen siehe die CLI-Dokumentation.

SUSE Observability APIs

Um ein Service-Token direkt mit der SUSE Observability API zu verwenden, fügen Sie es auf eine der folgenden Arten zum Header der Anfrage hinzu:

  • Im Authorization Header:

      > curl -X GET -H "Authorization: ApiKey <TOKEN>" http://localhost:8080/api/server/status
  • Im X-API-Key Header:

      > curl -X GET -H "X-API-Key: <TOKEN>" http://localhost:8080/api/server/status

Erfassung von Telemetriedaten

Um ein Service-Token für die Erfassung von Telemetriedaten zu erstellen, müssen Sie zuerst eine Rolle erstellen:

> sts rbac create-subject --subject my-agent
✅ Created subject 'my-agent'
> sts rbac grant --subject my-agent --permission update-metrics
✅ Granted permission 'update-metrics' on 'system' to subject 'my-agent'
PERMISSION   | RESOURCE
update-metrics | system

Wenn Sie das Service-Token zur Erfassung von Kubernetes RBAC-Daten verwenden möchten, müssen Sie auch update-scoped-permissions gewähren:

> sts rbac grant --subject my-agent --permission update-scoped-permissions --resource my-cluster
✅ Granted permission 'update-scoped-permissions' on 'my-cluster' to subject 'my-agent'
PERMISSION                | RESOURCE
update-metrics            | system
update-scoped-permissions | my-cluster

Dies wird eine neue Rolle in SUSE Observability mit dem Namen my-agent erstellen und ihr die update-metrics Berechtigung gewähren. Sie können dann ein Service-Token für diese Rolle erstellen:

> sts service-token create --name my-agent --roles my-agent
✅ Service token created: svctok-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Das neu erstellte Service-Token kann als API-Schlüssel zur Authentifizierung von Telemetriedaten von: