Et health-endpoint er nyttig når drift, overvåkning eller kontrollpanel skal vite om systemet fungerer. Men et for snakkesalig endepunkt kan også lekke versjoner, filstier, tabellnavn og intern feilinformasjon.

Health-endpoint uten lekkasje
Health-endpoint uten lekkasje visualiserer hovedpoenget i artikkelen.

Health er ikke én ting

Et system kan være i live uten å være klart. Liveness handler om at prosessen svarer. Readiness handler om at systemet faktisk kan betjene trafikk. Det er nyttig å skille disse nivåene.

Svar enkelt offentlig

Et offentlig health-endpoint bør gi kort status og riktig HTTP-kode. Det trenger ikke vise databasebruker, serversti, stack trace eller detaljert konfigurasjon.

Interne sjekker kan vite mer

Et kontrollpanel eller internt verktøy kan vise mer detaljert status til riktige roller. Selv der bør informasjonen begrenses til det som hjelper drift.

Databasekontroll bør være lett

En health-sjekk bør ikke kjøre tunge spørringer. En enkel forbindelse eller lett SELECT er ofte nok. Health-endepunktet skal ikke bli en ny belastning.

Feil må ikke lekke intern struktur

Hvis databasen er nede, bør offentlig svar være nøkternt. Detaljer kan logges internt, men bør ikke vises til alle.

WEBoracle-vurdering

WEBoracle bør ha en enkel offentlig tilgjengelighetssjekk og mer detaljert kontrollpanelstatus for roller som faktisk trenger den. Update terminal og adminverktøy skal ikke gjøres offentlige av den grunn.

Konklusjon

Et godt health-endpoint hjelper drift uten å avsløre systemet. Det forteller nok til at overvåkning kan reagere, men ikke så mye at det blir et informasjonslekkasjeproblem.

Kilder og videre lesning

  1. Kubernetes Documentation: Configure Liveness, Readiness and Startup Probes
  2. OWASP Error Handling Cheat Sheet
  3. OWASP Cheat Sheet Series: Logging Cheat Sheet