Partilhar via


Protegendo segredos no Azure Pipelines

Este artigo fornece práticas recomendadas sobre a proteção de segredos no Azure Pipelines. Um segredo é qualquer coisa que você queira controlar rigorosamente o acesso, como chaves de API, senhas, certificados ou chaves criptográficas.

Os Pipelines do Azure não geram valores secretos. No entanto, talvez seja necessário adicionar um segredo a um pipeline para armazenar dados confidenciais, como uma chave de API. Para saber mais sobre como definir variáveis secretas, veja Definir variáveis secretas.

Não use segredos se outro método estiver disponível

O melhor método para proteger um segredo é não ter um segredo em primeiro lugar. Verifique se o pipeline pode usar um método diferente do uso de um segredo para executar uma tarefa.

Usar variáveis secretas

Os valores confidenciais nunca devem ser armazenados como texto sem formatação em um arquivo de .yml do Azure Pipelines.

As variáveis secretas podem ser usadas para informações privadas, como senhas, IDs e outros dados de identificação que você não gostaria de expor em um pipeline. A maneira recomendada de definir variáveis secretas é com o Azure Key Vault. Você também pode definir variáveis secretas na interface do usuário ou em um grupo de variáveis. O uso de um comando de log para definir uma variável secreta não é recomendado. Quando você define um segredo com um comando de registro, qualquer pessoa que possa acessar seu pipeline também poderá ver o segredo.

As variáveis secretas são criptografadas e podem ser usadas em pipelines sem expor seus valores. Embora seus valores não sejam expostos, nunca ecoe segredos como saída e não passe segredos na linha de comando. Em vez disso, sugerimos que você mapeie seus segredos em variáveis de ambiente.

Ao criar um segredo, siga as diretrizes de nomenclatura variável e certifique-se de que seu nome secreto não divulgue informações confidenciais.

Limitar o acesso a variáveis secretas

Para limitar o acesso a segredos no Azure DevOps, você pode:

  • Armazene seus segredos no Cofre da Chave do Azure. Com o Azure Key Vault, você pode usar o modelo de controle de acesso baseado em função do Azure para limitar o acesso a um segredo ou grupo de segredos.
  • Defina variáveis secretas na interface do usuário para um pipeline. As variáveis secretas definidas na interface do usuário de configurações de pipeline para um pipeline têm como escopo o pipeline onde são definidas. Assim, você pode ter segredos que só são visíveis para os usuários com acesso a esse pipeline.
  • Defina segredos em um grupo de variáveis. Os grupos de variáveis seguem o modelo de segurança da biblioteca. Você pode controlar quem pode definir novos itens em uma biblioteca e quem pode usar um item existente.

Não escreva segredos em logs

O Azure Pipelines tenta limpar segredos de logs sempre que possível. Essa filtragem é baseada no melhor esforço e não pode capturar todas as maneiras pelas quais os segredos podem ser vazados. Evite ecoar segredos para o console, usá-los em parâmetros de linha de comando ou registrá-los em arquivos. Por exemplo, alguns comandos da CLI do Azure emitem informações de saída que você deve proteger. Se você chamar a CLI do Azure do seu pipeline, use o formato de saída Nenhum e, se precisar recuperar um segredo de uma chamada da CLI do Azure, use nenhum formato de saída e recupere informações de segurança para uma variável secreta.

Não use dados estruturados como segredos

Os dados estruturados podem fazer com que a redação secreta nos logs falhe, porque a redação depende em grande parte da localização de uma correspondência exata para o valor secreto específico. Por exemplo, não use um blob de JSON, XML ou YAML (ou similar) para encapsular um valor secreto, incluindo caracteres de controle como retorno de carro (\r) e alimentação de linha (\n), pois isso reduz significativamente a probabilidade de os segredos serem redigidos corretamente. Em vez disso, crie segredos individuais para cada valor sensível.

Auditar como os segredos são tratados

Audite como os segredos são usados, para ajudar a garantir que eles estão sendo tratados conforme o esperado. Você pode fazer isso revisando o código-fonte do repositório que hospeda o pipeline e verificando todas as tarefas usadas no pipeline. Por exemplo, verifique se eles não são enviados para hosts não intencionais ou se estão sendo impressos explicitamente na saída de log.

Exiba os logs de execução do pipeline depois de testar entradas válidas/inválidas e verifique se os segredos foram redigidos corretamente ou não foram mostrados. Nem sempre é óbvio como um comando ou ferramenta que você está invocando emitirá erros, e segredos podem acabar mais tarde em logs de erros. O Azure Pipelines tenta limpar segredos de logs sempre que possível. Essa filtragem é baseada no melhor esforço e não pode capturar todas as maneiras pelas quais os segredos podem ser vazados. Como resultado, é uma boa prática revisar manualmente os logs de pipeline depois de testar entradas válidas e inválidas.

Auditar e girar segredos

Revise periodicamente os segredos registrados usados por seus pipelines para confirmar que eles ainda são necessários e remova aqueles que não são mais necessários.

Rode periodicamente os segredos para reduzir a janela de tempo durante a qual um segredo comprometido é válido.

Os tipos de segredos usados pelos pipelines podem incluir:

Próximos passos