Introdução
No laboratório anterior, nosso assistente robô fez login automaticamente em um depósito. Mas de onde ele obteve a senha?
Na automação real, os workflows geralmente precisam de dados sensíveis, como chaves de API, senhas ou tokens. Você nunca deve inserir esses valores diretamente nos arquivos do repositório.
O GitHub oferece os Secrets como um mecanismo de armazenamento protegido para valores sensíveis usados pelos workflows. Essa é uma prática essencial de segurança em CI/CD, pois os pipelines frequentemente precisam de acesso privilegiado.
Essa é uma das fronteiras mais importantes da segurança da automação. Os pipelines precisam de credenciais, mas essas credenciais devem ser injetadas em tempo de execução a partir de um armazenamento protegido, em vez de serem confirmadas no controle de versão.
Neste laboratório, você vai:
- Criar uma senha secreta no cofre.
- Ensinar o robô a recuperá-la.
- Comprovar que, mesmo se o robô tentar exibir a senha, o GitHub vai ocultá-la.
Pré-requisitos
Continuaremos usando o repositório github-actions-basics.
Criar um segredo
Imagine que nossa aplicação precise se conectar a um banco de dados. Precisamos armazenar a senha do banco de dados com segurança.
Vamos criar um segredo chamado DB_PASSWORD.
- Abra o repositório
github-actions-basicsno GitHub. - Clique na aba Settings.
- Na barra lateral esquerda, localize o item de menu Secrets and variables e clique nele para expandi-lo.
- Selecione Actions.
- Clique no botão verde New repository secret.

Você verá um formulário simples:
- Name: Digite
DB_PASSWORD. (É prática padrão usar apenas letras maiúsculas nos nomes dos segredos.) - Secret: Digite
SuperSafePassword123!.
Clique em Add secret.
Agora você deverá ver DB_PASSWORD na lista. Observe que não é mais possível ver o valor. Depois que um segredo é salvo, ele fica protegido permanentemente. Você pode atualizá-lo ou excluí-lo, mas nem você nem qualquer outra pessoa poderá visualizá-lo novamente.
Usar o segredo
Agora que a senha está no cofre, vamos escrever um workflow para usá-la.
O padrão importante aqui é a indireção: o workflow referencia um segredo pelo nome, e o GitHub resolve o valor com segurança durante a execução.
No arquivo do workflow, você pode acessar qualquer segredo usando a sintaxe ${{ secrets.YOUR_SECRET_NAME }}.
Navegue até o diretório do projeto.
cd ~/project
git clone https://github.com/your-username/github-actions-basics.git
cd github-actions-basics
Observação: substitua your-username pelo seu nome de usuário real do GitHub.
Crie um novo arquivo de workflow chamado security-test.yml dentro da pasta .github/workflows.
touch .github/workflows/security-test.yml
Abra o arquivo com o nano.
nano .github/workflows/security-test.yml
Adicione o conteúdo a seguir:
name: Security Test
on: [push]
jobs:
test-secret:
runs-on: ubuntu-latest
steps:
- name: Try to print secret
env:
MY_PASSWORD: ${{ secrets.DB_PASSWORD }}
run: echo "The password is $MY_PASSWORD"
Aqui, estamos fazendo algo interessante. Estamos transferindo o segredo do cofre do GitHub para uma variável de ambiente chamada MY_PASSWORD. Em seguida, tentamos exibi-lo usando echo.
Espere! Exibir uma senha no log não é uma péssima ideia? Sim, é! Mas estamos fazendo isso para demonstrar um recurso de segurança poderoso do GitHub Actions.
Salve o arquivo e saia do nano.
Verificar o mascaramento
Vamos executar este workflow e observar o que acontece quando tentamos revelar um segredo.
Confirme e envie suas alterações.
git add .
git commit -m "Test secret masking"
git push
Acesse Actions no seu repositório do GitHub.
- Clique na execução do workflow "Security Test".
- Clique no job
test-secret. - Expanda a etapa "Try to print secret".
Observe a saída. Você deverá ver algo parecido com isto:
The password is ***

O GitHub Actions reconheceu automaticamente que o valor de $MY_PASSWORD veio de um segredo. Antes de exibir qualquer conteúdo no log, ele procura esse valor sensível e o substitui por ***.
O mascaramento reduz os danos causados pela divulgação acidental em logs, mas ainda é uma prática melhor não exibir segredos. Os recursos de segurança são uma rede de proteção, não uma justificativa para o tratamento descuidado de informações.
Esse recurso de mascaramento protege você. Mesmo que você tente exibir um segredo acidentalmente ou uma ferramenta que esteja usando seja detalhada demais, o GitHub detecta a informação e remove os dados sensíveis dos logs.
Uma observação sobre GITHUB_TOKEN: lembra-se de ${{ secrets.GITHUB_TOKEN }}, que usamos no laboratório anterior? Ele funciona exatamente da mesma maneira. É um segredo que o GitHub cria automaticamente para cada execução, e seu valor também é mascarado nos logs.
Resumo
Neste laboratório, você aprendeu os fundamentos da segurança na automação.
- Cofre: Você usou o GitHub Secrets para armazenar dados sensíveis, como senhas.
- Acesso: Você usou
${{ secrets.NAME }}para dar ao seu robô acesso, por meio de um cartão-chave, a esses dados. - Mascaramento: Você verificou que o GitHub oculta automaticamente os segredos dos logs (
***) para evitar vazamentos acidentais.
Agora você tem um pipeline automatizado e seguro. No laboratório final, abordaremos o objetivo máximo de DevOps: Continuous Deployment. Você aprenderá a fazer seu robô implantar seu código em um servidor ativo!



