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 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 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ê criptografa e torna uma variável de pipeline secreta selecionando o ícone de cadeado.
Você define variáveis secretas da mesma maneira para YAML e Clássico.
Para definir segredos na interface da Web, siga estas etapas:
- Acesse a página Pipelines, selecione o pipeline apropriado e escolha Editar.
- Localize as Variáveis desse pipeline.
- Adicione ou atualize a variável.
- Selecione a opção Manter esse valor em segredo para armazenar a variável de maneira criptografada.
- 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ê precisa mapear variáveis secretas como variáveis de ambiente para referenciá-las em pipelines 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
SelecionePipelines>Biblioteca>+ Grupo de variáveis.
Insira um nome e uma descrição para o grupo.
Opcional: mova o botão de alternância para vincular segredos de um Azure Key Vault como variáveis. Para obter mais informações, consulte Usar segredos do Azure Key Vault.
Insira o nome e o valor de cada variável a ser incluída no grupo, escolhendo + Adicionar para cada uma delas.
Para tornar sua variável segura, escolha o ícone "bloquear" no final da linha.
Quando terminar de adicionar variáveis, selecione Salvar.
Grupos de variáveis seguem o modelo de segurança da biblioteca.
Vincular segredos de um cofre de chaves do Azure
Você pode criar grupos de variáveis e vinculá-los a um cofre de chaves do Azure existente, permitindo mapear para segredos armazenados no cofre de chaves. Somente os nomes de segredo são mapeados para o grupo de variáveis, não os valores de segredo. As execuções de pipeline vinculadas ao grupo de variáveis buscam os valores secretos mais recentes do cofre. Para obter mais informações, consulte Vincular um grupo de variáveis a segredos no Azure Key Vault.
Usar a tarefa do Azure Key Vault
Você pode usar a tarefa do 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.
No editor de pipeline, selecione Mostrar assistente para expandir o painel do assistente.
Pesquise
vault
e selecione a tarefa do Azure Key Vault.
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 do Azure Key Vault, consulte 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 task.setvariable
comando logging para definir variáveis nos scripts do PowerShell e do 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 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.
Saiba mais sobre como definir e usar variáveis em scripts.