Zur Dokumentation springen
DokumentationProtokollexport

Protokollexport

Laden Sie das signierte Protokoll als JSON Lines herunter oder erhalten Sie ausgewählte Ereignisse, sobald sie entstehen.

Auf dieser Seite

Jeder Aufruf, jede Entscheidung und jede Änderung landet in Ihrem Protokoll. Nehmen Sie jederzeit eine vollständige Kopie mit, für Ihr SIEM oder Ihr Archiv.

In der Konsole herunterladen

Öffnen Sie Aktivität und tippen Sie auf „Protokoll herunterladen“. Die Datei enthält die ganze Kette Ihrer Organisation. Inhaber können sie herunterladen, ebenso Administratoren und Auditoren der ganzen Organisation, die in keinem Arbeitsbereich eine engere Rolle haben. Ein Administrator oder Auditor eines einzelnen Arbeitsbereichs kann es nicht, ebenso wenig ein Administrator der Organisation, der im Arbeitsbereich eines Kunden nur Mitglied oder Gast ist. Lesen können Sie es auf dem Tab „Protokoll“ daneben: jeder Eintrag, wer ihn ausgelöst hat und worum es geht. Jede Person sieht die Einträge der Arbeitsbereiche, in denen sie Inhaber, Administrator oder Auditor ist, und die der Organisation selbst.

Per Skript herunterladen

Ein Skript meldet sich mit einem API-Schlüssel der Konsole an. Ein Inhaber erstellt ihn unter API-Schlüssel mit „Neuer API-Schlüssel“, und er wird einmal angezeigt. Legen Sie ihn in SALLYPORT_CONSOLE_KEY ab:

Fügen Sie den Schlüssel an der Eingabeaufforderung ein; die Shell zeigt ihn nicht an
read -rs SALLYPORT_CONSOLE_KEY && export SALLYPORT_CONSOLE_KEY
Die ganze Kette in einer Datei
curl --fail --silent --show-error -H "Authorization: Bearer $SALLYPORT_CONSOLE_KEY" "https://mcp.sallyport.cloud/v1/audit/export" -o sallyport-audit.jsonl

Mit from_seq und to_seq holen Sie einen Bereich. Beide sind ganze Zahlen ab null, und beide Grenzen sind eingeschlossen. Ohne to_seq reicht die Datei bis zum Ende der Kette.

Alles ab Eintrag 1001
curl --fail --silent --show-error -H "Authorization: Bearer $SALLYPORT_CONSOLE_KEY" "https://mcp.sallyport.cloud/v1/audit/export?from_seq=1001" -o sallyport-audit-1001.jsonl

Um nur Neues zu holen, lesen Sie to_seq in der ersten Zeile der letzten Datei und beginnen den nächsten Abruf einen Eintrag später. Ist events gleich 0, gibt es nichts Neues: Fragen Sie später erneut mit demselben from_seq ab.

Standardmäßig bewahrt Sallyport 180 Tage Protokoll auf, holen Sie es also mindestens so oft ab. „Protokoll und Aufrufverlauf (Tage)“ unter Einstellungen, „Organisation“, ändert das. Die Konsolensitzung nutzt dieselbe Route unter https://my.sallyport.cloud/api/v1/audit/export.

Was die Datei enthält

Antwort-HeaderWert
Content-Typeapplication/x-ndjson; charset=utf-8
Content-Dispositionattachment; filename="sallyport-audit-{UUID der Organisation}.jsonl"
Cache-Controlno-store
X-Content-Type-Optionsnosniff

Die erste Zeile beschreibt die Datei: schema (spc-chain/2), tenant_id, from_seq, to_seq und events. Jede weitere Zeile ist ein Eintrag in Reihenfolge: seq, occurred_at, kind, payload, prev_hash, this_hash, sig und signer_kid.

Jeder Eintrag trägt den Hash des vorigen, daher bricht eine fehlende oder geänderte Zeile die Kette. Jeder Eintrag ist mit Ed25519 signiert, und die öffentlichen Schlüssel liegen ohne Konto unter https://mcp.sallyport.cloud/.well-known/sallyport-audit-keys.json.

Vergleichen Sie die Zeilenzahl mit events, um einen abgebrochenen Download zu erkennen. Die Datei enthält keine Schlüsselwerte, keine Request-Bodys und keine vollständigen Argumentlisten.

Ereignisse sofort erhalten

Ein Webhook sendet jeden neuen Protokolleintrag der gewählten Arten an Ihren HTTPS-Endpunkt, innerhalb von etwa einer Minute. Ein Inhaber oder Administrator legt ihn unter Webhooks in den Einstellungen an: Tippen Sie auf „Webhook hinzufügen“, geben Sie den Endpunkt ein und wählen Sie die Ereignisse. Ein Skript nutzt die API:

Einen Webhook für Aufrufe und Entscheidungen anlegen
curl --fail --silent --show-error -X POST -H "Authorization: Bearer $SALLYPORT_CONSOLE_KEY" -H "Content-Type: application/json" -d '{"url": "https://siem.example.com/sallyport", "events": ["call.intent", "call.result", "approval.decided"]}' "https://mcp.sallyport.cloud/v1/webhooks"

Das Signaturgeheimnis wird einmal angezeigt: in der Konsole nach „Webhook hinzufügen“ und als secret in der API-Antwort. Jede Zustellung ist ein POST mit X-Sallyport-Event, X-Sallyport-Delivery und X-Sallyport-Signature: t=<unix seconds>,v1=<hex>.

Prüfen Sie v1 als HMAC-SHA256 von <t>.<body>, mit dem ganzen Secret als Schlüssel. Der Body enthält delivery_id, tenant_id, kind, occurred_at, seq, this_hash und payload.

  • Antworten Sie mit einem 2xx-Status. Eine gescheiterte Zustellung wird mit sich verdoppelnden Pausen ab 5 Sekunden erneut versucht, insgesamt 8 Versuche. Nach etwa 15 Minuten gilt sie als gescheitert.
  • Wiederholungen behalten dieselbe X-Sallyport-Delivery, verwerfen Sie Duplikate anhand dieses Werts.
  • Ein Webhook liefert, was die Person, die ihn angelegt hat, im Protokoll lesen darf: die Einträge der Arbeitsbereiche, in denen sie Inhaber, Administrator oder Auditor ist, und die der Organisation selbst. Solange sie nichts davon lesen darf, liefert er nichts, und diese Einträge werden später nicht nachgeliefert. Ein mit einem API-Schlüssel angelegter Webhook liefert das ganze Protokoll.
  • Ein Webhook beginnt im Moment seiner Erstellung. Ältere Einträge holen Sie aus dem Export; seq und this_hash passen zu dessen Zeilen.
  • Ereignisnamen sind die kind-Werte des Protokolls, etwa call.intent, call.result, approval.requested, approval.decided, grant.created und access_request.created. Jeder kind aus dem Export funktioniert. Ein unbekannter Name wird beim Anlegen des Webhooks abgewiesen, und der Fehler nennt ihn.
  • „Zustellungen“ in der Zeile des Webhooks listet, was gesendet wurde, und „Erneut senden“ sendet eine gescheiterte Zustellung noch einmal. In der API: GET /v1/webhooks/{id}/deliveries und POST /v1/webhooks/{id}/deliveries/{delivery_id}/retry.
  • Die Liste unter Webhooks markiert einen Webhook, der scheitert. Sein Schalter stellt Zustellungen ab, ohne ihn zu löschen.