Cache VPN-klassificeringen, hold dens alder synlig
En observation, dens friskhed og dit sites svar ældes i forskelligt tempo. Holdt adskilt forbliver en cachet klassificering ærlig om, hvad den ved.
En cachet klassificering sparer et opslag og fryser gårsdagens mening ind i dagens beslutning. Den rigtige sammenligning er ikke cache mod ingen cache: det er en observation, dens friskhed og det svar dit site valgte. Mister du grænsen mellem de tre, begynder en optimering at lave politik på egen hånd. Reparationen er bogføring, ikke et bedre feed.
Tre poster med tre forskellige ure
En observation er det felt, du modtog, det feed det kom fra, og den dataversion der ligger bag. Friskhed er en egenskab ved cacheposten: hvornår opslaget kørte, hvornår posten ikke længere stoles, og om den seneste opdatering returnerede noget. Svaret er, hvad dit site gør ved det for denne anmodning, denne konto eller denne handling. De produceres af forskellige ejere og forfalder i forskelligt tempo, og derfor ødelægger én række kaldet blocked forskellen.
| Record | Who owns it | How long it should live | Damage when it is folded into another row |
|---|---|---|---|
| The observation | the feed's operator | until a newer dataset version replaces it | a stale lookup becomes indistinguishable from a fresh one |
| Its freshness | the application | one request's tolerance for age | a failed refresh hides behind a cache hit |
| The response | whoever owns the site policy | until that policy is reviewed | a feed outage turns into an indefinite block |
To ure fortjener særlig omhu. Det øjeblik, dit opslag kørte, er ikke det øjeblik, udbyderen offentliggjorde datasættet, og en operatør, der læser rækken senere, skal vide, hvilken af de to hver værdi kom fra. Sæt udløb og opdatering efter feedets dokumenterede opdateringsmodel og efter prisen for at tage fejl, aldrig efter et tal lånt fra et andet site.
Behold feltet, ikke dommen
MaxMinds dokumentation om anonyme IP-adresser er et konkret eksempel på et feed, der skiller anonym VPN, hostingudbyder, offentlig proxy og Tor-exit i separate felter. Det dokumenterer også, at et uregistreret VPN-subnet i stedet kan dukke op under hostingflaget. At flade det ud til én boolean smider den eneste del væk, som en operatør senere kunne revidere.
Ingen af slutningsretningerne er sikre. Et hostingmærke beviser ikke, at en tunnel blev brugt, og fraværet af et VPN-flag beviser ikke, at der ikke sad noget mellem klienten og din tjeneste. Det er to forskellige påstande, og én boolean kan ikke udtrykke nogen af dem.
Bind posten til den adresse, du har verificeret
Bag en omvendt proxy skal applikationen bruge den klientadressehåndtering, som udrulningen har godkendt. Et videresendelseshoved, som kalderen leverer, må aldrig kunne vælge en andens cachede omdømme.
Den fejl er både en korrekthedsfejl og en sikkerhedsfejl, fordi en angriber, der kontrollerer hovedet, kan arve en betroet post eller fastlåse et offer til en dårlig. Udled nøglen fra den forbindelse, din egen infrastruktur afsluttede, og registrér, hvilken udledning der blev brugt. Når flere proxier står foran, dokumentér kæden i stedet for at stole på det første hoved, der ser plausibelt ud. Er kæden tvetydig, log den udledte nøgle og det hoved, du afviste, fordi det andet er det, en hændelsesgennemgang vil spørge om.
Ingen beviser er ikke et rent resultat
En timeout, et fejlformet svar og en utilgængelig database betyder hver noget andet end et vellykket opslag, der ikke matchede noget. Repræsenter dem som separate udfald, og beslut på forhånd, hvad den beskyttede handling gør, når der slet ikke er beviser. En skrivebeskyttet side og en handling på en konto, der er logget ind, kan med rimelighed følge forskellige regler der.
At beholde normal godkendelse eller bede om en understøttet verifikation er normalt et bedre svar end at behandle et udfald som blanket tilladelse eller som en sitebred udelukkelse. Begræns, hvor længe et opslag må køre, og stop opdateringsstorme med den mekanisme, integrationen understøtter. Når en forældet værdi bruges under et udfald, mærk den som forældet på beslutningspunktet, og gør opdateringens seneste fejl synlig, så en langvarig fejl ikke kan gå for en sund post. Uanset valget skal det skrives der, hvor politikken håndhæves, ikke i en kommentar ved siden af opslaget.
Opbevaring hører til samme beslutning: behold de felter, denne funktion har brug for, og revisionssporet bag dem, ikke mere. En IP-cache behøver ikke blive en browserhistorik.
Accepter fire tilfælde, inklusive en rettelse
Test et friskt resultat, et udløbet resultat, et mislykket opslag og en klassificering, der senere blev rettet. Hvert tilfælde øver en anden gren, og kun det sidste viser, om en fejlagtig begrænsning kan fortrydes.
Bekræft derefter, at en almindelig bruger har en vej til at bede om gennemgang efter en forkert blokering, fordi feedet nogle gange tager fejl, og køen er en del af designet. Skriv de fire tilfælde ind i runbooken med politikejerens navn ved siden af. Designet fortjener sin plads, når det fjerner overflødige opslag, mens usikkerheden holdes intakt, og beslutningen tydeligt ejes af et menneske.