Skip to main content

Fornecer webhooks para sistemas privados

Para limitar a exposição do seu sistema privado à Internet, você pode usar um proxy reverso para encaminhar webhooks da GitHub para seu sistema privado.

Sobre a integração com sistemas privados via proxy reverso

Talvez você queira fornecer webhooks do GitHub para sistemas privados que não são diretamente acessíveis pela Internet, como sistemas de CI, ferramentas de gerenciamento de trabalho e aplicativos personalizados. Você pode usar um proxy reverso para receber cargas de webhook da de GitHub e entregá-las ao seu sistema privado.

Um proxy reverso é um servidor da Web que fica entre um cliente e um aplicativo. O proxy reverso recebe solicitações do cliente e as encaminha ao aplicativo. Isso garante que não ocorra nenhuma comunicação direta entre os clientes na Internet e o aplicativo subjacente. Vários sistemas podem servir como proxy reverso, incluindo:

  • servidores Web, como o nginx
  • Gateways de API
  • redes de sobreposição gratuitas e de código aberto, como o OpenZiti
  • ferramentas comerciais de gerenciamento de entrada, como o ngrok
  • Ferramentas gratuitas de gerenciamento de entrada de código aberto, como o Zrok

A forma de configurar o proxy reverso varia de acordo com o sistema que você está usando.

Protegendo o tráfego para seu proxy reverso

Ao implantar um proxy reverso, você deve seguir todas as práticas recomendadas pelo seu provedor de proxy reverso para proteger o servidor proxy subjacente. Além disso, você deve seguir as etapas a seguir para garantir que apenas as solicitações da GitHub sejam encaminhadas ao seu aplicativo.

Limitação do tráfego de entrada para webhooks da GitHub

Você deve configurar seu proxy reverso para permitir apenas solicitações POST HTTPS do subconjunto de intervalos de IPs do GitHub que são usados para fornecer webhooks. Isso garante que seu proxy reverso não processe ou encaminhe outras solicitações.

O ponto de extremidade /meta retorna um objeto JSON que lista os intervalos de IPs do GitHub. Os intervalos de IPs usados para fornecer webhooks estão listados no elemento hooks.

Validação de cargas de webhooks

Se o seu webhook estiver configurado com um token secreto, o GitHub incluirá um hash criptográfico de cada carga útil do webhook. Você deve usar esse hash para validar a carga recebida do GitHub antes que qualquer medida seja tomada pelo seu sistema privado. Para saber mais, confira Validação de entregas de webhooks.

Você pode implementar a validação de carga útil no proxy reverso ou no seu sistema privado.