O GitHub Actions é a plataforma integrada de integração contínua e entrega contínua (CI/CD) do GitHub que permite às equipes de desenvolvimento automatizar seus fluxos de trabalho com pipeline automatizado, teste e implantação.

Uma desvantagem de usar o GitHub Actions é que seus registros são públicos e qualquer pessoa com as permissões necessárias pode acessá-los.

Para evitar que dados sensíveis sejam expostos nos registros do GitHub Actions, você deve usar variáveis de ambiente criptografadas para armazenar dados sensíveis de forma segura. Essas variáveis de ambiente criptografadas são conhecidas como Segredos do GitHub Actions.

Este artigo mostra como usar os Segredos do GitHub Actions para evitar que informações sensíveis apareçam nos seus registros do GitHub Actions.

Pré-requisitos:

Para você seguir este tutorial:

Como manter seus registros do GitHub Action seguros

Quando você cria fluxos de trabalho usando GitHub Actions, qualquer visitante do seu repositório pode visualizar os registros, portanto, eles não devem incluir informações confidenciais. No entanto, você não pode simplesmente excluir seus tokens, senhas e outras informações confidenciais – você precisa deles para testes e para que seu aplicativo funcione corretamente.

A solução é ocultá-las com o comando de fluxo de trabalho ::add-mask::, que coloca um asterisco (*) no lugar dos dados confidenciais aos quais ele é aplicado.

A seção a seguir mostra a você como ocultar um registro.

Como ocultar os registros

Primeiro, abra o repositório clonado em seu editor de texto.

Crie o diretório .github/workflows/ na raiz do repositório para armazenar os arquivos do fluxo de trabalho. Em seguida, crie um novo arquivo chamado hide-secrets.yml no diretório .github/workflows e adicione o seguinte código a ele:

name: Hide Sensitive Information
on: push
jobs:
  print-secret-token:
    runs-on: ubuntu-latest
    steps:
      - name: echo a secret
        run: echo "your secret token is verySecretToken"

Confirme as alterações e faça push delas no seu repositório do GitHub. O fluxo de trabalho atualizado do GitHub Actions está ativo e será acionado sempre que você fizer push de uma nova alteração.

Abra seu repositório no GitHub e selecione a aba Actions para visualizar os registros. Seu fluxo de trabalho deve aparecer da seguinte forma:

Visualizar seu fluxo de trabalho.
Visualizar seu fluxo de trabalho.

Ao examinar os registros do fluxo de trabalho, você encontrará a string verySecretToken impressa nos registros. Clique no seu fluxo de trabalho e, em seguida, no nome da tarefa (print-secret-token) para visualizar o registro. Ele deve ter a seguinte aparência:

Examine seus registros de ação do GitHub
Examine seus registros de ação do GitHub

Para ocultá-lo, use o comando ::add-mask::, edite o arquivo hide-secrets.yml e adicione uma nova etapa ao print-secret-token job:

name: Hide Sensitive Information
on: push
jobs:
  print-secret-token:
    runs-on: ubuntu-latest
    steps:
      - name: Add Mask
        run: echo "::add-mask::verySecretToken"
      - name: echo a secret  
        run: echo "your secret token is verySecretToken"

Você deve adicionar a etapa Add Mask no topo, já que a ocultação só se aplica depois que o comando ::add-mask:: for executado. Se você colocar o segredo verySecretToken antes da etapa Add Mask, ele ainda aparecerá sem ocultação. Portanto, para garantir que o valor seja ocultado, é essencial usar ::add-mask:: o mais rápido possível.

Depois que você confirmar e publicar suas modificações no repositório do GitHub, a string verySecretToken será substituída por asteriscos (*) sempre que aparecer nos registros:

Ocultando textos simples.
Ocultando textos simples.

Embora isso resolva o problema de ocultar informações, surge uma nova questão. Seu verySecretToken ainda está no arquivo de fluxo de trabalho, então qualquer um com acesso ao código-fonte pode vê-lo.

Outra desvantagem de ocultar texto simples é que ocultar apenas parte de uma palavra ocultará todas as instâncias dela. Por exemplo, considere a seguinte frase: “Programar é ótimo, mas meus dias mais produtivos são aqueles em que não escrevo um programa.” Se você esconder a palavra “programar”, não vai apenas esconder a palavra no final da frase, mas também em qualquer outro lugar onde ela apareça, como em “programar”.

