Skip to content
Latchkey

O Que É Isolamento de Runner? Impedindo Que Jobs de CI se Toquem

O isolamento de runner garante que cada job de CI execute em seu próprio ambiente separado, para que um job não possa ler, adulterar ou deixar rastros para outro.

Quando vários jobs compartilham um runner, eles compartilham risco. Um arquivo remanescente, um secret persistente ou um processo malicioso de um job pode afetar o próximo. O isolamento de runner rompe esse elo dando a cada job sua própria fronteira. É uma das propriedades de segurança mais fundamentais, e mais negligenciadas, de uma plataforma de build.

O que o isolamento previne

  • Um job lendo secrets deixados por outro.
  • Um job comprometido adulterando builds posteriores (envenenamento).
  • Estado ou cache de um job vazando para a saída de outro.
  • Um processo malicioso persistindo entre jobs no mesmo host.

O problema do runner compartilhado

Um runner self-hosted persistente que executa um job após o outro na mesma máquina acumula estado e exposição. Se um job for comprometido, o atacante pode aguardar o próximo job valioso e colher seus secrets ou alterar seus resultados. Runners compartilhados transformam um comprometimento em muitos.

Como o isolamento é alcançado

O isolamento mais forte dá a cada job um ambiente novo e dedicado, uma nova VM ou container que nunca executou nada, e o descarta quando o job termina. Formas mais fracas reutilizam um host, mas separam os jobs com containers ou usuários; o isolamento completo não reutiliza nada.

Isolamento mais efemeridade

O isolamento diz que os jobs são separados; a efemeridade diz que o ambiente é destruído depois. Juntos, eles garantem um início limpo toda vez e nenhum resíduo deixado para trás, que é exatamente o que tanto a segurança quanto a reprodutibilidade querem.

Isolamento por padrão

Manter isolamento estrito em uma frota self-hosted dá trabalho de verdade. Runners gerenciados que são isolados e efêmeros por design (como o Latchkey) dão a cada job um ambiente novo e privado que é derrubado depois, então ataques entre jobs não têm nada para explorar.

Principais conclusões

  • O isolamento de runner dá a cada job seu próprio ambiente, para que os jobs não afetem uns aos outros.
  • Runners compartilhados e persistentes permitem que um comprometimento colha ou envenene jobs posteriores.
  • Ambientes novos e efêmeros por job entregam o isolamento mais forte.

Guias relacionados