View on GitHub

manual-da-engenharia-para-codar

Este é o manual para compromissos de "código com" a engenharia.

Azure DevOps: Gerenciando Configurações de Forma Branch Específica

Ao utilizar o Azure DevOps Pipelines para CI/CD, é conveniente aproveitar as variáveis de pipeline integradas para gerenciamento de segredos, mas o uso de variáveis de pipeline para gerenciamento de segredos tem suas desvantagens:

Uma solução para essas limitações é gerenciar os segredos no repositório Git em conjunto com o código-fonte do projeto. Conforme descrito em gerenciamento de segredos, não inclua segredos no repositório em texto simples. Em vez disso, podemos adicionar uma versão criptografada de nossos segredos ao repositório e permitir que nossos agentes CI/CD e desenvolvedores descriptografem os segredos para uso local com alguma chave pré-compartilhada. Isso nos oferece o melhor dos dois mundos: um armazenamento seguro para segredos, bem como o gerenciamento lado a lado de segredos e código.

# Primeiro, certifique-se de nunca cometer nossos segredos em texto simples e gere uma chave de criptografia forte
echo ".env" >> .gitignore
ENCRYPTION_KEY="$(LC_ALL=C < /dev/urandom tr -dc '_A-Z-a-z-0-9' | head -c128)"

# Agora, vamos adicionar algum segredo ao nosso arquivo .env
echo "MEU_SEGREDO=..." >> .env

# Atualize também nosso arquivo de documentação de segredos
cat >> .env.template <<< "
# Insira a descrição do seu segredo aqui
MEU_SEGREDO=
"

# Em seguida, criptografe os segredos em texto simples; o arquivo resultante .env.enc pode ser comitado com segurança para o repositório
echo "${ENCRYPTION_KEY}" | openssl enc -aes-256-cbc -md sha512 -pass stdin -in .env -out .env.enc
git add .env.enc .env.template
git commit -m "Atualizar segredos"

Ao executar o CI/CD, o servidor de compilação agora pode acessar os segredos descriptografando-os. Por exemplo, para o Azure DevOps, configure ENCRYPTION_KEY como uma variável de pipeline secreta e, em seguida, adicione a seguinte etapa ao arquivo azure-pipelines.yml:

steps:
  - script: echo "$(ENCRYPTION_KEY)" | openssl enc -aes-256-cbc -md sha512 -pass stdin -in .env.enc -out .env -d
    displayName: Descriptografar segredos

Você também pode usar grupos de variáveis vinculados diretamente ao Azure Key Vault para seus pipelines para gerenciar todos os segredos em um local.