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 logging, 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:
- 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ê 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
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 um grupo de variáveis que seja vinculado a um Azure Key Vault e mapeie os segredos do Key Vault selecionado para o grupo de variáveis. 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.
Todas as 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 os segredos forem adicionados ou excluídos do cofre, os grupos de variáveis associados não são atualizados automaticamente. Você deve atualizar explicitamente os segredos a serem incluídos no grupo de variáveis.
Embora o Key Vault dê suporte ao armazenamento e ao gerenciamento de chaves criptográficas e de certificados no Azure, a integração de grupo de variáveis do Azure Pipelines só dá suporte ao mapeamento de segredos de cofre de chaves. Não há suporte para chaves criptográficas e certificados.
Observação
Os cofres de chaves que usam o RBAC do Azure (controle de acesso baseado em função) não têm suporte.
Pré-requisitos
- Um Azure Key Vault que contém seus segredos. Você também 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
- No projeto do Azure DevOps, selecione Pipelines>Biblioteca>+ Grupo de variáveis.
- Na página Grupos de variáveis, insira um nome e uma descrição opcional para o grupo de variáveis.
- Habilite a alternância Vincular segredos de um Azure Key Vault como variáveis.
- Selecione o ponto de extremidade da assinatura do Azure e o nome do cofre de chaves.
- Habilite o Azure DevOps para acessar o cofre de chaves selecionando Autorizar ao lado do nome do cofre.
- Na tela Escolher segredos, selecione segredos específicos do cofre para mapeamento para esse grupo de variáveis e selecione OK.
- Selecione Salvar para salvar o grupo de variáveis secretas.
Observação
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:
- Abra as Configurações do cofre de chaves e escolha Configuração de acesso>Ir para políticas de acesso.
- 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.
- Em Permissões secretas, selecione Obter e Listar e, em seguida, selecione Avançar.
- Selecione sua entidade de serviço e, em seguida, selecione Avançar.
- Selecione Avançar novamente, revise as configurações e, em seguida, selecione Criar.
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. 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 logging, 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.