Share via


Definir variáveis de segredos

Serviços de DevOps do Azure | 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. 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. 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 Cofre de Chaves do Azure. Você também pode definir variáveis secretas em um script com um comando de log, mas isso não é recomendado, pois qualquer pessoa que possa acessar seu pipeline também pode ver o segredo.

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 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 quando estiver editando um pipeline individual. Você criptografará e tornará secreta uma variável de pipeline selecionando o ícone de cadeado.

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

Para definir segredos na interface Web, siga estes passos:

  1. Vá para a página Pipelines , selecione o pipeline apropriado e, em seguida, selecione Editar.
  2. Localize as variáveis para este pipeline.
  3. Adicione ou atualize a variável.
  4. Selecione a opção Manter esse valor secreto para armazenar a variável de forma criptografada.
  5. Salve o pipeline.

As variáveis secretas são encriptadas em repouso com uma chave RSA de 2048 bits. Os segredos estão disponíveis no agente para tarefas e scripts a serem usados. Tenha cuidado com quem tem acesso para alterar seu pipeline.

Importante

Fazemos um esforço para impedir que segredos apareçam na saída do Azure Pipelines, mas você ainda precisa tomar precauções. Nunca ecoe segredos como saída. Alguns sistemas operacionais registram argumentos de linha de comando. Nunca passe segredos na linha de comando. Em vez disso, sugerimos que você mapeie seus segredos em variáveis de ambiente.

Nunca mascaramos subcadeias de segredos. Se, por exemplo, "abc123" for definido como um segredo, "abc" não será mascarado dos logs. Isso é para evitar mascarar segredos em um nível muito granular, tornando os logs ilegíveis. Por esta razão, os segredos não devem conter dados estruturados. Se, por exemplo, "{ "foo": "bar" }" for definido como um segredo, "bar" não será mascarado dos logs.

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

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

Você precisará mapear variáveis secretas como variáveis de ambiente para fazer referência a elas em pipelines YAML. Neste exemplo, há duas variáveis secretas definidas na interface do usuário SecretOne e SecretTwo. O valor de SecretOne is foo e o valor de SecretTwo is 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.

Nota

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 e dados mascarados na saída e logs que não estão definidos como segredos.

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

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

Você pode adicionar segredos a um grupo variável ou vincular segredos de um Cofre de Chaves do Azure existente.

Criar novos grupos de variáveis

  1. Selecione Biblioteca de Pipelines>>+ 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 a alternância para vincular segredos de um cofre de chaves do Azure como variáveis. Para obter mais informações, consulte Usar segredos do Cofre da Chave do Azure.

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

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

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

    Screenshot of saving a variable group.

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

Vincule um cofre de chaves do Azure existente a um grupo de variáveis e mapeie segredos de cofre seletivo para o grupo de variáveis.

  1. Na página Grupos de variáveis, habilite Segredos de link de um cofre de chaves do Azure como variáveis. Você precisará de um cofre de chaves existente contendo seus segredos. Crie um cofre de chaves usando o portal do Azure.

    Screenshot of variable group with Azure key vault integration.

  2. Especifique seu ponto final de 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 permissões de gerenciamento Obter e Listar no cofre para segredos. Habilite o Azure Pipelines para definir essas permissões escolhendo Autorizar ao lado do nome do cofre. Ou defina as permissões manualmente no portal do Azure:

    1. Abra Configurações do cofre e escolha Políticas de acesso>Adicionar novo.
    2. Selecione Selecionar entidade de segurança e, em seguida, escolha a entidade de serviço para a sua conta de cliente.
    3. Selecione Permissões secretas e verifique se Obtere Listar têm marcas de seleção.
    4. Selecione OK para salvar as alterações.
  3. Na página Grupos de variáveis, selecione + Adicionar para selecionar segredos específicos do seu cofre para mapeamento para esse grupo de variáveis.

Gerenciar segredos do cofre de chaves

Veja a seguinte lista de dicas úteis para gerenciar segredos.

  • Apenas os nomes secretos são mapeados para o grupo de variáveis, não os valores secretos. O valor secreto mais recente, obtido no cofre, é usado na execução de pipeline vinculada ao grupo de variáveis.

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

  • Quando novos 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 devem ser explicitamente atualizados 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 gerenciamento de chaves criptográficas e segredos no Azure. Atualmente, a integração de grupos variáveis do Azure Pipelines dá suporte ao mapeamento apenas de segredos do cofre de chaves do Azure. Não há suporte para chaves criptográficas e certificados.

Usar a tarefa Cofre da Chave do Azure

Você pode usar a tarefa Cofre da Chave do Azure para incluir segredos em seu pipeline. Essa tarefa permite que o pipeline se conecte ao seu Cofre de Chaves do Azure e recupere segredos para usar como variáveis de pipeline.

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

  2. Procure vault e selecione a tarefa Azure Key Vault.

    Add the Azure Key Vault task.

A opção Tornar segredos disponíveis para trabalho inteiro não é suportada atualmente no Azure DevOps Server 2019 e 2020.

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

Definir uma variável de segredo num script com comandos de registo

Você pode usar o task.setvariable comando logging para definir variáveis em scripts PowerShell e Bash. Esta é 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 Cofre de Chaves do Azure.

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

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

Nota

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 e dados mascarados na saída e logs que não estão definidos como segredos.

Defina a variável mySecretValsecreta .

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

Obtenha a variável mySecretValsecreta .

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

Saída variável secreta em bash.

Screenshot of bash variable output.

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