Se você tentar ocultar o texto simples, acabará com algo assim:

Problema em ocultar um texto simples.
Problema em ocultar um texto simples.

Uma forma mais segura de ocultar informações sensíveis nos registros do GitHub Actions é utilizando os Segredos do GitHub Actions, como mostrado na próxima seção.

Como usar os segredos do GitHub Actions

Você pode usar os segredos do GitHub Actions para armazenar quaisquer dados privados que você deseja usar em seu fluxo de trabalho de ações do GitHub. Os segredos são criados como pares de chave/valor no nível do repositório ou da organização.

Embora esse repositório só tenha acesso aos segredos criados especificamente para ele, os segredos feitos no nível da organização são compartilhados com todos os repositórios dessa organização.

Segredos criados no nível do repositório estão disponíveis para uso em ações por qualquer pessoa que tenha permissões de colaborador. Você pode alterar o valor dos seus segredos a qualquer momento. No entanto, segredos não podem ser usados com fluxos de trabalho de um repositório copiado (forked).

As diretrizes a seguir se aplicam à nomeação de segredos:

  • Os nomes dos segredos não podem conter espaços.
  • Os nomes de segredos não diferenciam maiúsculas de minúsculas.
  • Os nomes de segredos não podem começar com um número.
  • Os nomes de segredos não podem começar com o prefixo GITHUB_.
  • Os nomes dos segredos devem ser exclusivos – segredos com o mesmo nome não podem existir no mesmo nível.

Você pode usar esses segredos no fluxo de trabalho de ações do GitHub simplesmente adicionando secrets antes do nome do segredo como uma variável YML, conforme mostrado abaixo:

${{ secrets.MY_SECRET_TOKEN }}

Você também pode ocultar segredos para obter mais segurança, conforme mostrado na seção a seguir.

Como ocultar segredos

Primeiro, crie um segredo do GitHub. No seu repositório no GitHub, clique em Settings tab, selecione Secrets > Actions na barra lateral esquerda e clique em New repository secret para adicionar um novo segredo:

Criar um novo segredo de repositório.
Criar um novo segredo de repositório.

Dê um nome e um valor ao seu segredo, e então clique em Add secret:

Adicionar um novo segredo do GitHub
Adicionar um novo segredo do GitHub

Agora que você criou o seu segredo e deu a ele o valor verySecretToken, você pode usá-lo no seu arquivo de fluxo de trabalho. Abra o arquivo hide-secrets.yml e faça as seguintes alterações:

name: Hide Sensitive Information
on: push
jobs:
  print-secret-token:
    runs-on: ubuntu-latest
    steps:
      - name: Add Mask
        run: echo "::add-mask::${{ secrets.MY_SECRET_TOKEN }}"
      - name: Echo a secret  
        run: echo "your secret token is ${{ secrets.MY_SECRET_TOKEN }}"

A única diferença entre este e o código anterior é que você substituiu o token secreto pelo seu recém-criado segredo do GitHub “${{ secrets.MY_SECRET_TOKEN }}.”

Depois que você fizer o commit do código e enviar as alterações para o repositório do GitHub, seus segredos serão ocultados:

Segredos ocultados do GitHub Actions
Segredos ocultados do GitHub Actions

Resumo

Não deixe informações sensíveis à mostra nos registros do GitHub Actions. Esconder esses dados usando texto simples é uma opção, mas quem acessar seus arquivos de fluxo de trabalho conseguirá ver tudo que você queria esconder.

Como esse tutorial mostra, usar Segredos do GitHub Actions é uma maneira bem mais segura de guardar essas informações e ainda ocultá-las.

Leia nossa documentação para saber mais sobre como usar o Git na Kinsta. Experimente nossa hospedagem de aplicativos gratuitamente agora.

Jeremy Holcombe Kinsta

Editor de Conteúdo & Marketing na Kinsta, Desenvolvedor Web WordPress e Escritor de Conteúdo. Fora do universo WordPress, eu curto praia, golfe e filmes. Também enfrento problemas de gente alta ;).