Gerenciar executores

Concluído

Nesta seção, você explorará as diferentes ferramentas e estratégias disponíveis para você no GitHub Enterprise Cloud e no GitHub Enterprise Server para gerenciar o uso de executores do GitHub Actions em sua empresa.

Escolha um executor apropriado para sua carga de trabalho

Dois tipos de executores podem executar fluxos de trabalho do GitHub Actions: Executores hospedados no GitHub ou executores auto-hospedados.

Observação

Os executores hospedados no GitHub estão disponíveis apenas para Enterprise Cloud. Caso tenha uma instância do Enterprise Server, esta seção não será aplicada a você.

Os executores hospedados no GitHub oferecem uma maneira mais rápida e simples de executar seus fluxos de trabalho, enquanto os executores auto-hospedados são uma maneira altamente configurável de executar fluxos de trabalho em seu próprio ambiente personalizado. Por exemplo, caso precise usar uma lista de permissão de endereços IP para sua organização ou uma configuração de hardware especializada para executar seus fluxos de trabalho, use um executor hospedado por você mesmo.

A tabela a seguir compara runners hospedados no GitHub com runners autohospedados. Use-a para escolher o executor apropriado para sua carga de trabalho.

Executores hospedados no GitHub Executores auto-hospedados
Receba atualizações automáticas do sistema operacional, pacotes e ferramentas pré-instalados e o aplicativo do executor auto-hospedado. Recebem atualizações automáticas apenas para o aplicativo executor auto-hospedado. Você é responsável por atualizar o sistema operacional e todos os outros softwares.
GitHub gerenciado e mantido. Podem usar serviços de nuvem ou máquinas locais pelos quais você já pagou. Também são personalizáveis para seus requisitos de hardware, sistema operacional, software e segurança.
Fornecem uma instância limpa para cada execução de trabalho. Não precisam ter uma instância limpa para cada execução de trabalho.
Use minutos gratuitos em seu plano do GitHub, com taxas por minuto aplicadas depois de ultrapassados os minutos gratuitos. São gratuitos para usar com o GitHub Actions, mas você é responsável pelo custo de manter seus computadores executores.

Gerenciar executores para a empresa

O gerenciamento de corredores para a empresa envolve a configuração e a proteção de executores hospedados pelo GitHub e auto-hospedados para garantir fluxos de trabalho de CI/CD eficientes e seguros. Esse gerenciamento inclui a configuração de listas de permissões de IP para controlar o acesso, aprimorar a segurança restringindo o acesso do executor a endereços IP específicos e garantindo a conformidade com as políticas organizacionais. A configuração adequada das listas de permissões de IP para executores hospedados no GitHub e auto-hospedados é crucial para manter interações seguras e confiáveis entre aplicativos internos e executores do GitHub Actions. Atualizações regulares e revisões dessas configurações são necessárias para adaptar-se às alterações nos intervalos de endereços IP e manter a segurança ideal.

Configurando listas de permissões de IP em executores hospedados no GitHub e auto-hospedados

A configuração de listas de permissões de IP ajuda a controlar o acesso aos executores restringindo-os a endereços IP específicos. Essa configuração aprimora a segurança impedindo o acesso não autorizado, mas pode exigir mais configurações de rede.

Executores hospedados no GitHub Executores auto-hospedados
Os executores hospedados no GitHub usam endereços IP dinâmicos, dificultando a configuração de listas de permissões de IP precisas. Use IPs estáticos ou controlados, permitindo a lista de permissões IP precisa ou controle de acesso baseado em IP.
As organizações devem permitir os intervalos de IP publicados do GitHub. Pode ser colocado atrás de firewalls ou VPNs para maior segurança.
Os executores hospedados no GitHub podem ser restritos usando as configurações de segurança corporativa do GitHub. Exigir configuração explícita para se comunicar com serviços externos, aprimorando a segurança.

Lista de IP permitida

Uma lista de IP permitida é um recurso de segurança que restringe o acesso a serviços ou recursos com base em endereços IP predefinidos. Quando as organizações configuram uma lista de permissões de IP, elas podem:

  • Aprimorar a segurança: Impedir o acesso não autorizado permitindo apenas endereços IP confiáveis.
  • Controlar o tráfego de rede: Restrinja solicitações de entrada e saída a IPs conhecidos e verificados.
  • Melhorar a conformidade: Verifique a conformidade regulatória limitando o acesso a redes autorizadas.
