Definir variáveis secretas

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Variáveis secretas são variáveis criptografadas que você pode usar em pipelines sem expor seu valor. Variáveis de segredo 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. As variáveis secretas são criptografadas em repouso com uma chave RSA de 2048 bits e estão disponíveis no agente para tarefas e scripts a serem usados.

As maneiras recomendadas de definir variáveis secretas estão na interface do usuário, em um grupo de variáveis e em um grupo de variáveis do Azure Key Vault. Você também pode definir variáveis secretas em um script com um comando de registro em log, mas isso não é recomendado, pois qualquer pessoa que acessar seu pipeline também poderá ver o segredo.

As variáveis secretas definidas na interface do usuário das configurações de pipeline têm como escopo o pipeline em que estão definidas. Você pode usar grupos de variáveis para compartilhar variáveis secretas entre pipelines.

Variável secreta na interface do usuário

Você pode definir variáveis secretas no editor de pipeline ao editar um pipeline individual. Você criptografará e tornará um segredo de variável de pipeline selecionando o ícone de bloqueio.

Você define variáveis secretas da mesma maneira para YAML e Clássico.

Para definir segredos na interface da Web, siga estas etapas:

  1. Acesse a página Pipelines, selecione o pipeline apropriado e escolha Editar.
  2. Localize as Variáveis desse pipeline.
  3. Adicione ou atualize a variável.
  4. Selecione a opção Manter esse valor em segredo para armazenar a variável de maneira criptografada.
  5. Salve o pipeline.

As variáveis secretas são criptografadas em estado inativo com uma chave RSA de 2.048 bits. Os segredos estão disponíveis no agente para uso por tarefas e scripts. Seja cauteloso com quem tem acesso para alterar o pipeline.

Importante

Fazemos um esforço para mascarar a exibição de segredos na saída do Azure Pipelines, mas ainda é preciso tomar precauções. Nunca ecoe segredos como saída. Alguns sistemas operacionais registram argumentos de linha de comando. Nunca transmita segredos na linha de comando. Em vez disso, a recomendação é mapear os segredos para variáveis de ambiente.

Nunca mascare as subcadeias de caracteres de segredos. Por exemplo, se "abc123" for definido como um segredo, "abc" não será mascarado nos logs. Isso evita mascarar segredos em um nível muito granular, o que torna os logs ilegíveis. Por esse motivo, os segredos não devem conter dados estruturados. Por exemplo, se "{ "foo": "bar" }" for definido como um segredo, "bar" não será mascarado nos logs.

Ao contrário de uma variável normal, elas não são descriptografadas automaticamente em variáveis de ambiente para scripts. Você precisa mapear explicitamente as variáveis secretas.

Usar uma variável secreta na interface do usuário

Você precisará mapear a variável secreta como variáveis de ambiente para referenciá-las em pipelines do YAML. Neste exemplo, há duas variáveis secretas definidas na interface do usuário SecretOne e SecretTwo. O valor de SecretOne é foo e o valor de SecretTwo é bar.

steps:
- powershell: |
      Write-Host "My first secret variable is $env:FOO_ONE"
      $env:FOO_ONE -eq "foo"
  env:
    FOO_ONE: $(SecretOne)
- bash: |
    echo "My second secret variable: $FOO_TWO"
    if [ "$FOO_TWO" = "bar" ]; then
        echo "Strings are equal."
    else
        echo "Strings are not equal."
    fi
  env:
    FOO_TWO: $(SecretTwo) 

As saídas do pipeline:

My first secret variable is ***
True
My second secret variable: ***
Strings are equal.

Observação

O Azure Pipelines faz um esforço para mascarar segredos ao emitir dados para logs de pipeline, para que você possa ver variáveis adicionais, dados mascarados na saída e logs que não são definidos como segredos.

Para obter um exemplo mais detalhado, confira Definir variáveis.

Definir uma variável secreta em um grupo de variáveis

Você pode adicionar segredos a um grupo de variáveis ou vincular segredos de um Azure Key Vault.

Criar grupos de variáveis

  1. SelecionePipelines>Biblioteca>+ Grupo de variáveis.

    Screenshot of Add variable group button highlighted with red box.

  2. Insira um nome e uma descrição para o grupo.

  3. Opcional: mova o botão de alternância para vincular segredos de um Azure Key Vault como variáveis. Para obter mais informações, confira Usar segredos do Azure Key Vault.

  4. Insira o nome e o valor de cada variável a ser incluída no grupo, escolhendo + Adicionar para cada uma delas.

  5. Para tornar sua variável segura, escolha o ícone "bloquear" no final da linha.

  6. Quando terminar de adicionar variáveis, selecione Salvar.

    Screenshot of saving a variable group.

