Acerca de la integración con sistemas privados a través de un proxy inverso
Es posible que quieras entregar webhooks de GitHub a sistemas privados que no son accesibles directamente desde Internet, como sistemas de IC, herramientas de administración de trabajos y aplicaciones personalizadas. Puedes usar un proxy inverso para recibir cargas de webhook de GitHub y entregarlas a tu sistema privado.
Un proxy inverso es un servidor web que se encuentra entre un cliente y una aplicación. El proxy inverso recibe solicitudes del cliente y las reenvía a la aplicación. Esto garantiza que no se produzca ninguna comunicación directa entre los clientes de Internet y la aplicación subyacente. Hay muchos sistemas que pueden funcionar con un proxy inverso, entre los que se incluyen:
- servidores web, como nginx
- puertas de enlace de API
- redes de superposición gratuitas y de código abierto, como OpenZiti
- herramientas de exposición de entornos locales a la web, como ngrok
- herramientas gratuitas de administración de entrada de código abierto, como zrok
La configuración del proxy inverso varía en función del sistema que uses.
Protección del tráfico dirigido al proxy inverso
Al implementar un proxy inverso, debes seguir todos los procedimientos que recomiende el proveedor del proxy inverso para proteger el servidor proxy subyacente. Además, debes seguir los siguientes pasos para asegurarte de que solo se reenvía a la aplicación las solicitudes de GitHub.
Limitar el tráfico entrante a webhooks de GitHub
Debes configurar el proxy inverso para permitir solo solicitudes HTTPS POST desde el subconjunto de intervalos de IP de GitHub que se usan para entregar webhooks. Esto garantiza que el proxy inverso no procese ni reenvíe otras solicitudes.
El punto de conexión /meta
devuelve un objeto JSON que enumera los intervalos IP de GitHub. Los intervalos IP que se usan para entregar webhooks se muestran en el elemento hooks
.
Validación de cargas de webhooks
Si el webhook está configurado con un token secreto, GitHub incluirá un hash criptográfico de cada carga de webhook. Debes usar este hash para validar la carga recibida desde GitHub antes de que el sistema privado realice cualquier acción. Para más información, consulta Validación de entregas de webhook.
Puedes implementar la validación de carga en el proxy inverso o en el sistema privado.