Määratlege VPN-toiming enne API-de võrdlemist
Ühenduse juhtimine, profiilide hankimine, kasutajate haldamine ja vaatlus on erinevad API-d. Nimetage esmalt objekt, tegevus ja õnnestumise tingimus.
Tooteleht väidab, et sellel on API, ja integratsioonikoosolek takerdub teise küsimuse juures. Milline toiming, millise objekti vastu, kelle poolt kutsutud ja mis loeb õnnestumiseks? Nende nelja vastamine enne toodete võrdlemist välistab tavaliselt poole kandidaatidest. See muudab ka järelejäänud võrdluse millekski, mida test saab otsustada.
Asendage väide API olemasolu kohta ühe toiminguga
API on transport, mitte võimekus. REST-otspunkt, kohalik socket ja käsureakestand võivad kõik olla API nimega, kuid need ei paku samaväärseid toiminguid.
Kirjutage toiming lausena enne, kui avate dokumentatsiooni.
Kohaliku ühenduse käivitamine on kliendipoolne tegevus, mille ees on kasutaja. Seadmeprofiili väljastamine on hankimistegevus, mille taga on inventuur. Kasutaja juurdepääsu keelamine on haldustegevus, millel on auditijälg. Need kolm elavad tavaliselt eri komponentides, eri meeskondade omandis ja erineva volitusega.
Neli välja, mis teevad lepingu testitavaks
Täitke iga toimingu jaoks neli välja: objekt, tegevus, kutsuja ja õnnestumise tingimus. Puuduva väljaga leping on soov.
Tabel on kogu tööleht:
| 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 |
Õnnestumise tingimus on väli, mille inimesed vahele jätavad, ja just see otsustab, kas integratsioon töötab. Salvestatud säte ei ole aktiivne tunnel ja keelatud konto ei ole lõppenud sessioon.
Kui kaks toimingut vajavad erinevaid kutsujaid, on need kaks integratsiooni. Nende koondamine ühte teenusekontosse tähendab tavaliselt rohkemate volituste andmist, kui kumbki neist vajab.
Sobitage liides oma tegeliku kihiga
OpenVPN-i kogukonna haldusliides suhtleb deemoniga TCP või Unix-socketi kaudu. Selle käsud hõlmavad olekuvaatlusi ja deemonile saadetavaid signaale.
See teeb sellest deemonijuhtimise kanali, mitte hostitud tellimus-API ega kasutajate registreerimisteenuse. Selle dokumentatsiooni hoolikas lugemine päästab teid kihi vastu ehitamisest, mis objekti ei oma.
Sama dokumentatsioon ütleb, et protokollil ei ole oma krüpteerimist. Kes pääseb socketile ligi, saab deemonit juhtida, seega käsitlege seda tundliku juhtimisena, mitte mõõdikute voona. Siduge see loopbacki või Unix-socketiga ja pange piiratud korralduse taha, kui kaugkutsujal on seda vaja. Mugavuse pärast internetti paljastamine muudab juhtimiskanali intsidendiks.
Määrake käitumine pärast kutset
Vastuvõtmine ei ole sama mis lõpetamine. Deemon võib naasta enne, kui tunnel on püsti, seega oodake dokumenteeritud lõpetamis- või nurjumissündmust ja siduge see saadetud päringuga.
Otsustage, mida kutsuja teeb, kui vastus kaob. Loomise või uuestiühenduse pimesi kordamine ei ole sama mis kontrollimine, kas esimene päring on juba mõjunud.
Juurdepääsu eemaldamine on vähemalt kolm erinevat tegevust: tulevase sisselogimise blokeerimine, aktiivse sessiooni lõpetamine ja mandaadi tühistamine. Küsige neid, mida poliitika tegelikult nõuab, ja öelge lepingus, milline on milline. Ärge nimetage üht õnnestunud konto uuendust täielikuks tühistamiseks ilma tõenditeta. Erinevus on oluline intsidendi ajal, kui kell tiksub.
Kontrollige lepingut piloodiga
Väike heakskiidetud piloot peaks katma õnnestumise, tagasilükkamise, katkestuse ja korduskatse, millele järgneb rakenduse toiming, mis peaks olema lubatud või keelatud.
Deemoni tasandi liidese jaoks harjutavad kaks käsku vaatlust ja signaali:
echo state | nc -w 2 127.0.0.1 7505
echo signal SIGTERM | nc -w 2 127.0.0.1 7505Andke ainult volitus, mida toiming nõuab. Hoidke saladused rutiinsetest logidest eemal ja logige piisavalt privaatseid üksikasju, et öelda, millist sihtmärki see mõjutas ja kuidas see lõppes.
Kirjutage taastamise tee juhuks, kui juhtimis-API ise on maas. Valige liides, mis omab objekti ja selle elutsüklit; tootelehe automatiseerimisväited ei ole asendus.