Naar inhoud

Kookboek

Kookboek: noodstop-oefening

Voer een veilige noodstop-oefening uit op een niet-productiedomein — schakel de domeinbrede stop in, verifieer weigering op elke actuatienaad.

Laatst bijgewerkt:

De noodstop is de domeinbrede deny-gate. Inschakelen is bewust goedkoop — admin-tier, geen quorum — want een stop die wacht op consensus is geen stop. Opnieuw inschakelen is bewust duur: dual-control, geen break-glass. Je wilt niet om 03:00 een gat ontdekken in een van beide richtingen.

Een oefening op een niet-productie-tenant is de enige veilige manier om te bewijzen dat de stopgate elke actuatienaad weigert, dat lopende goedkeuringen atomisch worden geannuleerd, en dat opnieuw inschakelen daadwerkelijk twee verschillende mensen vereist. Voer het uit voordat je het nodig hebt.

Voorwaarden

  • Een niet-productie-tenant. De oefening schakelt een echte domeinbrede stop in. Voer het uit tegen staging of dev, nooit productie.
  • Minimaal drie menselijke gebruikers. (1) Een admin-tier inschakeler; (2) twee verschillende herinschakel-goedkeurders (editor of hoger) die voldoen aan de critical dual-control- ondergrens; (3) een niet-betrokken nacontroleur (editor of hoger) die de verplichte nacontrole afsluit. De nacontroleur mag overlappen met een goedkeurder als deze niet de inschakeler is.
  • Een lijst van bestuurde actuatienaden om te testen — deploy apply, orchestration fire, voice open, modeluitvoering, budgetuitgave, plus eventuele aangepaste oppervlakken die je hebt aangesloten.

Stap 1: Schakel de noodstop in

De inschakeler activeert de noodstop met een verplichte redenstring:

# De API-aanroep — vervang je host, poort en auth-header.
curl -X POST https://<host>/v1/kill-switch/engage \
  -H "Authorization: Bearer <admin-token>" \
  -H "Content-Type: application/json" \
  -d '{"reason": "scheduled quarterly drill"}'

Inschakelen is bewust goedkoop: admin-tier, een reden, geen goedkeuringsquorum, geen step-up, geen break-glass. De stoprij wordt de single source of truth. Elke bestuurde actuatie- gate raadpleegt deze live bij elke actie en faalt closed bij een leesfout.

In dezelfde transactie als het inschakelen wordt elke lopende in-scope actuatiegoedkeuring geannuleerd — een pre-stop-intentie kan niet rijpen tot een toekenning op het moment dat het domein terugkomt. Noteer het tijdstempel; je controleert het logboek hierop later.

Stap 2: Verifieer weigering

Met de noodstop ingeschakeld, probeer je elke bestuurde actuatie die je domein heeft aangesloten. Elk moet geweigerd retourneren.

Actuatienaden om te testen:

NaadWat te proberenVerwacht resultaat
DeployPOST /v1/deploy/apply met een geldig planGeweigerd
OrchestrationPOST /v1/orchestration/fireGeweigerd
VoicePOST /v1/voice/openGeweigerd
ModeluitvoeringElke inferentie of modelaanroep via het bestuurde padGeweigerd
BudgetuitgaveElke uitgaveactie tegen de budgetgatesGeweigerd

Test elke naad die je domein heeft ingericht. Als je aangepaste actuatieoppervlakken hebt aangesloten via de bestuurskern, neem die ook mee.

Verifieer ook wat nog moet werken:

De stop stopt het agentdomein, nooit de controles die het besturen. Bestuursacties blijven beschikbaar:

  • Lezen van de toegangskaartGET /v1/access-map moet normaal retourneren.
  • Bekijken van het auditlogboekGET /v1/audit/export moet het logboek retourneren, inclusief de inschakelgebeurtenis die je zojuist hebt aangemaakt.
  • Lijst van goedkeuringen — de goedkeuringswachtrij is leesbaar; de eerder lopende goedkeuringen moeten als geannuleerd worden getoond.

Als een actuatienaad iets anders retourneert dan geweigerd, of als een bestuursactie is geblokkeerd, stop de oefening en onderzoek. De noodstop heeft een gat.

Stap 3: Schakel het domein opnieuw in

