Introduction
Github utilise son propre système de déploiement pour héberger son code source. Cependant, cela crée des dépendances circulaires qui peuvent causer des problèmes en cas de panne. Pour résoudre ce problème, Github utilise eBPF pour surveiller et bloquer les appels qui créent des dépendances circulaires.
Contexte Technique
Les dépendances circulaires peuvent être de trois types : directes, cachées et transitoires. Les dépendances directes se produisent lorsque le script de déploiement tente de télécharger une ressource à partir de Github. Les dépendances cachées se produisent lorsque le script de déploiement utilise un outil qui vérifie si des mises à jour sont disponibles sur Github. Les dépendances transitoires se produisent lorsque le script de déploiement appelle un service interne qui tente de télécharger une ressource à partir de Github.
Pour résoudre ces problèmes, Github utilise eBPF pour charger des programmes personnalisés dans le noyau Linux et hooker les primitives système comme le réseau. Le programme eBPF utilisé est de type BPF_PROG_TYPE_CGROUP_SKB, qui permet de hooker les appels réseau sortants d'un cGroup.
Analyse et Implications
L'utilisation d'eBPF permet à Github de surveiller et de bloquer les appels qui créent des dépendances circulaires. Cela améliore la sécurité des déploiements et réduit le risque de panne. Cependant, la mise en œuvre d'eBPF nécessite une compréhension approfondie des mécanismes du noyau Linux et des primitives système.
Perspective
À l'avenir, il faudra surveiller les limites de l'utilisation d'eBPF et les prochaines étapes pour améliorer la sécurité des déploiements. Il faudra également examiner les possibilités d'utilisation d'eBPF pour d'autres cas d'utilisation, tels que la surveillance de la sécurité du réseau et la détection des menaces.