Integrationen & Token
Ein Integrations-Token ist ein Zugang für Maschinen, nicht für Menschen: Ein Skript oder Cron-Job
holt damit Daten aus Resilic, ohne dass sich jemand anmeldet. Der erste Anwendungsfall ist die
security.txt,
die alle sechs Monate erneuert werden muss: Ein nächtlicher Job holt die frisch signierte Datei und
legt sie auf Ihrem Webserver ab – die Erneuerung entfällt.
Sie finden die Seite unter Einstellungen → Integrationen. Nur Inhaberinnen/Inhaber und Administratorinnen/Administratoren sehen sie.
Was ein Token darf
Abschnitt betitelt „Was ein Token darf“Token sind nur lesend und tragen einen ausdrücklichen Geltungsbereich:
| Geltungsbereich | Was das Skript abrufen kann |
|---|---|
security-txt:read |
die signierte security.txt für Ihre Unternehmensdomain |
provider-bundle:read |
das CSAF-Provider-Bundle als ZIP (Provider-Metadaten, Schlüssel, Advisories) |
Ein Token kann nichts ändern, nichts veröffentlichen und keine Mitglieder verwalten. Schreibende Geltungsbereiche gibt es bewusst nicht.
Token erzeugen
Abschnitt betitelt „Token erzeugen“- Vergeben Sie einen Namen, der sagt, wo der Token verwendet wird (z. B. „security.txt-Erneuerung auf www-01”). Er erscheint später in der Liste und im Audit-Protokoll.
- Wählen Sie den Geltungsbereich und ein Ablaufdatum (90 Tage, ein Jahr oder nie). Ein Ablauf ist die sichere Wahl: Ein vergessener Token läuft von selbst aus.
- Klicken Sie auf Token erzeugen. Der Token wird genau einmal angezeigt – kopieren Sie ihn direkt in Ihr Skript oder Ihren Secret-Store. Resilic speichert nur einen Hash; verloren heißt neu erzeugen.
Der Token beginnt mit rsl_ und wird als Bearer-Token gesendet:
Authorization: Bearer rsl_…Beispiel: security.txt per Cron erneuern
Abschnitt betitelt „Beispiel: security.txt per Cron erneuern“Auf einem eigenen Linux-Webserver (nginx, Apache, Caddy) genügt ein täglicher Cron-Job. Das Beispiel ist vollständig und so gebaut, dass ein Fehler nie eine kaputte Datei ausliefert.
1. Token sicher ablegen – nur für root lesbar, nie im Skript selbst und nie im Repository:
sudo install -m 600 /dev/null /etc/resilic/tokensudo sh -c 'echo "rsl_…" > /etc/resilic/token'2. Skript anlegen unter /usr/local/bin/resilic-security-txt:
#!/bin/sh# Holt die signierte security.txt von Resilic und tauscht sie atomar ein.set -euTOKEN="$(cat /etc/resilic/token)"TARGET="/var/www/html/.well-known/security.txt" # an Ihren Webroot anpassenTMP="$(mktemp "${TARGET}.XXXXXX")"trap 'rm -f "$TMP"' EXIT
curl -sSf --max-time 30 --retry 3 --retry-delay 10 \ -H "Authorization: Bearer $TOKEN" \ https://api.resilic.ai/api/integrations/v1/security-txt \ -o "$TMP"
# Nur einsetzen, was wie die signierte Datei aussieht – nie eine leere oder halbe Antwort.grep -q '^-----BEGIN PGP SIGNED MESSAGE-----' "$TMP"grep -q '^Expires: ' "$TMP"
chmod 644 "$TMP"mv -f "$TMP" "$TARGET"sudo chmod 755 /usr/local/bin/resilic-security-txtsudo /usr/local/bin/resilic-security-txt # einmal von Hand prüfencurl -s https://ihre-domain.example/.well-known/security.txt | head -33. Cron-Eintrag – einmal täglich, zu einer krummen Uhrzeit:
17 4 * * * root /usr/local/bin/resilic-security-txtWarum so:
- Einmal täglich reicht. Jede Antwort ist frisch signiert, das
Expires:-Datum liegt rund sechs Monate in der Zukunft. Häufigere Aufrufe bringen nichts; ein wöchentlicher Job wäre ebenfalls sicher. mktemp+mvtauscht die Datei atomar ein. Fällt der Abruf aus (Netz, Token widerrufen, Wartung), bleibt die bisherige gültige Datei liegen – und die ist noch monatelang gültig.- Die beiden
grep-Prüfungen stellen sicher, dass nur eine echte signierte Datei eingesetzt wird. - Die Antwort ist die exakte Datei (
text/plain, LF-Zeilenenden, abschließender Zeilenumbruch) – bitte nicht nachbearbeiten, sonst passt die Signatur nicht mehr.
Windows / IIS: dasselbe als PowerShell-Skript, geplant über die Aufgabenplanung (täglich):
$token = Get-Content 'C:\ProgramData\Resilic\token' -Raw$target = 'C:\inetpub\wwwroot\.well-known\security.txt'$tmp = "$target.tmp"Invoke-WebRequest -Uri 'https://api.resilic.ai/api/integrations/v1/security-txt' ` -Headers @{ Authorization = "Bearer $($token.Trim())" } -OutFile $tmp -TimeoutSec 30if (-not (Select-String -Path $tmp -Pattern '^-----BEGIN PGP SIGNED MESSAGE-----' -Quiet)) { Remove-Item $tmp; throw 'Unerwartete Antwort' }Move-Item -Force $tmp $targetIn IIS muss das Verzeichnis .well-known freigegeben sein (Anforderungsfilterung: verborgene Segmente)
und .txt als text/plain ausgeliefert werden.
Betreiben Sie Ihre Website mit einem Baukasten oder CMS ohne Dateizugriff, ist die Weiterleitung auf den CSAF-Host der einfachere Weg – dafür brauchen Sie keinen Token.
Sicherheit und Nachvollziehbarkeit
Abschnitt betitelt „Sicherheit und Nachvollziehbarkeit“- Widerrufen Sie einen Token sofort, wenn ein Skript außer Betrieb geht oder der Token offengelegt wurde. Der nächste Aufruf wird abgewiesen.
- Die Liste zeigt Zuletzt verwendet, damit Sie erkennen, welche Token noch gebraucht werden.
- Erzeugen, Widerrufen und Verwendung landen im Audit-Protokoll.
- Ein abgewiesener Token erhält eine nackte
401-Antwort ohne Begründung; ein Token ohne den nötigen Geltungsbereich eine403. Aufrufe sind je Token begrenzt (30 pro Minute) – für einen täglichen Job mehr als genug. - Token gelten je Organisation. Ein Token einer anderen Organisation kann Ihre Daten nicht lesen.