Opnieuw inschakelen is nooit eenzijdig. Het vereist een verse dual-control-goedkeuring op het critical tier: twee verschillende mensen, structureel opnieuw geverifieerd bij de omschakeling. Er is bewust geen break-glass-pad voor opnieuw inschakelen — “het domein blijft gestopt” is de veilige toestand.

De inschakeler (of elke admin) verzoekt om opnieuw inschakelen:

curl -X POST https://<host>/v1/kill-switch/re-enable \
  -H "Authorization: Bearer <admin-token>" \
  -H "Content-Type: application/json" \
  -d '{"reason": "drill complete, restoring estate"}'

Dit creëert een goedkeuringsverzoek op critical-tier. Twee goedkeurders — elk een verschillende mens, geen van beiden met een systeemtoken — moeten elk goedkeuren via POST /v1/approvals/<request-id>/decide met {"decision": "approve"}. De dual-control-ondergrens wordt server-side afgedwongen: de dubbele-beslisser-bewaking voorkomt dat één persoon twee keer meetelt, en een systeemtoken wordt geweigerd (geen menselijke zekerheid). Zelfs als het beleidstier is verlaagd, houdt de structurele ondergrens stand — een critical actie kan niet passeren met één goedkeurder. Zodra beide goedkeuringen binnenkomen, wordt het domein opnieuw ingeschakeld.

Stap 4: Verifieer herstel

Herhaal elke actuatiepoging uit Stap 2. Elk moet nu slagen (toegestaan, of gerouteerd naar de normale goedkeuringsstroom). Als een naad geweigerd blijft na opnieuw inschakelen, is het opnieuw inschakelen niet volledig doorgevoerd — onderzoek voordat je de oefening aftekent.

Stap 5: Sluit de nacontrole af

Een verplichte nacontrole door een niet-betrokken mens is structureel vereist voordat een andere noodstop-inschakeling kan plaatsvinden. De controleur moet iemand zijn die niet de inschakeler was:

curl -X POST https://<host>/v1/kill-switch/post-review \
  -H "Authorization: Bearer <reviewer-token>" \
  -H "Content-Type: application/json" \
  -d '{"notes": "drill verified: all seams denied, re-enable required dual-control, restoration confirmed"}'

Totdat deze controle is afgesloten, is een volgende noodstop-inschakeling geblokkeerd. Dit is by design — je kunt geen inschakelingen stapelen om controle te ontlopen.

Wat te controleren in het logboek

Na de oefening, exporteer het auditlogboek en verifieer de volledige trail:

olivares audit export --format json --since <drill-start-timestamp>

Het logboek moet bevatten, in volgorde:

  1. Inschakelgebeurtenis — de admin, de reden (“scheduled quarterly drill”), het tijdstempel en het assurance-level van de inschakelende sessie.
  2. Goedkeuringsannuleringen — elke lopende in-scope goedkeuring die is geannuleerd in dezelfde transactie als het inschakelen.
  3. Weigeringsgebeurtenissen — één voor elke actuatiepoging die werd geweigerd tijdens de stop.
  4. Herinschakelverzoek — het goedkeuringsverzoek op critical tier.
  5. Twee goedkeuringsbeslissingen — één per goedkeurder, elk met vermelding van de verschillende menselijke identiteit.
  6. Herinschakelgebeurtenis — het domein hersteld.
  7. Nacontrolegebeurtenis — de niet-betrokken controleur, hun notities, het afsluittijdstempel.

Elk record bevat de keten-integriteitsvelden (seq, prev_hash, hash, sig). Een ontbrekende of niet-in-volgorde-vermelding betekent dat het logboek een gat heeft — onderzoek voordat je het vertrouwt bij een echt incident.

Frequentie

Voer de oefening per kwartaal uit. De noodstop is de laatste verdedigingslinie; als deze een gat heeft wil je dat ontdekken in een gepland venster, niet tijdens een incident. Voeg de oefening toe aan je operationele kalender naast andere continuïteitsoefeningen (back-up herstellen, failover, break-glass-activering).

Als je domein materieel verandert — nieuwe actuatienaden aangesloten, nieuwe tenants ingericht, beleidsengine gewisseld — voer dan een ongeplande oefening uit om het nieuwe oppervlak te dekken.

Gerelateerd

  • Bestuur — het autorisatiemodel, risicotiers en noodstop-ontwerp.
  • Noodstop — de domeinbrede deny-gate in productermen.
  • Besturen en goedkeuren — de live goedkeuringsstroom en dual-control-mechanismen.

Documentatie doorzoeken