Definujte operaci VPN dřív, než začnete porovnávat API
Řízení připojení, zřizování profilů, správa uživatelů a pozorování jsou různé API. Nejprve pojmenujte objekt, akci a podmínku úspěchu.
Stránka produktu tvrdí, že má API, a schůzka k integraci se zasekne u druhé otázky. Která operace, nad kterým objektem, kdo ji volá a co se počítá za úspěch? Odpověď na tyto čtyři otázky před porovnáním produktů obvykle vyřadí polovinu kandidátů. Zároveň promění zbývající srovnání v něco, co může rozhodnout test.
Nahraďte tvrzení, že má API, jednou operací
API je přenos, ne schopnost. Koncový bod REST, místní socket i obal příkazové řádky se mohou nazývat API, ale nenabízejí rovnocenné operace.
Napište operaci jako větu, než otevřete dokumentaci.
Spuštění místního připojení je akce na straně klienta, před kterou stojí uživatel. Vydání profilu zařízení je akce zřizování, za kterou stojí inventář. Zablokování přístupu uživatele je administrativní akce s auditní stopou. Tyto tři obvykle žijí v různých komponentách, vlastní je různé týmy a mají různou pravomoc.
Čtyři pole, díky nimž je kontrakt testovatelný
U každé operace vyplňte čtyři pole: objekt, akci, volajícího a podmínku úspěchu. Kontrakt s chybějícím polem je jen přání.
Tabulka je celý pracovní list:
| Field | Question | Example |
|---|---|---|
| Object | What is being acted on? | One enrolled device |
| Action | Observe, create, change, start, stop, or revoke? | Revoke |
| Caller | Which identity calls it? | Deployment service |
| Success | What observable state proves it? | Future sign-in denied |
Podmínka úspěchu je pole, které lidé přeskakují, a právě ono rozhoduje, zda integrace funguje. Uložené nastavení není aktivní tunel a deaktivovaný účet není ukončená relace.
Pokud dvě operace potřebují různé volající, jsou to dvě integrace. Spojit je do jednoho servisního účtu obvykle znamená přidělit více pravomocí, než kterákoli z nich potřebuje.
Přizpůsobte rozhraní jeho skutečné vrstvě
Komunitní rozhraní pro správu OpenVPN komunikuje s démonem přes TCP nebo unixový socket. Jeho příkazy zahrnují pozorování stavu a signály démonovi.
To z něj dělá řídicí kanál démona, nikoli hostované předplatitelské API nebo službu registrace uživatelů. Pečlivé čtení dokumentace vás ušetří stavby nad vrstvou, která objekt nevlastní.
Stejná dokumentace uvádí, že protokol nenese vlastní šifrování. Kdo dosáhne na socket, může ovládat démona, proto k němu přistupujte jako k citlivému řízení, ne jako k toku metrik. Připoutejte jej k loopback nebo unixovému socketu a za omezené uspořádání jej dejte, pokud jej potřebuje vzdálený volající. Vystavení internetu pro pohodlí promění řídicí kanál v incident.
Určete chování po volání
Přijetí není totéž jako dokončení. Démon se může vrátit dřív, než tunel naběhne, proto čekejte na dokumentovanou událost dokončení nebo selhání a spojte ji s požadavkem, který jste odeslali.
Rozhodněte, co volající udělá, když se odpověď ztratí. Slepé opakování vytvoření nebo opětovného připojení není totéž jako kontrola, zda první požadavek už zabral.
Odebrání přístupu jsou nejméně tři různé akce: zablokovat budoucí přihlášení, ukončit živou relaci a odvolat pověření. Žádejte ty, které zásada skutečně vyžaduje, a v kontraktu řekněte, která je která. Neoznačujte jedno úspěšné aktualizace účtu za úplné odvolání bez důkazu. Rozdíl je důležitý během incidentu, kdy běží hodiny.
Ověřte kontrakt pilotem
Malý schválený pilot by měl pokrýt úspěch, odmítnutí, přerušení a opakování, následované operací aplikace, která má být povolena nebo zakázána.
Pro rozhraní na úrovni démona procvičují pozorování a signál dva příkazy:
echo state | nc -w 2 127.0.0.1 7505
echo signal SIGTERM | nc -w 2 127.0.0.1 7505Přidělujte jen pravomoc, kterou operace vyžaduje. Držte tajemství mimo běžné logy a logujte dost soukromých podrobností, abyste řekli, který cíl byl zasažen a jak to skončilo.
Zapište cestu obnovy pro případ, kdy je samotné řídicí API nedostupné. Vyberte rozhraní, které vlastní objekt a jeho životní cyklus; sliby automatizace na stránce produktu je nenahradí.