Tugas berjadual atau log masuk manusia: identiti mana yang patut dilihat oleh API?
Tugas cron dan orang di gesaan log masuk ialah prinsipal yang berbeza. Bandingkan laluan rangkaian, identiti aplikasi dan delegasi sebelum mengautomasikan.
Tugas berjadual dan orang di gesaan log masuk memanggil API yang sama dengan kelayakan berbeza, jangka hayat berbeza dan pemilik berbeza. Tugas memerlukan laluan rangkaian, identiti aplikasi dan set kebenaran; orang memerlukan log masuk, faktor kedua dan sesi. Mencampurkan kedua-duanya menghasilkan automasi yang rosak setiap kali kata laluan orang berubah, atau dasar berbilang faktor yang dilemahkan secukupnya untuk mengekalkan tugas cron hidup.
Tiga pintu yang kelihatan seperti satu
Peraturan alamat sumber bertanya dari mana permintaan datang. Pengesahan bertanya siapa yang memanggil dan bukti apa yang dikemukakan. Kebenaran bertanya sama ada prinsipal ini boleh melakukan operasi ini. VPN hanya mengubah yang pertama daripada tiga, dan ia mengubahnya untuk setiap proses pada hos dan bukan hanya untuk tugas itu, jadi asingkan ketiga-tiga pemerhatian dalam rekod insiden.
Itulah sebabnya menukar nod keluar boleh membaiki penolakan kerana alamat sumber dan membiarkan token tidak sah tidak tersentuh. Itulah juga sebabnya token API yang sah tidak menjadikan titik akhir peribadi boleh dicapai daripada tugas yang tiada laluan ke sana.
Laluan interaktif ialah templat automasi yang buruk
Menulis skrip log masuk seseorang menggoda kerana ia berkesan sekali. Skrip menyimpan kata laluan, mungkin benih kata laluan sekali guna, dan kemudian bergantung pada cabaran yang direka untuk menuntut manusia. Amalan terbaik keselamatan OAuth semasa, RFC 9700, melarang pemberian resource-owner-password-credentials dan menerangkan mengapa ia tidak sesuai dengan pengesahan dua faktor dan berbilang langkah.
Alternatif yang disokong biasanya aliran klien sulit yang mana pelayan kebenaran mengesahkan aplikasi dan mengeluarkan token. Pemberian client-credentials dalam RFC 6749 seksyen 4.4 ialah satu contoh. Kewujudannya tidak bermakna setiap API menerimanya, atau bahawa tugas yang diwakilkan oleh pengguna boleh digantikan dengannya, kerana itu adalah soalan untuk pemilik perkhidmatan. Tanya model tanpa pengawasan mana yang disokong oleh perkhidmatan sebelum menulis kod.
Di mana VPN masih sesuai
VPN boleh menyediakan laluan rangkaian yang diperlukan oleh API peribadi, dan itu peranan yang sah. Ia tidak mengesahkan tugas kepada aplikasi, dan ia tidak mengehadkan apa yang tugas boleh lakukan. Alamat keluar bersama juga mengenal pasti hos dan bukan tugas, jadi entri senarai benarkan untuk alamat itu membenarkan setiap proses yang berjalan di atasnya.
Jika tugas berjalan pada pelari bersama, perbezaan itu lebih penting, bukan kurang penting. Aliran kerja lain pada hos yang sama mewarisi laluan dan alamatnya, dan API tidak dapat membezakan kedua-duanya. Itulah kelemahan yang sama seperti kata laluan bersama, dialihkan satu lapisan ke bawah. Letakkan sekatan di tempat aplikasi boleh menguatkuasakannya, dan asingkan pelari jika anda tidak boleh menyempitkan senarai benarkan.
Bandingkan kedua-dua reka bentuk dengan jujur
Log masuk manusia memberi anda orang sebenar, faktor kedua sebenar dan sesi yang boleh diaudit, dan ia tidak boleh berjalan tanpa pengawasan. Identiti aplikasi memberi anda pelaksanaan tanpa pengawasan, skop yang boleh disemak dan kelayakan yang boleh anda putar, dan ia tidak boleh bertindak bagi pengguna yang tidak mewakilkan apa-apa. Kedua-duanya bukan versi yang lebih lemah antara satu sama lain; ia menjawab soalan yang berbeza. Pilih dengan bertanya sama ada tugas mesti berjalan tanpa sesiapa hadir, dan sama ada operasi mesti dikaitkan dengan pengguna tertentu.
Jika kedua-dua jawapan ya, reka bentuk memerlukan model delegasi dan bukan kata laluan pinjaman. Tulis keputusan itu di tempat yang akan ditemui oleh penyelia seterusnya.
Apa yang perlu disahkan sebelum penyerahan
Jalankan satu operasi yang dibenarkan dan satu penolakan yang wajib daripada pekerja sebenar, dan simpan kedua-dua hasil. Kemudian uji kelayakan tamat tempoh dan tingkah laku apabila laluan rangkaian tidak tersedia, kerana itulah dua kegagalan yang membangunkan seseorang pada malam hari.
curl -sS -o /dev/null -w '%{http_code}\n' \
-H "Authorization: Bearer TOKEN" https://api.example.com/v1/records
Catat prinsipal, skop, pemilik putaran dan persekitaran pelaksanaan di sebelah hasil itu. Catatan itulah yang menjadikan putaran seterusnya rutin dan bukan insiden. Ia juga bahagian yang diminta oleh juruaudit.