Partilhar via


Definir variáveis de segredos

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. 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 esse método 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ê criptografa e torna 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ê precisa 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.

    Captura de ecrã do botão Adicionar grupo de variáveis realçado com a caixa vermelha.

  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.

    Captura de tela mostrando como salvar um grupo de variáveis.

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

Você pode criar grupos de variáveis e vinculá-los a um cofre de chaves do Azure existente, permitindo mapear segredos armazenados no cofre de chaves. Apenas os nomes secretos são mapeados para o grupo de variáveis, não os valores secretos. O pipeline executa esse link para o grupo de variáveis e busca os valores secretos mais recentes do cofre. Para obter mais informações, consulte Vincular um grupo de variáveis a segredos no Cofre de Chaves do Azure.

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.

    Adicione a tarefa Azure Key Vault.

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. Esse método é 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ê precisa 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.

Captura de tela da saída da variável bash.

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