Uniqkey kan streame din organisations sikkerhedshændelser til dit SIEM (Microsoft Sentinel, Splunk, Elastic, Wazuh eller ethvert værktøj, der kan forespørge et REST API). Denne artikel forklarer, hvordan du aktiverer integrationen i Admin Portal, hvordan events-API'et fungerer, og hvad du kan forvente af dataene.
Hvem kan bruge dette
- Integrationen aktiveres pr. organisation af en organisationsadministrator i Admin Portal.
- Dit SIEM skal have udgående HTTPS-adgang til Uniqkeys events-endpoint.
- Events er de samme auditlogposter, som du allerede kan se under Audit logs i Admin Portal. Intet, der ikke er synligt dér, eksporteres, og vault-hemmeligheder, adgangskoder eller nøgler inkluderes aldrig.
Trin 1: Aktivér integrationen og generér et token
- Log ind på Admin Portal som administrator.
- Gå til Integrations og åbn fanen SIEM.
- Kopiér det API endpoint der vises øverst i widgetten. Dette er den URL, som dit SIEM vil forespørge.
- Slå SIEM til, eller klik på Generate Token. En dialogboks viser dit nye token.
- Kopiér tokenet, og gem det i dit SIEMs secret store. Tokenet vises kun én gang. Når du lukker dialogboksen, kan det ikke vises igen.
Administration af tokenet efterfølgende:
- Regenerate Token udsteder et nyt token og ugyldiggør straks det gamle. Opdatér dit SIEM før eller umiddelbart efter regenereringen, ellers stopper polling.
- Hvis du slår SIEM fra, slettes tokenet, og integrationen deaktiveres. Dit SIEM vil modtage
403 Forbidden until a new token is generated. - Der er ét token pr. organisation. Hvis flere værktøjer skal bruge feedet, deler de tokenet.
- Generering eller sletning af et token registreres også i auditloggen.
Trin 2: Konfigurér dit SIEM
Alle SIEM-connectors har brug for de samme tre ting:
| Indstilling | Værdi |
|---|---|
| Anmodning | GET på API-endpointet, der blev kopieret fra SIEM-fanen (.../api/v1/events) |
| Godkendelse | HTTP-header Authorization: Bearer <your token> |
| Paginering | Gem cursor fra hvert svar, og send den tilbage som cursor-queryparameteren i den næste anmodning. Fortsæt polling, mens has_more er true. |
Polling hvert 5. minut er et godt udgangspunkt. Events bliver tilgængelige cirka 2 minutter efter, de sker (se "Hvad du kan forvente af dataene" nedenfor), så der er ingen fordel ved at polle oftere end hvert 2. minut.
Hurtig test med curl
curl -s "https://<endpoint>/api/v1/events?limit=5" \ -H "Authorization: Bearer <your token>"
En fungerende opsætning returnerer HTTP 200 med en JSON-body som den i afsnittet "Svar". 401 betyder, at Authorization-headeren mangler eller ikke er et Bearer-token. 403 betyder, at tokenet er ukendt, er blevet regenereret, eller at integrationen er deaktiveret.
API-reference
Anmodning
GET /api/v1/events
| Queryparameter | Beskrivelse |
|---|---|
cursor | Positionsmarkør fra et tidligere svar. Send den tilbage uændret. Når den er angivet, bestemmer den, hvor siden starter; start ignoreres. |
start | Nedre tidsgrænse, inklusive, ISO 8601 (for eksempel 2026-09-01T00:00:00Z). Brug den ved første polling eller til backfill. UTC antages, når der ikke er angivet en tidszone. |
end | Øvre tidsgrænse, eksklusive, ISO 8601. Anvendes sammen med cursor, så en afgrænset backfill kan paginere gennem dataene. |
limit | Events pr. side. Standard er 200, maksimum er 1000. Værdier uden for intervallet begrænses i stedet for at blive afvist. |
category | Filtrér efter én eller flere kategorier. Gentag parameteren, eller adskil værdier med kommaer: ?category=authentication,credential_access. Hvis den udelades, betyder det alle kategorier. |
En anmodning uden parametre er gyldig og returnerer din organisations historik fra begyndelsen, én side ad gangen.
Cursoren er opaque. Du må ikke konstruere, parse eller ændre den. Formatet kan ændres uden varsel, men en cursor, du har modtaget, vil fortsat fungere.
Svar
{
"events": [ ... ],
"has_more": true,
"cursor": "eyJUIjoiMjAyNi0wOS0wMVQwOToxNDoyMi4xMTdaIiwiSSI6Ijlh..."
}
- Events returneres med de ældste først.
has_morefortæller, om du straks skal anmode om næste side. Loop påhas_more, ikke på et tomtevents-array: En side kan være tom, selvom der stadig er flere data.cursorer altid til stede, også på tomme sider og nårhas_moreerfalse. Gem den som dit checkpoint efter hvert svar.
Fejl returnerer HTTP 400 med en maskinlæsbar kode:
{ "error": { "code": "invalid_cursor", "message": "Cursor is not valid. Submit the cursor from a previous response verbatim." } }
| Kode | Betydning |
|---|---|
invalid_cursor | Cursoren blev ændret eller stammer ikke fra dette API. Start igen fra et start-tidspunkt. |
invalid_category | Ukendt kategoriværdi. Meddelelsen viser de gyldige værdier. |
Newline-delimited JSON
Hvis din collector foretrækker én event pr. linje (Splunk generic REST inputs, Elastic, log shippers), skal du sende Accept: application/x-ndjson. Body'en indeholder derefter én JSON-event pr. linje uden envelope, og pagineringsfelterne flyttes til response headers:
Content-Type: application/x-ndjson X-Next-Cursor: eyJUIjoi... X-Has-More: true
Headerne giver de samme garantier som JSON-body'en: Cursoren er altid til stede, også på en tom side.
Event-format
{
"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" }
}
| Felt | Beskrivelse |
|---|---|
id | Unikt event-id. Brug det til deduplikering. |
timestamp | Tidspunktet, hvor eventen fandt sted, i UTC. |
category | En af kategorierne nedenfor. Stabil: En given handling skifter aldrig kategori. |
action | Menneskeligt læsbart handlingsnavn, for eksempel login_to_extension. Ikke unikt (samme handling fra to grænseflader deler et navn) og ikke garanteret stabilt. Brug det til visning. |
action_id | Stabil identifikator for handlingstypen. Byg detektionsregler på denne, ikke på action. |
action_source | Hvilken del af Uniqkey der definerer handlingen: extension, mobile, web_portal, partner_portal, scim_service, desktop_extension, queue_messages, breach. Brug den til at skelne mellem to events med samme action. |
outcome | success eller failure. Se bemærkningen under "Hvad du kan forvente af dataene". |
organization_id | Din organisations-id. |
actor.id, actor.email | Den medarbejder, der udførte handlingen, når der er en. |
actor.type | user, scim, system, supporter (en partner-supportbruger) eller breach. |
client.system | Hvor anmodningen kom fra: extension, mobile, web, desktop, eller undefined. Mange events indeholder undefined; foretræk action_source når du har brug for at identificere grænsefladen. |
client.ip | Anmodningens kilde-IP, når den registreres. Kan mangle. |
target.type, target.id, target.name | Det objekt, der blev handlet på: vault, employee, group, employee_group, resource_collection, eller tag. name er objektets navn på tidspunktet for eventen og kan mangle (tags indeholder aldrig et navn). |
Kategorier
| Kategori | Indeholder |
|---|---|
authentication | Login og logout, masteradgangskodens livscyklus, SSO-login samt Trusted Browser- og portalsessioner |
account_management | Medarbejderlivscyklus og profilændringer: inviteret, aktiveret, arkiveret og slettet, inklusive SCIM-provisionering |
privilege_management | Administratorrettigheder tildelt eller fjernet samt partner-supportadgang tildelt |
group_management | Grupper, medarbejdergrupper, resource collections, tags og deres medlemskaber |
credential_access | En hemmelighed blev vist eller kopieret, eller dens detaljer blev anmodet om, godkendt eller afvist. Kategorien med den største mængde events. |
credential_management | Vault-elementer og passkeys oprettet, redigeret eller slettet |
sharing | Alt, der ændrer, hvem der har adgang til et login: delinger, tilbagekaldelser, udløb, flytninger og fjernelse af links |
data_export | Data, der forlader systemet i større mængder, såsom eksport af logins |
policy_management | Sikkerhedsindstillinger, begrænsninger og begrænsningsskabeloner, opbevaringsperioder samt konfiguration af SSO-provider |
device_management | Enheder og companion-apps, der parres eller fjernes fra parring, samt passiv registrering af browserudvidelsen |
organization_management | Organisationsoplysninger, verificerede domæner, arkivering og gendannelse af organisationen samt generering eller sletning af SIEM-token |
threat_detection | Events vedrørende overvågning af datalæk og genbrug af adgangskoder |
other | Generiske events uden selvstændig sikkerhedsmæssig betydning samt events registreret før den nuværende kategorisering blev indført |
Da hver event har en kategori, kan du pege flere connectors mod det samme endpoint med forskellige category-filtre, for eksempel for at sende credential_access til et billigere storage tier og beholde resten i dit analytics tier.
Hvad du kan forvente af dataene
- Levering sker mindst én gang. Under visse forhold kan en event leveres to gange. Deduplikér på
id. - Events vises cirka 2 minutter efter, de sker. Feedet tilbageholder bevidst de nyeste 2 minutter, så ingen events springes over, mens skrivninger stadig færdiggøres. Derfor bør dit SIEM ikke polle oftere end hvert 2. minut.
- Historikken er begrænset af opbevaringsperioden for din auditlog. Feedet leverer det, som din organisation opbevarer. Kontrollér Data Cleanup & Retention under organisationens indstillinger. Hvis din collector er nede længere end opbevaringsperioden, kan udløbne events ikke gendannes. Hold collectoren kørende kontinuerligt.
outcomeer ikke et signal om mislykket login. Uniqkey registrerer i øjeblikket ikke mislykkede loginforsøg, så hverauthentication-event er en vellykket event.failurebruges kun til handlinger, hvis formål er at registrere en afvisning, for eksempel en godkendelsesanmodning, der afvises i mobilappen. Byg ikke brute-force-detektioner på dette feed.client.iper ikke altid til stede. Events, der skrives af baggrundsprocesser, SCIM eller visse klientflows, indeholder ingen IP. Værdien tages fra den modtagne anmodning og bør betragtes som rapporteret af klienten frem for verificeret af infrastrukturen.- Følsomme data inkluderes aldrig. Adgangskoder, sikre noter, kortnumre, nøgler og andet krypteret vault-indhold forlader aldrig zero-knowledge-grænsen. Feedet indeholder kun de metadata, der er synlige i auditloggen i Admin Portal.
Bemærkninger pr. SIEM
Uniqkey leverer endnu ikke færdigbyggede connector-pakker. Endpointet følger de samme konventioner som andre leverandører af identitets- og password manager-løsninger, så standardmekanismen til REST-polling i hvert SIEM fungerer.
- Microsoft Sentinel: brug en Codeless Connector eller en Logic App med API key authentication (
Authorization-header, præfiksBearer). Konfigurér paginering påcursor-responsefeltet, som sendes tilbage somcursor-queryparameteren, og brughas_moresom loop-betingelse. API'et acceptererstartogcursorsammen, hvilket er den måde, Codeless Connector Framework sender sin anden side på. - Splunk: et REST modular input eller Add-on Builder input fungerer. Send
Accept: application/x-ndjsonså hver event indekseres som sin egen post, og læsX-Next-CursorogX-Has-Moretil checkpointing. - Elastic: Elastic Agent eller Filebeat HTTP JSON / CEL input kan polle endpointet, gemme
cursorsom sin cursor-state og loope påhas_more. NDJSON-tilstand understøttes også. - Wazuh: Wazuh har ingen indbygget REST-poller. Kør et lille planlagt script, der poller endpointet, gemmer
cursori en state-fil og skriver events som JSON-linjer til en logfil, som en Wazuh-agent overvåger medlog_format: json.
Fejlfinding
| Symptom | Sandsynlig årsag | Løsning |
|---|---|---|
401 Unauthorized | Ingen Authorization-header, eller den starter ikke med Bearer | Kontrollér headerformatet i SIEM-connectoren |
403 Forbidden | Tokenet er forkert, blev regenereret, eller integrationen blev deaktiveret | Generér et nyt token i SIEM-fanen, og opdatér SIEM'et |
400 invalid_cursor | Cursoren blev redigeret, afkortet eller kom fra en anden organisation | Nulstil connectorens checkpoint, og start igen fra et start time |
400 invalid_category | Tastefejl i kategorifilteret | Brug en af værdierne fra kategoritabellen |
| Feedet er tomt, men Admin Portal viser events | Events er mindre end 2 minutter gamle, eller kategorifilteret udelukker dem | Vent, eller fjern filteret |
| Connectoren stopper efter et stykke tid | Checkpointet gik tabt, eller tokenet blev regenereret | Bekræft, at cursoren gemmes; bekræft, at tokenet i SIEM'et matcher det nyeste |
| Ældre events mangler | Auditloggens opbevaringsperiode er udløbet for dem | Kontrollér opbevaringsperioden; kør collectoren kontinuerligt |
| Duplikerede events | Normalt ved at-least-once-levering | Deduplikér på id |
Når du kontakter support, skal du inkludere din organisations-id, den præcise request-URL uden tokenet, HTTP-statussen og response body'en.