Hetzner Firewall & Dynamic Whitelisting in CI/CD

Data di pubblicazione:

Chi ha detto che la sicurezza della pipeline CI/CD debba rinunciare alla flessibilità? 🛡️

Negli ultimi giorni ho lavorato all'hardening dell'infrastruttura Cloud. L'obiettivo era chiaro: chiudere totalmente le porte SSH dei server VPS su Hetzner, evitando che rimangano esposte al pubblico, ma senza bloccare i deploy automatici gestiti da GitHub Actions.

La soluzione? Dynamic Runner IP Whitelisting via Hetzner Cloud API in Terraform e GitHub Actions:

1️⃣ Durante la pipeline di CD, lo step iniziale recupera l'IP dinamico del runner di GitHub.
2️⃣ Tramite l'API Hetzner (autenticata in modo sicuro con GCP Secret Manager), l'IP viene aggiunto temporaneamente al firewall dedicato.
3️⃣ Viene eseguito il deploy via SSH in totale sicurezza.
4️⃣ Al termine del job (anche in caso di fallimento!), un hook di cleanup rimuove l'IP dal firewall.

Zero porte aperte verso l'esterno 24/7, zero configurazioni statiche rischiose.


💡 Note di Architettura & Terraform

Abbiamo integrato questa logica in Terraform gestendo le regole statiche e quelle dinamiche su due risorse separate per evitare il drift dello stato durante l'invocazione delle pipeline CI/CD.