Defina a operación de VPN antes de comparar API
O control de conexións, o aprovisionamento de perfís, a administración de usuarios e a observación son API distintas. Nomee primeiro o obxecto, a acción e a condición de éxito.
Unha páxina de produto di que ten unha API, e a reunión de integración atasca na segunda pregunta. Que operación, sobre que obxecto, chamada por quen e que conta como éxito? Responder esas catro antes de comparar produtos adoita eliminar a metade dos candidatos. Tamén converte a comparación restante en algo que unha proba pode resolver.
Substitúa a afirmación de que ten unha API por unha soa operación
Unha API é un transporte, non unha capacidade. Un punto final REST, un socket local e un envoltorio de liña de ordes poden chamarse API, e non ofrecen operacións equivalentes.
Escriba a operación como unha frase antes de abrir a documentación.
Iniciar unha conexión local é unha acción do lado do cliente cun usuario diante. Emitir un perfil de dispositivo é unha acción de aprovisionamento cun inventario detrás. Desactivar o acceso dun usuario é unha acción administrativa cun rastro de auditoría. Esas tres adoitan vivir en compoñentes distintos, propiedade de equipos distintos, con autoridade distinta.
Catro campos que fan comprobable o contrato
Encha catro campos para cada operación: o obxecto, a acción, o invocador e a condición de éxito. Un contrato ao que lle falta un campo é un desexo.
A táboa é toda a folla de traballo:
| 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 |
A condición de éxito é o campo que a xente omite, e é o que decide se a integración funciona. Un axuste gardado non é un túnel activo, e unha conta desactivada non é unha sesión rematada.
Se dúas operacións necesitan invocadores distintos, son dúas integracións. Agrupalas nunha soa conta de servizo adoita significar conceder máis autoridade da que necesita calquera das dúas.
Axuste a interface á súa capa real
A interface de xestión comunitaria de OpenVPN fala cun demo por TCP ou por un socket Unix. As súas ordes inclúen observacións de estado e sinais ao demo.
Iso convértea nunha canle de control do demo, non nunha API de subscrición aloxada nin nun servizo de alta de usuarios. Ler a súa documentación con coidado evita construír contra unha capa que non posúe o obxecto.
Esa documentación tamén di que o protocolo non leva cifrado propio. Quen poida alcanzar o socket pode controlar o demo, así que tráteo como control sensible e non como un fluxo de métricas. Áteo a loopback ou a un socket Unix, e pono detrás dun arranxo restrinxido se un invocador remoto o necesita. Expoñelo a internet por comodidade converte unha canle de control nun incidente.
Especifique o comportamento tras a chamada
A aceptación non é o mesmo que a finalización. O demo pode volver antes de que o túnel estea erguido, así que espere o evento documentado de finalización ou de fallo e vincúleo á petición que enviou.
Decida que fai o invocador se se perde a resposta. Repetir unha creación ou unha reconexión ás cegas non é o mesmo que comprobar se a primeira petición xa surtiu efecto.
Retirar o acceso son polo menos tres accións distintas: bloquear o inicio de sesión futuro, terminar unha sesión viva e revogar a credencial. Pida as que a política realmente esixe, e diga no contrato cal é cal. Non etiquete unha actualización de conta exitosa como revocación completa sen probas. A diferenza importa durante un incidente, cando o reloxo corre.
Comprobe o contrato cun piloto
Un piloto pequeno e aprobado debería cubrir éxito, rexeitamento, interrupción e reintento, seguido da operación de aplicación que se supón permitida ou denegada.
Para unha interface a nivel de demo, dúas ordes exercitan a observación e un sinal:
echo state | nc -w 2 127.0.0.1 7505
echo signal SIGTERM | nc -w 2 127.0.0.1 7505Conceda só a autoridade que a operación require. Mantena os segredos fóra dos rexistros rutineiros e rexistre abondo detalle privado para dicir que obxectivo se viu afectado e como rematou.
Escriba a ruta de recuperación para o caso de que a propia API de control estea caída. Escolla a interface que posúe o obxecto e o seu ciclo de vida; as afirmacións de automatización nunha páxina de produto non son un substituto.