Spring til indhold

Har tilføjet et preflight‑tjek af hemmeligheder

Har tilføjet et preflight‑play, der kører den samme kode som konvergensen mod operatørens lokale hemmeligheder på omkring et sekund, efter at en produktionskørsel var gået ned halvvejs, ved sin niende opgave, med swap‑indstillingerne allerede skrevet til den kørende vært.

  • Airplane takeoff, beautiful plane, on the runway
    Foto: huynhkimdaihuu30051999 / Pixabay
  • Aircraft, airport, runway
    Foto: FrankyFromGermany / Pixabay

produktionskørslen prøvet af på omkring et sekund

Situation. Driftshemmelighederne var lige blevet delt op, så hver vært har sit eget sikkerhedskopilager, sin egen adgangssætning og sin egen alarmswitch. Repository‑koden var korrekt. Operatørens krypterede vault indeholdt stadig den tidligere værdi fra tiden med én vært, og intet kunne se uoverensstemmelsen, fordi vaulten bevidst kun ligger lokalt på operatørens maskine og er usynlig for repositoryets egen kvalitetsgate.

Opgave. Den type fejl skulle kunne opstå et sted, hvor den var billig, for den var lige opstået et sted, hvor den var dyr.

Handling. Den første kørsel efter ændringen koblede på den kørende vært, gennemførte otte opgaver og sagde nej ved den niende — korrekt, men inde fra en kørsel, der allerede havde skrevet swap‑indstillinger til produktion. En halvt gennemført kørsel er et dårligere svar end en afvisning, så der blev skrevet et preflight‑play: det rammer slet ingen vært, kører lokalt, indsamler ingen facts og udfører de samme to opgavefiler, som den rigtige kørsel bruger, mod operatørens vault. Det svarer på omkring et sekund, og provisioneringen kører det først. Den bærende beslutning er, at det er den samme kode og ikke en anden implementering af den samme regel, for et tjek, der gentager en regel på et andet sprog, ender med at være uenig med den, og det i al stilhed. Arbejdet med det afdækkede en fælde, som det selv var tæt på at skabe: facts, der sættes under et play, lever videre efter det play, så hvis preflight og den rigtige kørsel var blevet kædet sammen i ét kald, ville den rigtige rolle have fået en adgangssætning, som preflight allerede havde slået op, og tjekket ville være bestået på en vault, der stadig var forkert. Fælden blev reproduceret, før der blev sikret imod den, i begge opgavefiler.

Resultat. En hemmelighed, der ikke kan slås op, koster nu en afvisning på to sekunder på en bærbar i stedet for en delvist gennemført ændring på en server i drift. Preflight er bevidst ikke mærket til altid at køre og bevidst ikke serialiseret, og begge dele er noteret som beslutninger, ikke som standardvalg.

Ét stykke af en længere fortegnelse — og det hele ligger her på sitet.

Hver post er skrevet på samme måde: situationen, opgaven, hvad vi gjorde, og hvad der ændrede sig.

Se hele fortegnelsen