Executores hospedados no GitHub Executores auto-hospedados
As organizações devem permitir os intervalos de IP publicados do GitHub, que mudam periodicamente. Os administradores podem definir endereços IP específicos que têm permissão para acessar os executores.
Os executores hospedados no GitHub podem ser configurados por meio das configurações de segurança do GitHub. Os executores auto-hospedados funcionam bem com firewalls, VPNs ou grupos de segurança na nuvem.

Configurando listas de permissões de IP para aplicativos internos interagirem com GitHub-Hosted Runners

Para configurar listas de permissões de IP para aplicativos e sistemas internos interagirem com os executores hospedados no GitHub, você pode consultar a seguinte documentação oficial do GitHub:

1. Entender os intervalos de endereços IP do GitHub

Os executores hospedados no GitHub operam em intervalos de endereços IP específicos. Para garantir que seus aplicativos internos possam se comunicar com esses executores, você precisa permitir esses intervalos de IP por meio do firewall. O GitHub fornece um ponto de extremidade de meta API https://api.github.com/meta que lista todos os intervalos de endereços de IP atuais usados pelos serviços do GitHub, incluindo intervalos de IP dos executores de Ações. Atualizar regularmente suas listas de permissões com base nessas informações é essencial, pois os intervalos de IP podem ser alterados.

2. Configurar o firewall

a. Obtenha os intervalos de IP do GitHub:
  • Utilize o endpoint da API meta para recuperar os intervalos de endereços IP mais recentes usados pelos runners do GitHub Actions.
b. Atualizar regras de firewall:
  • Adicione regras ao firewall para permitir o tráfego de entrada e saída de e para esses intervalos de IP. Essa configuração garante que seus sistemas internos possam interagir com os executores hospedados no GitHub sem problemas de conectividade.

3. Considere o uso de executores auto-hospedados

Se a manutenção de uma lista de permissões de IP para corredores hospedados no GitHub for desafiadora devido a alterações frequentes nos intervalos de IP, considere configurar corredores auto-hospedados em sua rede. Essa abordagem permite que você tenha mais controle sobre o ambiente do executor e as configurações de rede. Porém, usar executores auto-hospedados requer mais manutenção e gerenciamento de infraestrutura.

Captura de tela de uma tela de executores vazia.

4. Revisar e atualizar listas de permissões regularmente

Como os intervalos de endereços IP do GitHub podem ser alterados, é crucial revisar e atualizar periodicamente as listas de permissões de IP do firewall. Automatizar esse processo com scripts de recuperação de intervalos de IP da meta API do GitHub pode ajudar a garantir que suas listas de permissões permaneçam atuais sem intervenção manual.

Efeitos e possíveis vetores de abuso de habilitar executores auto-hospedados em repositórios públicos

Efeitos da habilitação de executores auto-hospedados

  1. Personalização e otimização de desempenho

    • Os executores auto-hospedados permitem o controle sobre o hardware, o software instalado e as configurações de ambiente.
    • Os fluxos de trabalho podem ser otimizados para desempenho usando computadores dedicados e de alto desempenho.
  2. Economia de custos

    • Ao contrário dos executores hospedados no GitHub (que têm uso gratuito limitado), os executores auto-hospedados são executados em sua infraestrutura, reduzindo as restrições de custo.
  3. Persistência de estado

    • Os executores auto-hospedados não são redefinidos entre trabalhos como os executores hospedados pelo GitHub.
    • Permite armazenamento em cache de dependências, reutilização de grandes conjuntos de dados e manutenção de estados persistentes.
  4. Responsabilidade de segurança e manutenção

    • Patches de segurança, atualizações de dependência e monitoramento do sistema tornam-se responsabilidade do proprietário do executor.
    • Configurações incorretas podem expor o executor a ameaças externas.

Potenciais vetores de abuso de executores auto-hospedados

Habilitar executores auto-hospedados em repositórios públicos apresenta riscos de segurança significativos. Como qualquer pessoa pode disparar fluxos de trabalho enviando uma solicitação de pull, os invasores podem explorar esse recurso de várias maneiras:

  1. RCE (Execução arbitrária de código) por atores mal-intencionados

    • Os invasores podem enviar solicitações de pull que contêm scripts mal-intencionados, que o executor auto-hospedado executa automaticamente.
    • Se o executor tiver privilégios elevados, o invasor obterá acesso total ao sistema.
  2. Mineração e exploração de recursos de criptomoedas

    • Os invasores podem abusar de corredores auto-hospedados para minerar a criptomoeda, causando um alto uso inesperado de CPU e GPU.
    • Isso aumenta os custos operacionais e reduz a disponibilidade para fluxos de trabalho legítimos.
  3. Exfiltração de dados e roubo de credenciais

    • Se os segredos (chaves de API, credenciais de banco de dados, chaves SSH) forem armazenados no executor, os invasores poderão extraí-los.
    • Exemplo de vetor de ataque: uma solicitação de pull mal-intencionada pode ler e enviar variáveis de ambiente armazenadas para um servidor externo.
  4. Ataques de DoS (negação de serviço)

    • Os invasores podem inundar o repositório com várias solicitações de pull para sobrecarregar os executores auto-hospedados.
    • Se os executores estiverem em infraestrutura compartilhada, outros fluxos de trabalho críticos poderão ser interrompidos.
  5. Movimentação lateral e exploração de rede

    • Se o executor auto-hospedado estiver dentro de uma rede corporativa, um invasor poderá dinamizar em sistemas internos.
    • Pode levar a violações de dados, ataques de ransomware ou acesso persistente a recursos privados.