Grupos de variáveis seguem o modelo de segurança da biblioteca.

Vincule um Azure Key Vault a um grupo de variáveis e mapeie segredos seletivos do cofre para o grupo de variáveis.

  1. Na página Grupos de variáveis, habilite Vincular segredos de um Azure Key Vault como variáveis. Você precisará de um cofre de chaves existente que contenha seus segredos. Crie um key vault usando o portal do Azure.

    Screenshot of variable group with Azure key vault integration.

  2. Especifique o ponto de extremidade da assinatura do Azure e o nome do cofre que contém seus segredos.

    Verifique se a conexão de serviço do Azure tem pelo menos as permissões de gerenciamento Obter e Listar no cofre para obter segredos. Habilite o Azure Pipelines para definir essas permissões escolhendo Autorizar ao lado do nome do cofre. Ou então, defina as permissões manualmente no portal do Azure:

    1. Abra Configurações para o cofre e escolha Políticas de acesso>Adicionar.
    2. Selecione Selecionar entidade e escolha a entidade de serviço para sua conta cliente.
    3. Selecione Permissões de segredo e verifique se Obter e Listar estão marcadas.
    4. Selecione Ok para salvar as alterações.
  3. Na página Grupos de variáveis, selecione + Adicionar para selecionar segredos específicos do cofre para mapeamento para esse grupo de variáveis.

Gerenciar segredos do Key Vault

Confira a lista a seguir de dicas úteis para gerenciar segredos.

  • Somente os nomes de segredo são mapeados para o grupo de variáveis, não os valores de segredo. O valor do segredo mais recente, buscado do cofre, é usado na execução de pipeline vinculada ao grupo de variáveis.

  • Qualquer alteração feita em segredos existentes no cofre de chaves está automaticamente disponível para todos os pipelines em que o grupo de variáveis é usado.

  • Quando segredos são adicionados ou excluídos do cofre, os grupos de variáveis associados não são atualizados automaticamente. Os segredos incluídos no grupo de variáveis precisam ser atualizados explicitamente para que os pipelines que estão usando o grupo de variáveis sejam executados corretamente.

  • O Azure Key Vault dá suporte ao armazenamento e ao gerenciamento de chaves criptográficas e segredos no Azure. Atualmente, a integração de grupo de variáveis do Azure Pipelines dá suporte ao mapeamento apenas de segredos do Azure Key Vault. Não há suporte para chaves criptográficas e certificados.

Usar a tarefa Azure Key Vault

Você pode usar a tarefa Azure Key Vault para incluir segredos em seu pipeline. Essa tarefa permite que o pipeline se conecte ao Azure Key Vault e recupere os segredos a serem usados como variáveis de pipeline.

  1. No editor de pipeline, selecione Mostrar assistente para expandir o painel do assistente.

  2. Pesquise vault e selecione a tarefa do Azure Key Vault.

    Add the Azure Key Vault task.

Atualmente, não há suporte para a opção Disponibilizar segredos para todo o trabalho no Azure DevOps Server 2019 e 2020.

Para saber mais sobre a tarefa Azure Key Vault, confira Usar segredos do Azure Key Vault no Azure Pipelines.

Definir variável secreta em um script com comandos de registro em log

Você pode usar o comando de registro em log task.setvariable para definir variáveis nos scripts do PowerShell e do Bash. Essa é a maneira menos segura de trabalhar com variáveis secretas, mas pode ser útil para depuração. As maneiras recomendadas de definir variáveis secretas estão na interface do usuário, em um grupo de variáveis e em um grupo de variáveis do Azure Key Vault.

Para definir uma variável como um script com um comando de registro em log, você precisa passar o sinalizador issecret.

Quando issecret for definido como true, o valor da variável será salvo como segredo e mascarado dos logs.

Observação

O Azure Pipelines faz um esforço para mascarar segredos ao emitir dados para logs de pipeline, para que você possa ver variáveis adicionais, dados mascarados na saída e logs que não são definidos como segredos.

Defina a variável secreta mySecretVal.

- bash: |
    echo "##vso[task.setvariable variable=mySecretVal;issecret=true]secretvalue"

Obtenha a variável secreta mySecretVal.

- bash: |
    echo "##vso[task.setvariable variable=mySecretVal;issecret=true]secretvalue"
- bash: |
    echo $(mySecretVal)

Saída de variável secreta no bash.

Screenshot of bash variable output.

Saiba mais sobre como definir e usar variáveis em scripts.