Uniqkey kann die Sicherheitsereignisse Ihrer Organisation an Ihr SIEM streamen (Microsoft Sentinel, Splunk, Elastic, Wazuh oder jedes Tool, das eine REST-API abfragen kann). Dieser Artikel erklärt, wie Sie die Integration im Admin Portal aktivieren, wie die Events-API funktioniert und was Sie von den Daten erwarten können.
Wer kann dies verwenden?
- Die Integration wird pro Organisation von einem Organisationsadministrator im Admin Portal aktiviert.
- Ihr SIEM benötigt ausgehenden HTTPS-Zugriff auf den Uniqkey-Events-Endpunkt.
- Ereignisse sind dieselben Audit-Log-Einträge, die Sie bereits unter Audit logs im Admin Portal sehen. Nichts, was dort nicht sichtbar ist, wird exportiert, und Vault-Geheimnisse, Passwörter oder Schlüssel werden niemals einbezogen.
Schritt 1: Integration aktivieren und Token generieren
- Melden Sie sich als Administrator im Admin Portal an.
- Gehen Sie zu Integrations und öffnen Sie den Tab SIEM.
- Kopieren Sie den API endpoint oben im Widget angezeigten Wert. Dies ist die URL, die Ihr SIEM abfragt.
- Aktivieren Sie SIEM oder klicken Sie auf Generate Token. Ein Dialog zeigt Ihr neues Token an.
- Kopieren Sie den token and store it in your SIEM's secret store. Das Token wird nur einmal angezeigt. Nachdem Sie den Dialog geschlossen haben, kann es nicht erneut angezeigt werden.
Token später verwalten:
- Regenerate Token erstellt ein neues Token und macht das alte sofort ungültig. Aktualisieren Sie Ihr SIEM vor oder unmittelbar nach der Neugenerierung, da die Abfrage sonst stoppt.
- Das Deaktivieren von SIEM löscht das Token und deaktiviert die Integration. Ihr SIEM erhält
403 Forbidden until a new token is generated. - Es gibt ein Token pro Organisation. Wenn mehrere Tools den Feed benötigen, verwenden sie dasselbe Token.
- Das Generieren oder Löschen eines Tokens wird ebenfalls im Audit-Log aufgezeichnet.
Schritt 2: SIEM konfigurieren
Jeder SIEM-Connector benötigt dieselben drei Dinge:
| Einstellung | Wert |
|---|---|
| Anfrage | GET on the API endpoint copied from the SIEM tab (.../api/v1/events) |
| Authentifizierung | HTTP header Authorization: Bearer <your token> |
| Paginierung | Speichern Sie den cursor aus jeder Antwort und senden Sie ihn als cursor-Abfrageparameter bei der nächsten Anfrage zurück. Fragen Sie weiter ab, solange has_more is true. |
Eine Abfrage alle 5 Minuten ist ein guter Standard. Ereignisse werden etwa 2 Minuten nach ihrem Auftreten verfügbar (siehe „Was Sie von den Daten erwarten können“ unten), daher bringt eine häufigere Abfrage als alle 2 Minuten keinen Vorteil.
Schnelltest mit curl
curl -s "https://<endpoint>/api/v1/events?limit=5" \ -H "Authorization: Bearer <your token>"
A working setup returns HTTP 200 with a JSON body like the one in the "Response" section. 401 means the Authorization header is missing or not a Bearer token. 403 means the token is unknown, was regenerated, or the integration is disabled.
API-Referenz
Anfrage
GET /api/v1/events
| Abfrageparameter | Beschreibung |
|---|---|
cursor | Positionsmarkierung aus einer vorherigen Antwort. Senden Sie sie unverändert zurück. Wenn vorhanden, bestimmt sie, wo die Seite beginnt; start is ignored. |
start | Untere Zeitgrenze, einschließlich, ISO 8601 (zum Beispiel 2026-09-01T00:00:00Z). Verwenden Sie sie für die erste Abfrage oder einen Backfill. Wenn keine Zeitzone angegeben ist, wird UTC angenommen. |
end | Obere Zeitgrenze, ausschließlich, ISO 8601. Wird zusammen mit cursor angewendet, sodass ein begrenzter Backfill seitenweise verarbeitet werden kann. |
limit | Ereignisse pro Seite. Standard 200, maximal 1000. Werte außerhalb des Bereichs werden begrenzt und nicht abgelehnt. |
category | Nach einer oder mehreren Kategorien filtern. Wiederholen Sie den Parameter oder trennen Sie Werte durch Kommas: ?category=authentication,credential_access. Wenn weggelassen, werden alle Kategorien verwendet. |
Eine Anfrage ohne Parameter ist gültig und gibt den Verlauf Ihrer Organisation von Anfang an seitenweise zurück.
Der Cursor ist undurchsichtig. Er darf nicht erstellt, analysiert oder verändert werden. Sein Format kann sich ohne Vorankündigung ändern, ein empfangener Cursor funktioniert jedoch weiterhin.
Antwort
{
"events": [ ... ],
"has_more": true,
"cursor": "eyJUIjoiMjAyNi0wOS0wMVQwOToxNDoyMi4xMTdaIiwiSSI6Ijlh..."
}
- Ereignisse werden beginnend mit den ältesten zurückgegeben.
has_moretells you whether to request the next page right away. Loop onhas_more, not on an emptyeventsarray: a page can be empty while more data remains.cursoris always present, including on empty pages and whenhas_moreisfalse. Store it as your checkpoint after every response.
Fehler geben HTTP 400 mit einem maschinenlesbaren Code zurück:
{ "error": { "code": "invalid_cursor", "message": "Cursor is not valid. Submit the cursor from a previous response verbatim." } }
| Code | Bedeutung |
|---|---|
invalid_cursor | The cursor was modified or is not from this API. Restart from a start time. |
invalid_category | Unbekannter Kategoriewert. Die Meldung listet die gültigen Werte auf. |
Zeilengetrenntes JSON
Wenn Ihr Collector ein Ereignis pro Zeile bevorzugt (Splunk Generic REST Inputs, Elastic, Log-Shipper), senden Sie Accept: application/x-ndjson. Der Body enthält dann ein JSON-Ereignis pro Zeile ohne Envelope, und die Paging-Felder werden in die Response-Header verschoben:
Content-Type: application/x-ndjson X-Next-Cursor: eyJUIjoi... X-Has-More: true
Die Header bieten dieselben Garantien wie der JSON-Body: Der Cursor ist immer vorhanden, auch auf einer leeren Seite.
Ereignisformat
{
"id": "9a1c7f2e-4b13-4a8e-9f21-0c2b7d5e8a44",
"timestamp": "2026-09-01T09:14:22.117Z",
"category": "credential_access",
"action": "get_vault_password_details",
"action_id": "daf12269-a58f-4e3a-ab01-05b1293a7cac",
"action_source": "extension",
"outcome": "success",
"organization_id": "d5ecd732-4a67-418c-9dea-38a097fba1f6",
"actor": { "id": "3f2a...", "email": "jane.doe@example.com", "type": "user" },
"client": { "system": "extension", "ip": "185.23.44.9" },
"target": { "type": "vault", "id": "7c9d...", "name": "GitHub build account" }
}
| Feld | Beschreibung |
|---|---|
id | Eindeutige Ereignis-ID. Verwenden Sie sie zur Deduplizierung. |
timestamp | Zeitpunkt des Ereignisses in UTC. |
category | Eine der unten aufgeführten Kategorien. Stabil: Eine bestimmte Aktion wechselt niemals die Kategorie. |
action | Menschenlesbarer Aktionsname, zum Beispiel login_to_extension. Nicht eindeutig (dieselbe Aktion von zwei Oberflächen hat denselben Namen) und nicht garantiert stabil. Verwenden Sie ihn zur Anzeige. |
action_id | Stabile Kennung des Aktionstyps. Erstellen Sie Erkennungsregeln auf dieser Grundlage, nicht auf action. |
action_source | Welcher Teil von Uniqkey die Aktion definiert: extension, mobile, web_portal, partner_portal, scim_service, desktop_extension, queue_messages, breach. Verwenden Sie dies, um zwei Ereignisse mit derselben action. |
outcome | success or failure. See the note under "What to expect". |
organization_id | Ihre Organisations-ID. |
actor.id, actor.email | Der Mitarbeiter, der die Aktion ausgeführt hat, sofern vorhanden. |
actor.type | user, scim, system, supporter (a partner support user), or breach. |
client.system | Woher die Anfrage kam: extension, mobile, web, desktop, or undefined. Viele Ereignisse enthalten undefined; bevorzugen Sie action_source wenn Sie die Oberfläche bestimmen müssen. |
client.ip | Quell-IP der Anfrage, sofern aufgezeichnet. Kann fehlen. |
target.type, target.id, target.name | Das Objekt, auf das sich die Aktion bezieht: vault, employee, group, employee_group, resource_collection, or tag. name ist der Name des Objekts zum Zeitpunkt des Ereignisses und kann fehlen (Tags enthalten niemals einen Namen). |
Kategorien
| Kategorie | Enthält |
|---|---|
authentication | An- und Abmeldungen, Lebenszyklus des Masterpassworts, SSO-Anmeldung sowie Trusted-Browser- und Portal-Sitzungen |
account_management | Mitarbeiterlebenszyklus und Profiländerungen: eingeladen, aktiviert, archiviert, gelöscht, einschließlich SCIM-Bereitstellung |
privilege_management | Administratorrechte erteilt oder entzogen, Partner-Supportzugriff gewährt |
group_management | Gruppen, Mitarbeitergruppen, Ressourcensammlungen, Tags und deren Mitgliedschaften |
credential_access | Ein Geheimnis wurde angezeigt oder kopiert oder seine Details wurden angefordert, genehmigt oder abgelehnt. Die Kategorie mit dem höchsten Ereignisvolumen. |
credential_management | Vault-Einträge und Passkeys erstellt, bearbeitet oder gelöscht |
sharing | Alles, was ändert, wer auf Anmeldedaten zugreifen kann: Freigaben, Widerrufe, Abläufe, Verschiebungen und Aufhebungen von Verknüpfungen |
data_export | Daten, die das System in großen Mengen verlassen, z. B. Login-Exporte |
policy_management | Sicherheitseinstellungen, Einschränkungen und Einschränkungsvorlagen, Aufbewahrungszeiträume, SSO-Provider-Konfiguration |
device_management | Geräte und Begleit-Apps gekoppelt oder entkoppelt, passive Registrierung der Erweiterung |
organization_management | Organisationsdetails, verifizierte Domains, Archivierung und Wiederherstellung der Organisation, SIEM-Token generiert oder gelöscht |
threat_detection | Ereignisse zur Überwachung von Datenlecks und Passwortwiederverwendung |
other | Generische Ereignisse ohne eigenständige Sicherheitsbedeutung sowie Ereignisse, die vor Einführung der aktuellen Kategorisierung aufgezeichnet wurden |
Da jedes Ereignis eine Kategorie enthält, können mehrere Connectoren mit unterschiedlichen category-Filtern auf denselben Endpunkt verweisen, beispielsweise um credential_access an eine günstigere Speicherebene zu leiten und den Rest in Ihrer Analyseebene zu behalten.
Was Sie von den Daten erwarten können
- Die Zustellung erfolgt mindestens einmal. Unter bestimmten Bedingungen kann ein Ereignis zweimal zugestellt werden. Deduplizieren Sie anhand von
id. - Ereignisse erscheinen etwa 2 Minuten nach ihrem Auftreten. Der Feed hält die neuesten 2 Minuten absichtlich zurück, damit kein Ereignis übersprungen wird, während Schreibvorgänge noch abgeschlossen werden. Deshalb sollte Ihr SIEM nicht häufiger als alle 2 Minuten abfragen.
- Der Verlauf ist durch die Aufbewahrungsdauer Ihres Audit-Logs begrenzt. Der Feed liefert die von Ihrer Organisation aufbewahrten Daten. Prüfen Sie Data Cleanup & Retention in den Organisationseinstellungen. Wenn Ihr Collector länger als der Aufbewahrungszeitraum ausfällt, können abgelaufene Ereignisse nicht wiederhergestellt werden. Lassen Sie den Collector kontinuierlich laufen.
outcomeist kein Signal für eine fehlgeschlagene Anmeldung. Uniqkey zeichnet derzeit keine fehlgeschlagenen Anmeldeversuche auf, daher ist jedesauthentication-Ereignis erfolgreich.failurewird nur für Aktionen verwendet, deren Zweck die Aufzeichnung einer Ablehnung ist, beispielsweise eine in der mobilen App abgelehnte Genehmigungsanfrage. Erstellen Sie keine Brute-Force-Erkennungen auf Grundlage dieses Feeds.client.ipist nicht immer vorhanden. Ereignisse aus Hintergrundprozessen, SCIM oder bestimmten Client-Abläufen enthalten keine IP. Der Wert wird aus der empfangenen Anfrage übernommen und sollte als vom Client gemeldet und nicht als durch die Infrastruktur verifiziert betrachtet werden.- Sensible Daten werden niemals einbezogen. Passwörter, sichere Notizen, Kartennummern, Schlüssel und andere verschlüsselte Vault-Inhalte verlassen niemals die Zero-Knowledge-Grenze. Der Feed enthält nur die im Audit-Log des Admin Portals sichtbaren Metadaten.
Hinweise je SIEM
Uniqkey stellt derzeit noch keine vorgefertigten Connector-Pakete bereit. Der Endpunkt folgt denselben Konventionen wie andere Anbieter von Identitäts- und Passwortmanager-Lösungen, sodass der standardmäßige REST-Abfragemechanismus jedes SIEM funktioniert.
- Microsoft Sentinel: use a Codeless Connector or a Logic App with API key authentication (
Authorizationheader, prefixBearer). Configure paging on thecursorresponse field, sent back as thecursorquery parameter, and usehas_moreas the loop condition. The API acceptsstartandcursortogether, which is how the Codeless Connector Framework sends its second page. - Splunk: a REST modular input or an Add-on Builder input works. Send
Accept: application/x-ndjsonso each event is indexed as its own record, and readX-Next-CursorandX-Has-Morefor checkpointing. - Elastic: the Elastic Agent or Filebeat HTTP JSON / CEL input can poll the endpoint, persist
cursoras its cursor state, and loop onhas_more. NDJSON mode is also supported. - Wazuh: Wazuh has no native REST poller. Run a small scheduled script that polls the endpoint, keeps the
cursorin a state file, and writes events as JSON lines to a log file that a Wazuh agent monitors withlog_format: json.
Fehlerbehebung
| Symptom | Wahrscheinliche Ursache | Lösung |
|---|---|---|
401 Unauthorized | No Authorization header, or it does not start with Bearer | Überprüfen Sie das Header-Format im SIEM-Connector. |
403 Forbidden | Das Token ist falsch, wurde neu generiert oder die Integration wurde deaktiviert. | Generieren Sie im SIEM-Tab ein neues Token und aktualisieren Sie das SIEM. |
400 invalid_cursor | Der Cursor wurde bearbeitet, gekürzt oder stammt aus einer anderen Organisation. | Reset the connector checkpoint and restart from a start time |
400 invalid_category | Tippfehler im Kategoriefilter | Verwenden Sie einen der Werte aus der Kategorietabelle. |
| Der Feed ist leer, aber das Admin Portal zeigt Ereignisse an. | Die Ereignisse sind jünger als 2 Minuten oder werden durch den Kategoriefilter ausgeschlossen. | Warten Sie oder entfernen Sie den Filter. |
| Der Connector stoppt nach einiger Zeit. | Der Checkpoint ging verloren oder das Token wurde neu generiert. | Bestätigen Sie, dass der Cursor gespeichert wird, und dass das Token im SIEM dem neuesten Token entspricht. |
| Ältere Ereignisse fehlen | Die Aufbewahrungsfrist des Audit-Logs ist für diese Ereignisse abgelaufen. | Überprüfen Sie den Aufbewahrungszeitraum und lassen Sie den Collector kontinuierlich laufen. |
| Doppelte Ereignisse | Normal bei einer At-least-once-Zustellung | Deduplicate on id |
Wenn Sie den Support kontaktieren, geben Sie Ihre Organisations-ID, die genaue Anfrage-URL ohne Token, den HTTP-Status und den Response-Body an.