Definišite VPN operaciju prije nego što uporedite API-je
Kontrola veze, dodjela profila, administracija korisnika i posmatranje su različiti API-ji. Prvo imenujte objekat, radnju i uslov uspjeha.
Stranica proizvoda tvrdi da ima API, a sastanak o integraciji zapne na drugom pitanju. Koja operacija, nad kojim objektom, ko je poziva i šta se računa kao uspjeh? Odgovor na ta četiri pitanja prije poređenja proizvoda obično uklanja pola kandidata. On također pretvara preostalo poređenje u nešto što test može riješiti.
Zamijenite tvrdnju da ima API jednom operacijom
API je transport, a ne sposobnost. REST krajnja tačka, lokalni socket i omotač komandne linije mogu se svi nazvati API, ali ne nude ekvivalentne operacije.
Zapišite operaciju kao rečenicu prije nego što otvorite dokumentaciju.
Pokretanje lokalne veze je radnja na strani klijenta sa korisnikom ispred nje. Izdavanje profila uređaja je radnja dodjele sa inventarom iza nje. Onemogućavanje pristupa korisniku je administrativna radnja sa revizijskim tragom. Te tri obično žive u različitim komponentama, koje posjeduju različiti timovi, sa različitim ovlaštenjima.
Četiri polja koja čine ugovor provjerljivim
Popunite četiri polja za svaku operaciju: objekat, radnju, pozivaoca i uslov uspjeha. Ugovor sa poljem koje nedostaje je samo želja.
Tabela je cijeli radni 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 |
Uslov uspjeha je polje koje ljudi preskaču, i ono odlučuje da li integracija radi. Sačuvano podešavanje nije aktivan tunel, a onemogućen račun nije završena sesija.
Ako dvije operacije zahtijevaju različite pozivaoce, to su dvije integracije. Njihovo spajanje u jedan servisni račun obično znači davanje više ovlaštenja nego što je potrebno bilo kojoj od njih.
Uskladite interfejs sa njegovim stvarnim slojem
Zajednički interfejs za upravljanje OpenVPN-a razgovara sa demonom preko TCP-a ili Unix socketa. Njegove komande uključuju posmatranje stanja i signale demonu.
To ga čini kanalom za upravljanje demonom, a ne hostovanim pretplatničkim API-jem ili servisom za registraciju korisnika. Pažljivo čitanje njegove dokumentacije spašava vas od gradnje na sloju koji ne posjeduje objekat.
Ta dokumentacija također kaže da protokol ne nosi vlastito šifriranje. Ko može doći do socketa, može upravljati demonom, pa ga tretirajte kao osjetljivu kontrolu, a ne kao tok metrika. Vežite ga za loopback ili Unix socket, i stavite ga iza ograničenog uređenja ako mu udaljeni pozivalac treba. Izlaganje internetu radi udobnosti pretvara kanal za upravljanje u incident.
Odredite ponašanje nakon poziva
Prihvatanje nije isto što i završetak. Demon se može vratiti prije nego što tunel bude podignut, pa čekajte dokumentovani događaj završetka ili neuspjeha i vežite ga za zahtjev koji ste poslali.
Odlučite šta pozivalac radi ako se odgovor izgubi. Slijepo ponavljanje kreiranja ili ponovnog povezivanja nije isto što i provjera da li je prvi zahtjev već djelovao.
Uklanjanje pristupa su najmanje tri različite radnje: blokiranje buduće prijave, prekid aktivne sesije i opoziv akreditiva. Zatražite one koje politika stvarno zahtijeva, i recite u ugovoru koja je koja. Ne označavajte jedno uspješno ažuriranje računa kao potpuni opoziv bez dokaza. Razlika je važna tokom incidenta, kada sat radi.
Provjerite ugovor pilotom
Mali odobreni pilot treba da pokrije uspjeh, odbijanje, prekid i ponovni pokušaj, nakon čega slijedi operacija aplikacije koja treba biti dozvoljena ili zabranjena.
Za interfejs na nivou demona, dvije komande uvježbavaju posmatranje i signal:
echo state | nc -w 2 127.0.0.1 7505
echo signal SIGTERM | nc -w 2 127.0.0.1 7505Dajte samo ovlaštenja koja operacija zahtijeva. Držite tajne izvan rutinskih dnevnika, i zabilježite dovoljno privatnih detalja da kažete koja je meta pogođena i kako se završilo.
Zapišite put oporavka za slučaj kada je sam kontrolni API nedostupan. Odaberite interfejs koji posjeduje objekat i njegov životni ciklus; tvrdnje o automatizaciji na stranici proizvoda nisu zamjena.