Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Serviços de DevOps do Azure | Azure DevOps Server | Azure DevOps Server 2022
Este artigo fornece práticas recomendadas para proteger segredos no Azure Pipelines. Um segredo é qualquer coisa que você queira controlar rigorosamente o acesso, como chaves de API, senhas, certificados ou chaves criptográficas. O Azure Pipelines não gera valores secretos, mas talvez seja necessário adicionar segredos aos pipelines para armazenar dados confidenciais, como chaves de API.
Este artigo faz parte de uma série que ajuda você a implementar medidas de segurança para o Azure Pipelines. Para obter mais informações, consulte Secure Azure Pipelines.
Pré-requisitos
| Categoria | Requerimentos |
|---|---|
| Azure DevOps | - Implemente recomendações em Tornar seu Azure DevOps seguro e Secure Azure Pipelines. - Conhecimentos básicos de YAML e Azure Pipelines. Para obter mais informações, consulte Criar seu primeiro pipeline. |
| Permissões | - Para modificar permissões de pipelines: Membro do grupo Administradores de Projeto. - Para modificar as permissões da organização: Membro do grupo Administradores da Coleção de Projetos. |
Use outro método
Os segredos apresentam riscos de segurança inerentes, por isso é melhor não usá-los. Em vez de gerenciar segredos em variáveis ou expô-los na configuração do pipeline, veja se o pipeline pode usar um desses outros métodos para executar uma tarefa.
- Configure conexões de serviço para se conectar com segurança ao Azure ou a outros serviços, como o GitHub ou o Docker. Para obter mais informações, consulte Conectar-se ao Azure com uma conexão de serviço do Azure Resource Manager.
- Use identidades gerenciadas para permitir que seus aplicativos e serviços sejam autenticados com os serviços do Azure sem usar credenciais explícitas.
- Use a tarefa CLI do Azure com a opção
addSpnToEnvironmentno seu pipeline para aceder aos detalhes da entidade de serviço sem passar segredos explicitamente.
Para obter mais informações, consulte Usar entidades de serviço e identidades gerenciadas.
Usar variáveis secretas
Nunca armazene valores confidenciais como texto sem formatação em um arquivo azure-pipelines.yml . Você pode usar variáveis secretas para informações privadas, como senhas, IDs e outros dados de identificação que não deseja expor. As variáveis secretas são criptografadas, para que você possa usá-las em pipelines sem expor seus valores.
- É melhor gerenciar com segurança variáveis secretas no Cofre de Chaves do Azure. Você também pode definir variáveis secretas na interface do usuário de definição de pipeline ou em um grupo de variáveis.
- Não use um comando de log para definir uma variável secreta, porque qualquer pessoa que possa acessar seu pipeline também pode ver o segredo.
- Nunca ecoe segredos como saída e não passe segredos na linha de comando. Em vez disso, é melhor mapear seus segredos em variáveis de ambiente.
- Ao criar um segredo, siga as diretrizes de nomenclatura variável e certifique-se de que seu nome secreto não divulgue informações confidenciais.
Para saber mais sobre como definir segredos em variáveis, consulte Definir variáveis secretas.
Limitar o acesso a variáveis secretas
Para limitar o acesso a segredos no Azure DevOps, siga uma destas práticas:
- Armazene seus segredos no Cofre da Chave do Azure. Usando o Cofre da Chave do Azure, você pode usar o controle de acesso baseado em função do Azure para limitar o acesso a um segredo ou grupo de segredos.
- Defina variáveis secretas na interface do usuário do pipeline. Essas variáveis têm escopo para o pipeline onde estão definidas, portanto, são visíveis apenas para os usuários desse pipeline.
- Defina segredos em grupos de variáveis. Os grupos de variáveis seguem o modelo de segurança da biblioteca , para que você possa controlar quem pode acessar ou criar itens.
Não escreva segredos em logs
O Azure Pipelines tenta remover informações confidenciais dos registos sempre que possível, mas não é infalível. Evite ecoar segredos para o console, usá-los em parâmetros de linha de comando ou registrá-los em arquivos.
Tenha cuidado ao usar comandos da CLI do Azure que geram informações confidenciais. Use o formato de saída Nenhum e, se precisar recuperar um segredo de uma chamada da CLI do Azure, recupere informações de segurança de uma variável secreta.
Não use dados estruturados como segredos
Evite utilizar formatos de dados estruturados como JSON, XML ou YAML para encapsular valores secretos, incluindo caracteres de controle, como retorno de carro \r e avanço de linha \n. Em vez disso, crie segredos individuais para cada valor sensível. Essa abordagem garante uma melhor precisão de redação e minimiza o risco de exposição inadvertida de dados confidenciais.
Utilização de segredos de auditoria
Para auditar de que forma os seus pipelines utilizam segredos, siga estas melhores práticas:
Examine o código-fonte do repositório que hospeda o pipeline. Para garantir que os segredos sejam tratados corretamente, verifique todas as tarefas usadas pelo pipeline. Verifique se os segredos não são enviados inadvertidamente para hosts não intencionais ou expressamente impressos na saída de log.
Depois de testar entradas válidas e inválidas, exiba os logs de execução do seu pipeline. Certifique-se de que os segredos são devidamente editados e não expostos. Às vezes, erros em comandos ou ferramentas podem inadvertidamente vazar segredos em logs de erros. Embora o Azure Pipelines tente limpar segredos de logs, a revisão manual ainda é essencial.
Auditar e girar segredos
Para auditar e alternar segredos, siga estas práticas recomendadas:
- Reveja periodicamente os segredos registados nos seus pipelines. Confirme se eles ainda são necessários e remova os que não são mais necessários. Esta prática ajuda a reduzir a desordem e os potenciais riscos de segurança.
- Garanta a configuração adequada e o tratamento seguro dos segredos de conexão de serviço.
- Mantenha a duração do token de acesso pessoal (PAT) curta e escolha as permissões mínimas necessárias.
- Gire regularmente os segredos para minimizar a quantidade de tempo que um segredo comprometido possa ser explorado. Alterar segredos periodicamente aumenta a segurança.
Usar modelos YAML
Em vez de incluir scripts embutidos com parâmetros secretos diretamente no seu pipeline YAML, use templates. Essa abordagem aumenta a segurança, abstraindo informações confidenciais do pipeline principal.
Para implementar essa abordagem, crie um arquivo YAML separado para seu script e armazene esse script em um repositório separado e seguro. Em seguida, você pode fazer referência ao modelo e passar uma variável secreta do Cofre de Chaves do Azure, um grupo de variáveis ou a interface do usuário do pipeline em seu YAML como um parâmetro. Para obter mais informações sobre como usar modelos, consulte a Referência de uso de modelo.
Limitar segredos com políticas de ramificação e permissões de grupo variável
Para garantir que os segredos sejam acessíveis apenas a uma determinada ramificação do repositório, você pode usar uma combinação de políticas de ramificação, permissões de grupo variável e inserção condicional de trabalho.
Aplique políticas de validação de compilação que permitam compilações somente de uma determinada ramificação. Em seguida, use permissões de grupo de variáveis para garantir que apenas pipelines autorizados possam acessar os segredos armazenados em seu grupo de variáveis. Por fim, use uma condição em seu pipeline para garantir que apenas um push para a ramificação designada possa fazer referência ao grupo de variáveis.
jobs:
- job: ExampleJob
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main'))
pool:
vmImage: 'ubuntu-latest'
steps:
- script: echo "This runs only for the main branch"
displayName: 'Conditional Step'
variables:
- group: your-variable-group-name