Estratégias de mitigação

Para reduzir os riscos de segurança, siga estas práticas recomendadas:

  • Restringir os executores auto-hospedados somente a repositórios privados
  • Exigir aprovação de fluxo de trabalho para solicitações de pull de colaboradores externos
  • Execute corredores auto-hospedados em um ambiente seguro e isolado (por exemplo, contêineres, máquinas virtuais)
  • Usar firewalls e regras de rede para bloquear o acesso não autorizado
  • Limitar o acesso a segredos confidenciais e armazenar credenciais com segurança
  • Monitorar e registrar a atividade do executor para detectar anomalias

Selecionando os executores apropriados para dar suporte a cargas de trabalho

Noções básicas sobre os executores do GitHub

O GitHub Actions dá suporte a dois tipos de executores:

  1. Executores hospedados no GitHub

    • Gerenciado pelo GitHub, provisionado e dimensionado automaticamente.
    • Inclui software, ferramentas e dependências pré-instalados para fluxos de trabalho comuns.
    • Disponível para Windows, Linux e macOS.
    • Recomendado para automação geral, projetos de software livre e configuração rápida.
  2. Executores auto-hospedados

    • Gerenciado pelo usuário, fornecendo controle total sobre o ambiente e os recursos.
    • Pode ser configurado para hardware personalizado, local ou infraestrutura de nuvem.
    • Dá suporte a estados persistentes entre trabalhos, permitindo melhor cache e dependências personalizadas.
    • Recomendado para repositórios privados, cargas de trabalho corporativas e tarefas com uso intensivo de desempenho.

Escolhendo entre executores hospedados no GitHub e auto-hospedados

Dois tipos de executores podem executar fluxos de trabalho do GitHub Actions: Executores hospedados no GitHub ou executores auto-hospedados.

Observação

Os executores hospedados no GitHub estão disponíveis apenas para Enterprise Cloud. Caso tenha uma instância do Enterprise Server, esta seção não será aplicada a você.

Os executores hospedados no GitHub oferecem uma maneira mais rápida e simples de executar seus fluxos de trabalho, enquanto os executores auto-hospedados são uma maneira altamente configurável de executar fluxos de trabalho em seu próprio ambiente personalizado. Por exemplo, caso precise usar uma lista de permissão de endereços IP para sua organização ou uma configuração de hardware especializada para executar seus fluxos de trabalho, use um executor hospedado por você mesmo.

A tabela a seguir compara runners hospedados no GitHub com runners autohospedados. Use-a para escolher o executor apropriado para sua carga de trabalho.

Executores hospedados no GitHub Executores auto-hospedados
Receba atualizações automáticas do sistema operacional, pacotes e ferramentas pré-instalados e o aplicativo do executor auto-hospedado. Recebem atualizações automáticas apenas para o aplicativo executor auto-hospedado. Você é responsável por atualizar o sistema operacional e todos os outros softwares.
GitHub gerenciado e mantido. Podem usar serviços de nuvem ou máquinas locais pelos quais você já pagou. Também são personalizáveis para seus requisitos de hardware, sistema operacional, software e segurança.
Fornecem uma instância limpa para cada execução de trabalho. Não precisam ter uma instância limpa para cada execução de trabalho.
Use minutos gratuitos em seu plano do GitHub, com taxas por minuto aplicadas depois de ultrapassados os minutos gratuitos. São gratuitos para usar com o GitHub Actions, mas você é responsável pelo custo de manter seus computadores executores.

Escolhendo o sistema operacional certo para corredores

1. Executores do Linux (padrão)
  • Melhor para a maioria das cargas de trabalho
  • Rápido, econômico e amplamente suportado
  • Usado em CI/CD, script, Docker e automação
    Exemplo: ubuntu-latest, ubuntu-22.04
