Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Serviços Azure DevOps | Azure DevOps Server | Azure DevOps Server 2022
Proteja o Azure Repos combinando controle de acesso, políticas de pull request e verificações de status nos seus branches mais importantes. Este artigo mostra como restringir as alterações diretas, exigir os revisores corretos, impor requisitos de build e item de trabalho e adicionar GitHub verificações de Segurança Avançada antes da mesclagem de solicitações de pull.
Tip
Você pode usar a IA para ajudar nessa tarefa mais adiante neste artigo ou consulte Ativar a assistência de IA com o Azure DevOps Server MCP para começar.
Ameaças e controles
Use os controles a seguir juntos para reduzir os riscos mais comuns de solicitação de pull.
| Ameaça | Risco | Controle recomendado |
|---|---|---|
| Enviar pushs diretos para branches protegidos | Alterações ignoram revisão e validação | Permissões de branch e políticas de branch |
| Aprovação por uma única pessoa | A qualidade da revisão depende de uma pessoa | Exigir um número mínimo de revisores |
| Ausência de revisão especializada em arquivos sensíveis | Alterações críticas para a segurança são mescladas sem os revisores adequados | Revisores incluídos automaticamente |
| Alterações de código não rastreadas | Capacidade de auditoria reduzida e rastreabilidade de alterações | Verificar se há itens de trabalho vinculados |
| Código desfeito ou não testado | As regressões chegam a branches compartilhadas | Validação de build |
| Comentários de revisão não resolvidos | Problemas conhecidos são mesclados sem resposta | Verificar a resolução de comentários |
| Novas vulnerabilidades altas ou críticas | Regressões de segurança se mesclam por meio de solicitações de pull | Verificações de status do GitHub Advanced Security |
Prerequisites
| Category | Requisitos |
|---|---|
| Acesso ao projeto | Membro de um projeto. |
| Permissions | - Exibir código em projetos privados: pelo menos acesso básico . - Clonar ou contribuir para o código em projetos privados: membro do grupo de segurança Colaboradores ou permissões correspondentes no projeto. - Definir permissões de branch ou repositório: gerenciar permissões para o branch ou repositório. - Defina políticas de ramificação, verificações de status ou altere a ramificação padrão: permissão Editar políticas para o repositório ou a ramificação, ou associação ao grupo de segurança Administradores do Projeto. - Importar um repositório: membro do grupo de segurança Administradores do Projeto ou da permissão Criar repositório no nível do projeto do Git definida como Permitir. Para obter mais informações, consulte Definir permissões de repositório Git. |
| Services | Repositório habilitado. |
| Tools | Optional. Use az repos os comandos: CLI do Azure DevOps. |
| Category | Requisitos |
|---|---|
| Acesso ao projeto | Membro de um projeto. |
| Permissions | - Exibir código: no mínimo acesso básico. - Clonar ou contribuir com o código: membro do grupo de segurança Colaboradores ou permissões correspondentes no projeto. |
| Services | Repositório habilitado. |
Antes de configurar qualquer política de ramificação:
- Verifique se o repositório de destino e o branch já existem.
- Decida quais grupos podem gerenciar permissões, ignorar políticas e aprovar solicitações de pull.
- Se você planeja exigir a validação de build ou verificações de status do GitHub Advanced Security, crie primeiro o pipeline de build.
Linha de base de segurança para a maioria das equipes
Para um ramo de produção típico, como main, comece com esta configuração básica:
| Área de controle | Linha de base recomendada | Por que |
|---|---|---|
| Acesso ao repositório | Limitar o acesso de gravação aos colaboradores que trabalham ativamente no repositório | Reduz o número de identidades que podem alterar o código-fonte ou as configurações do repositório. |
| Permissões de branch | Restringir Ignorar políticas ao concluir solicitações de pull request e Ignorar políticas ao enviar por push a um pequeno grupo de administradores | Impede que os usuários ignorem as revisões necessárias, a validação e outras proteções de ramificação. |
| Política de revisão | Exigir pelo menos dois revisores para main |
Melhora a qualidade da revisão e reduz o risco de uma única aprovação equivocada ou tendenciosa. |
| Arquivos confidenciais | Incluir automaticamente revisores para caminhos sensíveis à segurança, infraestrutura ou conformidade | Garante que as alterações em áreas de alto risco sejam examinadas pelas pessoas ou equipes certas. |
| Rastreabilidade | Ativar Verificação de itens de trabalho vinculados | Preserva uma trilha de auditoria entre as alterações de código e o trabalho que as justificou. |
| Validation | Adicionar validação de build para o branch de PR | Detecta falhas de compilação e de teste antes que o código seja mesclado a um ramo protegido. |
| Conclusão da revisão | Ativar a verificação de resolução de comentários | Ajuda a garantir que as preocupações dos revisores sejam resolvidas antes da conclusão. |
| Portões de vulnerabilidade | Adicionar AdvancedSecurity/NewHighAndCritical depois que a verificação de Segurança Avançada for configurada |
Bloqueia solicitações de pull que introduzem novas descobertas de segurança altas ou críticas. |
Etapa 1: Restringir o acesso ao repositório e ao branch
Comece com permissões. As políticas são mais eficazes quando apenas um pequeno grupo de usuários pode contorná-las.
Examinar permissões de repositório
Use permissões de repositório para controlar quem pode ler, contribuir, administrar configurações ou contribuir para solicitações de pull. Para obter a referência de permissão detalhada, consulte Definir permissões de repositório Git.
Use o seguinte padrão:
- Conceda aos Colaboradores as permissões necessárias para trabalhar em branches de recursos.
- Reserve a administração do repositório para um pequeno grupo de administradores.
- Evite conceder permissões amplas para ignorar políticas.
Limitar permissões de ramificação
Para branches protegidas, revise e limite essas permissões cuidadosamente:
- Desconsiderar políticas ao concluir pull requests
- Ignorar políticas ao fazer push
- Forçar push (reescrever histórico, excluir ramificações e tags)
- Editar políticas
- Gerenciar permissões
Use Definir permissões da branch para configurar essas configurações.
Padrão recomendado para main:
| Grupo | Permissões recomendadas para ramificações |
|---|---|
| Colaboradores | Permitir a contribuição regular por meio de solicitações de pull, mas não conceder permissões de bypass |
| Administradores de projeto | Permitir políticas de edição e gerenciar permissões |
| Responsáveis pela liberação de emergência | Conceda permissões para ignorar somente se o seu processo de resposta a incidentes as exigir |
Important
Mantenha Ignorar políticas ao concluir solicitações de pull e Ignorar políticas ao enviar por push restritos a um pequeno grupo de administradores confiáveis. Essas permissões anulam as proteções criadas por revisores obrigatórios, validação e verificações de status.
Etapa 2: Exigir revisão rigorosa de pull requests
Exigir um número mínimo de revisores
Use Exigir um número mínimo de revisores em ramificações importantes, como main e ramificações de lançamento.
Configurações recomendadas:
- Revisores mínimos:
2para branches compartilhados de alto valor - Exigir pelo menos uma aprovação na última iteração
-
Permitir que os solicitantes aprovem suas próprias alterações:
Off -
Proibir o pusher mais recente de aprovar suas próprias alterações:
Onquando você quer uma separação mais forte de tarefas
Configurar a política de número mínimo de revisores
- Vá para Configurações do projeto>Repositórios.
- Selecione o repositório e, em seguida, selecione a ramificação protegida.
- Em Políticas, ative Exigir um número mínimo de revisores.
- Defina as opções de revisão para a ramificação.
Verifique o resultado:
- A lista de políticas da ramificação mostra a política de revisores como habilitada.
- As solicitações de pull para o branch não podem ser concluídas até que o número necessário de aprovações esteja presente.
Para obter detalhes da política, consulte políticas e configurações do Branch.
Incluir automaticamente revisores para arquivos confidenciais
Use revisores incluídos automaticamente quando determinados arquivos ou pastas exigirem aprovação de uma pessoa ou equipe específica.
Bons candidatos incluem:
- implantação e código de infraestrutura
- código de autenticação e autorização
- pastas relacionadas à conformidade
- modelos de pipeline compartilhados
Configurar a política de revisores incluída automaticamente
- Vá para Configurações do projeto>Repositórios.
- Abra o branch de destino nas políticas do Branch.
- Adicione uma política de revisores incluída automaticamente .
- Adicione as pessoas ou grupos necessários.
- Escolha se a política é obrigatória ou opcional.
- Adicione filtros de caminho para os arquivos ou pastas que exigem sua revisão.
- Não permite que os solicitantes aprovem suas próprias alterações.
Verifique o resultado:
- Uma solicitação de pull que altera arquivos correspondentes adiciona automaticamente os revisores configurados.
- O pull request não pode ser concluído até que a política obrigatória de revisores seja atendida.
Para obter mais informações, consulte Incluir automaticamente revisores de código.
Etapa 3: Impor a rastreabilidade e a validação
Verificar se há itens de trabalho vinculados
Ative a Verificação de itens de trabalho vinculados quando sua equipe precisar alterar a rastreabilidade entre solicitações de pull e acompanhamento de trabalho.
Configurar a política de itens de trabalho vinculados
- Vá para Configurações do projeto>Repositórios.
- Abra a ramificação de destino em Políticas de ramificação.
- Ative a Verificação de itens de trabalho vinculados.
- Escolha Obrigatório se as solicitações de pull precisarem ter itens de trabalho vinculados antes da conclusão.
Verifique o resultado: solicitações de pull sem itens de trabalho vinculados mostram a política como não satisfeita.
Para obter mais informações, consulte Verificar se há itens de trabalho vinculados.
Validação de build
Use a validação de compilação para exigir a execução bem-sucedida de um pipeline para pull requests antes da mesclagem.
Important
Antes de configurar a validação de build, crie o pipeline de build que deve validar a solicitação de pull.
Configurações recomendadas para ramificações protegidas:
- Gatilho: Automático
-
Requisito de política:
Required - Expiração do build: escolha um valor que corresponda à frequência com que o branch protegido é alterado
Configurar a política de validação de compilação
- Abra a ramificação de destino em Políticas da ramificação.
- Adicione uma política de validação de compilação.
- Selecione o pipeline de compilação.
- Escolha se a política é necessária.
- Salve a política.
Verifique o resultado:
- Abrir ou atualizar uma solicitação de pull enfileira o build de validação configurado.
- A solicitação de pull não pode ser concluída até que o build necessário seja bem-sucedido.
Para obter mais informações, consulte a validação de build.
Verificar a resolução de comentários
Use Verificar resolução de comentários para garantir que as discussões de revisão sejam resolvidas antes que a solicitação de pull seja concluída.
Configurar a política de resolução de comentários
- Abra o ramo de destino em Políticas de ramo.
- Ative Verificar resolução de comentários.
- Escolha Obrigatório se os comentários não resolvidos devem bloquear a conclusão.
Verifique o resultado: solicitações de pull com comentários não resolvidos permanecem bloqueadas até que revisores ou autores resolvam os threads.
Para obter mais informações, consulte Verificar se há resolução de comentários.
Limitar tipos de mesclagem
Use tipos de mesclagem limite como uma configuração de governança de histórico do repositório. Essa política ajuda a padronizar como as confirmações de solicitação de pull aparecem após a mesclagem, mas não é um controle de segurança direto.
Escolha uma estratégia de mesclagem com base em como sua equipe analisa, rastreia e audita o histórico.
Exemplos de uso:
- Exigir mesclagens por squash para funcionalidades de curta duração.
- Não permitir a rebase ou o squash em branches em que seu processo de auditoria espera confirmações de mesclagem.
Considerações sobre auditoria e rastreabilidade:
- Squash cria um histórico mais limpo do branch de destino, mas colapsa vários commits de origem em um único commit no momento do merge.
- Se o seu modelo de auditoria depende de preservar a sequência exata de commits de um branch de funcionalidade, prefira estratégias de merge commit em vez de squash.
- Mantenha sua política consistente com a forma como os desenvolvedores inspecionam e depuram o histórico em pull requests e na ramificação de destino.
Exemplo da CLI do Azure DevOps:
az repos policy merge-strategy create \
--blocking true \
--branch main \
--enabled true \
--repository-id <repository-id> \
--allow-no-fast-forward true \
--allow-rebase false \
--allow-rebase-merge false \
--allow-squash false
Para obter mais informações, consulte Limitar tipos de mesclagem.
Etapa 4: Adicionar verificações de status de Segurança Avançada GitHub
As verificações de status do GitHub Advanced Security ajudam a evitar que pull requests sejam mesclados quando novas vulnerabilidades críticas ou de alta gravidade são introduzidas.
Important
GitHub Advanced Security for Azure DevOps está disponível apenas para Azure DevOps Services e somente para repositórios Git de código.
Antes de adicionar a política de verificação de status:
- Habilite o GitHub Advanced Security no repositório.
- Configure as tarefas de pipeline de Segurança Avançada necessárias.
- Adicione uma política de validação de build para o branch do pull request.
- Ative
Wait for Processing: truepara as tarefas documentadas de Segurança Avançada. - Execute o pipeline com sucesso pelo menos uma vez para que a verificação de status apareça na lista Status to check.
Comece com AdvancedSecurity/NewHighAndCritical se o repositório já tiver alertas não resolvidos. Depois de reduzir o backlog, considere migrar para AdvancedSecurity/AllHighAndCritical.
Caminho do navegador:
- Abra o branch de destino nas políticas do Branch.
- Em Verificações de status, selecione +.
- Defina Status de verificação como
AdvancedSecurity/NewHighAndCritical. - Deixe as Opções Avançadas em seus valores padrão.
- Salve a política.
As verificações de status da Segurança Avançada são configuradas em Verificações de status no navegador depois que você habilita a verificação da Segurança Avançada e a validação da build para o repositório. Para a configuração necessária, consulte Configurar verificações de status da solicitação de pull.
Verifique o resultado:
- Solicitações pull com novas descobertas altas ou críticas mostram a verificação de status como falha.
- A política de ramificação impede a conclusão até que os problemas encontrados sejam resolvidos ou que a política se torne opcional.
Para obter detalhes da instalação, consulte:
- Configurar verificações de status da solicitação de pull
- Verificações de status de solicitação de pull disponíveis
Exemplos de planos de implantação
Linha de base do repositório de menor sensibilidade
Se o repositório tiver menor sensibilidade e você quiser um ponto de partida gerenciável:
- Restringir permissões de bypass de ramificação em
main. - Exigir pelo menos um ou dois revisores.
- Ative itens de trabalho vinculados.
- Adicionar validação de compilação.
- Ative a resolução de comentários.
Repositório de alta confidencialidade
Se o repositório contiver ativos críticos de implantação, identidade ou conformidade:
- Restrinja as permissões para contornar políticas somente aos administradores.
- Exigir dois revisores em
main. - Adicione revisores incluídos automaticamente para caminhos protegidos.
- Exigir itens de trabalho vinculados.
- Adicionar validação de compilação.
- Adicione GitHub verificações de status de Segurança Avançada se você estiver usando Azure DevOps Services.
Opcional: use a assistência da IA para revisar a configuração da política de branch
A assistência à IA é opcional. As permissões, as políticas e as verificações de status do branch impõem proteções de repositório se você usa ou não IA.
Você pode usar esses prompts para examinar a configuração de política, identificar lacunas e obter recomendações de linha de base mais rapidamente. Se você configurar o Azure DevOps MCP Server, o assistente poderá usar seu contexto do Azure DevOps para aprimorar as respostas. Para obter orientações de configuração, consulte Habilitar a assistência por IA com o Azure DevOps MCP Server.
Use comandos como os seguintes para começar:
| Goal | Prompt de exemplo |
|---|---|
| Examinar as proteções de ramificação | Summarize the branch policies on main and explain which ones are required. |
| Identificar o risco de desvio | Find users or groups that can bypass branch policies on the main branch. |
| Verificar a cobertura da revisão | List the reviewer and comment-resolution policies configured for this repository. |
| Verificar o acompanhamento de trabalho | Check whether pull requests into main require linked work items. |
| Inspecionar portões de validação | Show the build validation policy for main and explain what pipeline it uses. |
| Investigar verificações de status de segurança | List the status checks configured for main and tell me whether GitHub Advanced Security is one of them. |
| Planejar uma linha de base mais segura | Recommend a secure branch policy baseline for this repository based on its current settings. |
Sempre valide comandos e recomendações gerados em relação às permissões do repositório, às configurações de branch e à documentação Azure DevOps atual antes de aplicá-las.
Dicas de solução de problemas
| Problema | Causa provável | Ação recomendada |
|---|---|---|
| Uma opção de política de ramificação não é exibida | Você não tem permissão para Editar políticas ou a ramificação não foi selecionada | Confirmar o acesso ao branch e as permissões de política |
| As solicitações de pull ainda podem ser mescladas sem a política de reunião | Um usuário tem permissões de bypass | Revise Ignorar políticas ao concluir solicitações de pull e Ignorar políticas ao fazer push |
| Revisores necessários não são adicionados | O filtro de caminho de política do revisor não corresponde aos arquivos alterados | Verificar novamente os filtros de caminho e as identidades do revisor |
| A verificação de status de Segurança Avançada não está disponível | O repositório não concluiu uma execução de verificação bem-sucedida com as tarefas necessárias | Verificar a validação da compilação, as tarefas do pipeline e as configurações de Wait for Processing |
| Uma política de item de trabalho vinculado não bloqueia | A política é opcional em vez de necessária | Reabra a política da ramificação e confirme o nível de exigência |