Partilhar 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.

    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 um grupo de variáveis que vincula a um cofre de chaves do Azure existente e mapear segredos selecionados do Cofre da Chave para o grupo de variáveis. 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.

Quaisquer alterações feitas em segredos existentes no cofre de chaves ficam automaticamente disponíveis para todos os pipelines que usam o grupo de variáveis. No entanto, se segredos forem adicionados ou excluídos do cofre, os grupos de variáveis associados não serão atualizados automaticamente. Você deve atualizar explicitamente os segredos a serem incluídos no grupo de variáveis.

Embora o Cofre de Chaves ofereça suporte ao armazenamento e gerenciamento de chaves criptográficas e certificados no Azure, a integração de grupos de variáveis do Azure Pipelines dá suporte apenas ao mapeamento de segredos do cofre de chaves. Não há suporte para chaves criptográficas e certificados.

Nota

Não há suporte para cofres de chaves que usam o controle de acesso baseado em função do Azure (Azure RBAC).

Pré-requisitos

  • Um cofre de chaves do Azure que contém seus segredos. Você pode criar um cofre de chaves usando o portal do Azure.
  • Uma conexão de serviço do Azure para seu projeto.

Criar o grupo de variáveis

  1. No seu projeto do Azure DevOps, selecione o grupo Biblioteca de Pipelines>>+ Variável.
  2. Na página Grupos de variáveis , insira um nome e uma descrição opcional para o grupo de variáveis.
  3. Habilite os segredos de link de um cofre de chaves do Azure como variáveis alternadas.
  4. Selecione o ponto de extremidade da assinatura do Azure e o nome do cofre da chave.
  5. Habilite o Azure DevOps para acessar o cofre de chaves selecionando Autorizar ao lado do nome do cofre.
  6. Na tela Escolher segredos, selecione segredos específicos do seu cofre para mapeamento para esse grupo de variáveis e selecione OK.
  7. Selecione Salvar para salvar o grupo de variáveis secretas.

Captura de ecrã do grupo variável com a integração do cofre de chaves do Azure.

Nota

Sua conexão de serviço do Azure deve ter pelo menos as permissões Obter e Listar no cofre de chaves, que você pode autorizar nas etapas anteriores. Você também pode fornecer essas permissões do portal do Azure seguindo estas etapas:

  1. Abra Configurações para o cofre de chaves e escolha Configuração>de acesso Vá para políticas de acesso.
  2. Na página Políticas de acesso, se o seu projeto do Azure Pipelines não estiver listado em Aplicativos com pelo menos as permissões Obter e Listar, selecione Criar.
  3. Em Permissões secretas, selecione Obter e Listar e, em seguida, selecione Avançar.
  4. Selecione a entidade de serviço e, em seguida, selecione Avançar.
  5. Selecione Seguinte novamente, reveja as definições e, em seguida, selecione Criar.

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. 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.

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

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