2. Executores do Windows
  • Necessário para aplicativos .NET, software baseado no Windows e GUI
  • Dá suporte ao PowerShell, dependências específicas do Windows
    Exemplo: windows-latest, windows-2022
3. Executores do macOS
  • Os executores do macOS são necessários para as compilações específicas do iOS, macOS, Xcode e Apple
  • Dá suporte a aplicativos Swift, Objective-C e macOS
    Exemplo: macos-latest, macos-13

Práticas recomendadas para selecionar executores

  • Use os executores hospedados no GitHub para fluxos de trabalho gerais e automação.
  • Use executores auto-hospedados para ambientes personalizados, cargas de trabalho grandes ou aplicativos sensíveis à segurança.
  • Escolha executores Linux para a maioria das cargas de trabalho por seu desempenho e custo-benefício.
  • Use os executores do Windows ou macOS somente quando necessário para compatibilidade.
  • Atualize e monitore regularmente os executores auto-hospedados para evitar riscos de segurança.

Contraste os executores hospedados no GitHub e auto-hospedados

O GitHub Actions dá suporte a dois tipos de executores para executar fluxos de trabalho:

  1. Executores hospedados no GitHub – gerenciados pelo GitHub, provisionados automaticamente e pré-configurados com ferramentas de desenvolvimento comuns.
  2. Executores auto-hospedados – gerenciados pelo usuário, permitindo controle total sobre o ambiente, os recursos e as configurações.

Esta seção destaca as principais diferenças entre os executores hospedados no GitHub e auto-hospedados.

Comparação: Hospedado no GitHub vs. Executores auto-hospedados

Característica Runner hospedado no GitHub Executor auto-hospedado
Instalação > manutenção Nenhuma configuração necessária; O GitHub gerencia tudo O usuário deve instalar, configurar e manter
Escalabilidade Dimensionamento automático dinamicamente Deve provisionar manualmente os executores adicionados
Segurança Alta segurança; ambiente virtual fresco para cada trabalho Requer proteção manual de segurança
Personalização Limitado; somente ferramentas pré-instaladas Totalmente personalizável; o usuário pode instalar quaisquer dependências
Desempenho Recursos de computação padronizados Pode usar hardware de alto desempenho
Persistência de estado Redefine após cada trabalho Pode persistir dados entre tarefas
Custo Gratuito para repositórios públicos; uso gratuito limitado para repositórios privados Sem custos do GitHub, mas requer investimento em infraestrutura
Acesso de rede Sem acesso direto a redes internas Pode acessar redes internas/privadas
Caso de uso Melhor para projetos gerais de CI/CD, automação e software livre Melhor para ambientes empresariais, builds seguros e cargas de trabalho grandes

Principais diferenças e considerações

1. Instalação &manutenção
  • Os executores hospedados no GitHub exigem nenhuma configuração; os usuários podem começar a executar fluxos de trabalho imediatamente.
  • Os executores auto-hospedados precisam de instalação manual, configuração, atualizações e gerenciamento de segurança.
2. Riscos de segurança
  • Os executores hospedados no GitHub são executados em máquinas virtuais isoladas que são redefinidas após cada trabalho, minimizando superfícies de ataque.
  • Os executores auto-hospedados persistem entre trabalhos, o que significa que um executor comprometido pode ser explorado em várias execuções de fluxo de trabalho.
3. Considerações sobre desempenho e custo
  • Os executores hospedados no GitHub fornecem um ambiente padrão , mas têm limites de uso (por exemplo, minutos gratuitos por mês para repositórios privados).
  • Os executores auto-hospedados permitem um ajuste de desempenho melhor (por exemplo, em execução em servidores high-end), mas exigem custos de infraestrutura e manutenção.
4. Rede e acesso
  • Os executores hospedados no GitHub não podem acessar recursos privados/internos sem configurações adicionais.
  • Os executores hospedados internamente podem acessar sistemas internos, tornando-os ideais para repositórios privados, ferramentas internas e implantações locais.

Quando usar cada executor?

Use os executores hospedados no GitHub se:

  • Você precisa de uma configuração rápida e fácil sem gerenciamento de infraestrutura.
  • Seu fluxo de trabalho não requer dependências personalizadas além das ferramentas pré-instaladas.
  • Você está trabalhando em um repositório público ou de software livre com minutos gratuitos de executor hospedados.

Use executores auto-hospedados se:

  • Seu fluxo de trabalho requer dependências, configurações ou estados persistentes específicos.
  • Você precisa acessar recursos de rede privada (por exemplo, bancos de dados locais, serviços internos).
  • Você precisa de computadores de maior desempenho para pipelines de CI/CD em larga escala.