Maison >développement back-end >Golang >Comment puis-je faire une demande d'autorisation depuis des tâches cron vers un point de terminaison d'API sécurisé ?
l'éditeur php Strawberry vous présentera comment émettre des demandes d'autorisation pour sécuriser les points de terminaison de l'API contre les tâches cron. Lors du développement d'applications Web, nous devons souvent utiliser des tâches cron pour effectuer certaines tâches planifiées. Cependant, l'envoi de requêtes directement depuis des tâches cron peut constituer un risque pour la sécurité, nous devons donc prendre certaines mesures pour garantir la sécurité des requêtes. Cet article répondra à cette question en détail et fournira des méthodes et suggestions pratiques pour aider les développeurs à résoudre ce problème.
J'ai une application Golang qui effectue l'autorisation de clé API via JWT 令牌
J'utilise Kubernetes. Ainsi, cette application Golang vit dans un pod.
Maintenant, je souhaite créer une autre application pour les tâches cron afin d'accéder au point de terminaison Golang une fois par semaine.
De quoi ai-je besoin :
Comment exécuter/ignorer l'autorisation ?
SKIP : Pas besoin d'Ingress ici car je peux simplement l'appeler en interne. Est-ce que cela aidera l'affaire ?
Ce que j'ai essayé :
J'ai essayé de conserver les tâches cron et l'API dans la même application afin de pouvoir simplement appeler le service au lieu du point de terminaison, mais cela présente également un inconvénient.
Je ne peux pas créer de copie car ils copient également les tâches cron et le même point de terminaison sera atteint 1*no ofreplicas
fois
Je souhaite appeler le point de terminaison "abc.com" une fois par semaine. Cela nécessite un jeton, et je ne peux pas simplement transmettre un jeton. J'espère qu'il existe un moyen de résoudre ce problème.
Cela aiderait certainement si vous les appeliez simplement en interne sans les exposer. Si deux Pods (et donc déploiements) s'exécutent sous le même cluster, vous pouvez utiliser le DNS interne de Kubernetes.
K8s crée automatiquement des enregistrements DNS pour les services que vous créez, qui peuvent être utilisés pour les communications internes au format suivant : <service-name>.<service-namespace>.svc.cluster.local
Plus d'informations dans la documentation officielle : Services et Pods DNS
Si cela semble bizarre ou si cela aide à comprendre l'essentiel, essayez de penser à un "point de terminaison" comme une règle ajoutée au fichier hosts de votre système : cela revient essentiellement à ajouter une règle où <service-name>. <service-namespace>.svc.cluster.local
pointe vers l'adresse IP de votre pod, à moins que ce soit une saisie semi-automatique
Par exemple
go-apps
下创建了一个指向它的服务,名为 go-api
. go-api.go-apps.svc.cluster.local[:<port>]
pour accéder à votre application sans utiliser Ingress李>
L'autorisation dépend de vous car vous la gérez généralement directement ou en utilisant un cadre spécifique.
Par exemple, vous pouvez ajouter un chemin de point de terminaison personnalisé dans votre application pour garantir que les seuls clients acceptés proviennent du même sous-réseau IP privé du cluster, soit sans utiliser de jeton (non recommandé), soit en utilisant un jeton spécifique semi-fixe que vous avez choisi. générer et Un à contrôler afin que vous puissiez envoyer des requêtes à quelque chose comme ceci depuis vos crons : go-api.go-apps.svc.cluster.local:8080/api/v1/callWithNoAuth
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!