device icon indicating copy to clipboard operation
device copied to clipboard

Direkte integrasjon med Kolide

Open sechmann opened this issue 1 year ago • 0 comments

Beskrivelse / Essensen

Vi ønsker å forbedre opplevelsen rundt sjekker som feiler / devices som er uhealthy / devices som er ut av sync med Kolide. Dagens løsning er tett integrert med Slack, har høy latency, er enveis, og gir ikke brukeren mulighet til å gjøre noe fra eller til om noe ikke virker. Dette kan vi gjøre bedre ved å integrere tettere og direkte med Kolide.

Investeringsvilje

2 uker (2 pers)

Ikke-mål

  • Vi ønsker ikke å bytte ut Kolide i denne omgangen
  • Vi ønsker ikke å videreutvikle Slack-løsningen, den kan leve sitt eget liv.

Løsningen i grove trekk

Flytting av Kolide API-kall

I dag ligger koden som bestemmer om en device er healthy i kolide-event-handler. Denne komponenten lytter på Kolide webhooks, samt kjører en full sync av alle devices på et fast intervall. For hver device sendes en event til apiserver (som er gRPC subscriber her) som sier om devicen er healthy eller ikke.

Vi flytter full sync logikken til apiserver, og gjør om kolide-event-handler til en ren webhook-mottaker (da apiserver ikke er eksponert på nett).

Trigging av ny sjekk

Vi legger også til en ny funksjon i apiserver (RefreshKolideStatus) som kan sjekke status for en spesifikk device, som vi lar devices kalle.

graph LR;
agent     -- GetDeviceConfiguration --> apiserver
agent     -- RefreshKolideStatus    --> apiserver
systray   -- Status                 --> agent
systray   -- RefreshKolideStatus    --> agent
CLI       -- Status                 --> agent
CLI       -- RefreshKolideStatus    --> agent
apiserver -- Events                 --> kolide-event-handler
apiserver -- getFailures etc        --> Kolide-API

Utvidelse av GetDeviceConfiguration

Vi ønsker også at det skal bli mulig å se hvorfor en device er unhealthy, dagens GetDeviceConfiguration streamer objekter av typen:

message GetDeviceConfigurationResponse {
  DeviceConfigurationStatus status = 1;
  repeated Gateway Gateways = 2;
}

Der DeviceConfigurationStatus som er en enum av healthy, unhealthy, eller unauthorized. Vi må lage et nytt felt (for bakoverkompabilitet) med felter som sier noe om hvilke failures som er aktive på devicen, med info som tilsvarer meldingen man får på slack. I tillegg bør den vite når grace perioden går ut.

Eventuell annen relevant informasjon

  • https://kolideapi.readme.io/reference/get_devices-deviceid-open-issues
  • https://kolideapi.readme.io/reference/get_checks (data[].check_information.link fra responsen over har linken til checken)

sechmann avatar Apr 08 '24 09:04 sechmann