O Que É um Hardened Runner? Uma Máquina de CI Feita para Resistir a Ataques
Um hardened runner é uma máquina de CI deliberadamente configurada para resistir a adulteração, limitar o que os jobs podem alcançar e não deixar estado para trás para o próximo job.
Um runner executa o que quer que seu pipeline mande, incluindo código de dependências e pull requests em que você talvez não confie totalmente. Um hardened runner assume que parte desse código pode ser hostil e é construído para limitar o dano: padrões restritos, acesso de rede limitado, monitoramento e nenhum estado persistente. É a diferença entre um alvo fácil e um fortificado.
O que envolve o hardening
- Rodar jobs com least privilege, não como um usuário todo-poderoso.
- Egress filtering para bloquear conexões de saída inesperadas.
- Monitoramento de comportamento anômalo de processos e de rede.
- Ambientes efêmeros e isolados sem estado compartilhado.
Por que um runner padrão é arriscado
Um runner de longa duração e amplamente permissionado é um alvo suculento: ele vê muitos jobs, carrega credenciais poderosas e persiste estado. O comprometimento de um job pode envenenar o próximo ou colher segredos entre execuções. O hardening remove essas facilidades.
Egress filtering e monitoramento
Dois dos controles mais eficazes são restringir para onde um job pode enviar dados (para que a exfiltração falhe) e observar comportamento suspeito (um build step abrindo de repente uma conexão de rede que nunca abriu antes). Juntos eles pegam e bloqueiam muitos ataques de supply-chain em ação.
Isolamento e ephemerality
Um hardened runner dá a cada job um ambiente fresco e isolado e o destrói depois. Essa única propriedade derrota uma classe inteira de ataques: um job comprometido não pode persistir, não pode ler os segredos de outro job e não pode adulterar builds futuros.
Hardening como um padrão gerenciado
Fazer o hardening de uma frota self-hosted é trabalho contínuo. Managed runners que são isolados e efêmeros por design (como a Latchkey) entregam o hardening central, ambiente fresco por job, sem estado compartilhado, superfície de ataque reduzida, sem sua equipe mantê-lo.
Principais conclusões
- Um hardened runner resiste a adulteração e contém o dano de código hostil.
- Least privilege, egress filtering, monitoramento e isolamento são os controles centrais.
- Ambientes efêmeros e isolados derrotam a persistência e o roubo de segredos entre jobs.