Sobre este guia
Este guia descreve mudanças de maior impacto que você pode fazer para melhorar a segurança de seus sistemas de construção. Cada seção descreve uma alteração que você pode fazer em seus processos para melhorar a segurança. As mudanças de maior impacto estão listadas primeiro.
Qual o risco?
Alguns ataques a cadeias de suprimentos de software visam diretamente o sistema de construção. Se um invasor pode modificar o processo de construção, ele pode explorar seu sistema sem o esforço de comprometer contas pessoais ou código. É importante garantir que você não se esqueça de proteger o sistema de compilação, bem como contas pessoais e código.
Proteja seu sistema de compilação
Existem vários recursos de segurança que um sistema de construção deve ter:
-
Os passos de compilação devem ser claros e repetitivos.
-
Você deve saber exatamente o que foi executado durante o processo de compilação.
-
Cada compilação deve começar em um ambiente fresco, então uma construção comprometida não persiste para afetar futuras compilações.
GitHub Actions pode ajudar você a atender a esses recursos. As instruções de compilação são armazenadas no seu repositório, junto com seu código. Você escolhe o ambiente em que sua compilação é executada, incluindo Windows, Mac, Linux ou executores que você mesmo hospeda. Cada build começa com uma nova imagem do executor, o que torna difícil para um ataque persistir no seu ambiente de build.
Além dos benefícios de segurança, GitHub Actions permite que você acione compilações manualmente, periodicamente ou em eventos do git no seu repositório para compilações frequentes e rápidas.
GitHub Actions é um tópico extenso, mas um bom lugar para começar é " Entendendo o GitHub Actions", bem como "Sintaxe de fluxo de trabalho para o GitHub Actions" e "Acionando um fluxo de trabalho".
Assine suas compilações
Depois que o processo de compilação estiver seguro, você deverá evitar que alguém altere o resultado final do processo de compilação. Uma ótima maneira de fazer isso é assinar suas compilações. Ao distribuir software publicamente, isso é frequentemente feito com um par de chaves de criptografia pública/privada. Você usa a chave privada para assinar a compilação e você publica sua chave pública para que os usuários do seu software possam verificar a assinatura na compilação antes de usá-lo. Se os bytes da compilação forem modificados, a assinatura não será verificada.
A forma como exatamente você assina a sua compilação dependerá do tipo de código que você está escrevendo e dos seus usuários. Muitas vezes, é difícil saber como armazenar com segurança a chave privada. Uma opção básica aqui é usar segredos criptografados de GitHub Actions, embora você precise ter cuidado para limitar quem tem acesso a esses fluxos de trabalho de GitHub Actions. Se a sua chave privada puder ser acessada apenas a partir de uma rede privada, outra opção é usar executores auto-hospedados para GitHub Actions.
Para obter mais informações, confira "Usar segredos em ações do GitHub" e "Sobre executores auto-hospedados".
Segurança reforçada para GitHub Actions
Há muitas outras etapas que você pode seguir para garantir adicionalmente a segurança GitHub Actions. Em particular, tenha cuidado ao avaliar fluxos de trabalho de terceiros, e considere usar CODEOWNERS
para limitar quem pode fazer alterações nos seus fluxos de trabalho.
Para obter mais informações, confira "Fortalecimento de segurança para o GitHub Actions" e "Usar os recursos de segurança do GitHub para proteger seu uso do GitHub Actions."