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 (editorof hoger) die voldoen aan decriticaldual-control- ondergrens; (3) een niet-betrokken nacontroleur (editorof 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:
| Naad | Wat te proberen | Verwacht resultaat |
|---|---|---|
| Deploy | POST /v1/deploy/apply met een geldig plan | Geweigerd |
| Orchestration | POST /v1/orchestration/fire | Geweigerd |
| Voice | POST /v1/voice/open | Geweigerd |
| Modeluitvoering | Elke inferentie of modelaanroep via het bestuurde pad | Geweigerd |
| Budgetuitgave | Elke uitgaveactie tegen de budgetgates | Geweigerd |
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 toegangskaart —
GET /v1/access-mapmoet normaal retourneren. - Bekijken van het auditlogboek —
GET /v1/audit/exportmoet 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:
- Inschakelgebeurtenis — de admin, de reden (“scheduled quarterly drill”), het tijdstempel en het assurance-level van de inschakelende sessie.
- Goedkeuringsannuleringen — elke lopende in-scope goedkeuring die is geannuleerd in dezelfde transactie als het inschakelen.
- Weigeringsgebeurtenissen — één voor elke actuatiepoging die werd geweigerd tijdens de stop.
- Herinschakelverzoek — het goedkeuringsverzoek op
criticaltier. - Twee goedkeuringsbeslissingen — één per goedkeurder, elk met vermelding van de verschillende menselijke identiteit.
- Herinschakelgebeurtenis — het domein hersteld.
- 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.