API'leri karşılaştırmadan önce VPN işlemini tanımlayın
Bağlantı denetimi, profil sağlama, kullanıcı yönetimi ve gözlem farklı API'lerdir. Önce nesneyi, eylemi ve başarı koşulunu adlandırın.
Bir ürün sayfası API'si olduğunu söylüyor ve entegrasyon toplantısı ikinci soruda tıkanıyor. Hangi işlem, hangi nesne üzerinde, kim tarafından çağrılıyor ve ne başarı sayılıyor? Ürünleri karşılaştırmadan önce bu dördünü yanıtlamak genellikle adayların yarısını eler. Kalan karşılaştırmayı da bir testin çözebileceği bir şeye dönüştürür.
«API'si var» ifadesini tek bir işlemle değiştirin
API bir taşıma aracıdır, yetenek değil. Bir REST uç noktası, yerel bir soket ve bir komut satırı sarmalayıcısı API olarak adlandırılabilir ve eşdeğer işlemler sunmazlar.
Belgelere bakmadan önce işlemi bir cümle olarak yazın.
Yerel bir bağlantı başlatmak, önünde bir kullanıcı olan istemci tarafı eylemidir. Cihaz profili vermek, arkasında bir envanter olan sağlama eylemidir. Bir kullanıcının erişimini devre dışı bırakmak, denetim izi olan yönetici eylemidir. Bu üçü genellikle farklı bileşenlerde, farklı ekiplerin sahipliğinde ve farklı yetkiyle yaşar.
Sözleşmeyi test edilebilir kılan dört alan
Her işlem için dört alanı doldurun: nesne, eylem, çağıran ve başarı koşulu. Alanı eksik bir sözleşme bir dilektir.
Tablo çalışma sayfasının tamamıdır:
| 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 |
Başarı koşulu insanların atladığı alandır ve entegrasyonun çalışıp çalışmadığına tam da o karar verir. Kaydedilmiş bir ayar etkin tünel değildir ve devre dışı bir hesap sona ermiş oturum değildir.
İki işlem farklı çağıranlar gerektiriyorsa bunlar iki entegrasyondur. Bunları tek bir hizmet hesabında birleştirmek genellikle ikisinin de ihtiyaç duyduğundan fazla yetki vermek anlamına gelir.
Arayüzü gerçekten ait olduğu katmanla eşleştirin
OpenVPN topluluğunun yönetim arayüzü bir daemon ile TCP veya Unix soketi üzerinden konuşur. Komutları durum gözlemlerini ve daemon sinyallerini içerir.
Bu onu bir daemon denetim kanalı yapar, barındırılan bir abonelik API'si veya kullanıcı kayıt hizmeti değil. Belgelerini dikkatle okumak, nesneye sahip olmayan bir katmana karşı geliştirme yapmaktan sizi korur.
O belgeler ayrıca protokolün kendi şifrelemesi olmadığını söyler. Sokete ulaşabilen daemon'u denetleyebilir, bu yüzden onu hassas denetim olarak görün, metrik akışı olarak değil. Onu loopback'e veya bir Unix soketine bağlayın ve uzak bir çağıran ihtiyaç duyuyorsa kısıtlı bir düzenlemenin arkasına koyun. Kolaylık için internete açmak bir denetim kanalını olaya dönüştürür.
Çağrıdan sonraki davranışı belirtin
Kabul, tamamlanmayla aynı şey değildir. Daemon tünel açılmadan dönebilir, bu yüzden belgelenen tamamlanma veya hata olayını bekleyin ve gönderdiğiniz isteğe bağlayın.
Yanıt kaybolursa çağıranın ne yapacağına karar verin. Bir oluşturmayı veya yeniden bağlanmayı körü körüne tekrarlamak, ilk isteğin zaten etkili olup olmadığını kontrol etmekle aynı değildir.
Erişimi kaldırmak en az üç farklı eylemdir: gelecekteki oturum açmayı engellemek, etkin bir oturumu sonlandırmak ve kimlik bilgisini iptal etmek. Politikasının gerçekten gerektirdiklerini isteyin ve sözleşmede hangisinin hangisi olduğunu belirtin. Kanıt olmadan başarılı bir hesap güncellemesini tam iptal olarak etiketlemeyin. Saatin işlediği bir olay sırasında bu fark önemlidir.
Sözleşmeyi bir pilotla kontrol edin
Küçük ve onaylı bir pilot başarıyı, reddi, kesintiyi ve yeniden denemeyi, ardından izin verilmesi veya reddedilmesi gereken uygulama işlemini kapsamalıdır.
Daemon düzeyindeki bir arayüz için iki komut gözlemi ve bir sinyali çalıştırır:
echo state | nc -w 2 127.0.0.1 7505
echo signal SIGTERM | nc -w 2 127.0.0.1 7505Yalnızca işlemin gerektirdiği yetkiyi verin. Sırları rutin günlüklerin dışında tutun ve hangi hedefin etkilendiğini ve nasıl sona erdiğini söylemeye yetecek kadar özel ayrıntı kaydedin.
Denetim API'sinin kendisi çöktüğünde izlenecek kurtarma yolunu yazın. Nesneye ve yaşam döngüsüne sahip olan arayüzü seçin; bir ürün sayfasındaki otomasyon iddiaları bunun yerine geçmez.