editor php Strawberry akan memperkenalkan kepada anda cara mengeluarkan permintaan kebenaran untuk mendapatkan titik akhir API daripada cronjob. Apabila membangunkan aplikasi web, kita selalunya perlu menggunakan cronjob untuk melaksanakan beberapa tugas yang dijadualkan. Walau bagaimanapun, menghantar permintaan terus daripada cronjob mungkin merupakan risiko keselamatan, jadi kami perlu mengambil beberapa langkah untuk memastikan keselamatan permintaan tersebut. Artikel ini akan menjawab soalan ini secara terperinci dan menyediakan kaedah dan cadangan praktikal untuk membantu pembangun menyelesaikan masalah ini.
Saya mempunyai aplikasi golang yang melakukan kebenaran kunci API melalui JWT 令牌
Saya menggunakan Kubernetes. Jadi, aplikasi golang ini tinggal dalam pod.
Sekarang saya ingin mencipta satu lagi aplikasi untuk cronjob mengakses titik akhir golang seminggu sekali.
Apa yang saya perlukan:
Bagaimana untuk melaksanakan/melangkau kebenaran?
SKIP: Tidak perlu Ingress di sini kerana saya boleh memanggilnya secara dalaman. Adakah ini akan membantu kes ini?
Apa yang saya cuba:
Saya cuba mengekalkan cronjob dan api dalam aplikasi yang sama supaya saya boleh memanggil perkhidmatan dan bukannya titik akhir, tetapi ini juga mempunyai kelemahan.
Saya tidak boleh membuat salinan kerana mereka juga menyalin cronjob dan titik akhir yang sama akan dipukul 1*no ofreplicas
kali
Saya mahu menghubungi titik akhir "abc.com" seminggu sekali. Ia memerlukan token, dan saya tidak boleh hanya memberikan token. Saya harap ada cara untuk menyelesaikan masalah ini.
Ia pasti membantu jika anda hanya menghubungi mereka secara dalaman tanpa mendedahkannya. Jika dua Pod (dan oleh itu penempatan) berjalan di bawah kelompok yang sama, anda boleh menggunakan DNS dalaman Kubernetes.
K8s secara automatik mencipta rekod DNS untuk perkhidmatan yang anda buat, yang boleh digunakan untuk komunikasi dalaman dalam format berikut: <service-name>.<service-namespace>.svc.cluster.local
Maklumat lanjut daripada dokumentasi rasmi: Perkhidmatan dan DNS Pods
Jika ini kedengaran pelik atau membantu memahami intipatinya, cuba fikirkan "titik akhir" sebagai peraturan yang ditambahkan pada fail hos sistem anda: ia pada asasnya bermuara kepada menambahkan peraturan di mana <service-name>. <service-namespace>.svc.cluster.local
menunjuk ke alamat IP pod anda , melainkan ianya autolengkap
Sebagai contoh
go-apps
下创建了一个指向它的服务,名为 go-api
. go-api.go-apps.svc.cluster.local[:<port>]
untuk mengakses aplikasi anda tanpa menggunakan Ingress李>
Kebenaran terpulang kepada anda kerana anda biasanya mengendalikannya secara langsung atau menggunakan rangka kerja tertentu.
Sebagai contoh, anda boleh menambah laluan titik akhir tersuai dalam aplikasi anda untuk memastikan bahawa satu-satunya pelanggan yang diterima adalah daripada subnet IP peribadi yang sama bagi kluster, sama ada tanpa menggunakan token (tidak disyorkan) atau menggunakan token separa tetap tertentu yang anda jana dan Satu untuk dikawal supaya anda boleh menghantar permintaan kepada sesuatu seperti ini daripada crons anda: go-api.go-apps.svc.cluster.local:8080/api/v1/callWithNoAuth
Atas ialah kandungan terperinci Bagaimanakah cara saya membuat permintaan kebenaran daripada cronjob ke titik akhir API yang selamat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!