Bepaal de VPN-operatie voordat je API's vergelijkt
Verbindingsbeheer, profielinrichting, gebruikersbeheer en observatie zijn verschillende API's. Benoem eerst het object, de actie en de succescriteria.
Een productpagina zegt dat het een API heeft, en de integratievergadering blijft steken bij de tweede vraag. Welke operatie, op welk object, aangeroepen door wie, en wat geldt als succes? Die vier beantwoorden voordat je producten vergelijkt, schrapt meestal de helft van de kandidaten. Het maakt ook de overgebleven vergelijking iets wat een test kan beslechten.
Vervang 'heeft een API' door één operatie
Een API is een transport, geen vermogen. Een REST-endpoint, een lokale socket en een wrapper voor de opdrachtregel mogen allemaal een API heten, en ze bieden geen gelijkwaardige operaties.
Schrijf de operatie als een zin voordat je de documentatie bekijkt.
Een lokale verbinding starten is een actie aan de clientzijde met een gebruiker ervoor. Een apparaatprofiel uitgeven is een inrichtingsactie met een inventaris erachter. De toegang van een gebruiker uitschakelen is een administratieve actie met een auditspoor. Die drie zitten meestal in verschillende componenten, in handen van verschillende teams, met verschillende bevoegdheid.
Vier velden die het contract testbaar maken
Vul vier velden in voor elke operatie: het object, de actie, de aanroeper en de succescriteria. Een contract met een ontbrekend veld is een wens.
De tabel is het hele werkblad:
| 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 |
De succescriteria zijn het veld dat mensen overslaan, en juist dat bepaalt of de integratie werkt. Een opgeslagen instelling is geen actieve tunnel, en een uitgeschakeld account is geen beëindigde sessie.
Als twee operaties verschillende aanroepers nodig hebben, zijn het twee integraties. Ze in één serviceaccount bundelen betekent meestal meer bevoegdheid geven dan elk van beide nodig heeft.
Stem de interface af op de laag waar hij echt bij hoort
De beheerinterface van de community van OpenVPN praat via TCP of een Unix-socket met een daemon. De opdrachten omvatten toestandsobservaties en signalen aan de daemon.
Daarmee is het een besturingskanaal voor de daemon, geen gehoste abonnements-API of een dienst voor gebruikersregistratie. De documentatie aandachtig lezen bespaart je erop bouwen tegen een laag die het object niet bezit.
Die documentatie zegt ook dat het protocol geen eigen versleuteling heeft. Wie de socket kan bereiken, kan de daemon besturen, dus behandel het als gevoelige besturing, niet als een metriekfeed. Bind het aan loopback of een Unix-socket, en zet het achter een beperkte regeling als een externe aanroeper het nodig heeft. Het voor het gemak aan het internet blootstellen maakt van een besturingskanaal een incident.
Specificeer het gedrag na de aanroep
Acceptatie is niet hetzelfde als voltooiing. De daemon kan terugkeren voordat de tunnel actief is, dus wacht op de gedocumenteerde voltooiings- of foutgebeurtenis en koppel die terug aan het verzoek dat je stuurde.
Bepaal wat de aanroeper doet als het antwoord verloren gaat. Blind een aanmaak of een herverbinding herhalen is niet hetzelfde als controleren of het eerste verzoek al effect had.
Toegang intrekken is minstens drie verschillende acties: toekomstige aanmelding blokkeren, een actieve sessie beëindigen en de referentie intrekken. Vraag om de acties die het beleid echt vereist, en zeg in het contract welke welke is. Noem één geslaagde accountupdate niet een volledige intrekking zonder bewijs. Het verschil doet ertoe tijdens een incident, wanneer de klok loopt.
Controleer het contract met een pilot
Een kleine goedgekeurde pilot hoort succes, weigering, onderbreking en herhaling te dekken, gevolgd door de applicatiehandeling die toegestaan of geweigerd zou moeten worden.
Voor een interface op daemonniveau oefenen twee opdrachten observatie en een signaal:
echo state | nc -w 2 127.0.0.1 7505
echo signal SIGTERM | nc -w 2 127.0.0.1 7505Verleen alleen de bevoegdheid die de operatie vereist. Houd geheimen uit routinelogs, en log genoeg private details om te zeggen welk doel geraakt werd en hoe het afliep.
Schrijf het herstelpad op voor het geval de besturings-API zelf uitligt. Kies de interface die het object en zijn levenscyclus bezit; automatiseringsclaims op een productpagina zijn geen vervanging.