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 do Azure DevOps
As verificações de permissão fazem parte de muitas operações do Azure DevOps Services. Em grande escala, muitas atribuições de permissão explícitas, exceções no nível de recurso e associações de grupo podem reduzir a avaliação e as atualizações de permissões. Listas de controle de acesso grande também exigem que o serviço recupere e resolva mais dados de permissão e identidades.
Use as recomendações neste artigo para reduzir a quantidade de dados de permissões que o Azure DevOps Services processa.
Dica
Você pode usar a IA para ajudar nas tarefas do Azure DevOps. Consulte Ativar a assistência de IA com o Azure DevOps MCP Server para começar.
Limites de desempenho suaves
Use os limites a seguir como metas de planejamento para grandes organizações. Azure DevOps Services não impõe esses limites nem bloqueia as alterações de permissão que os excedem. No entanto, excedê-las aumenta o risco de consultas de permissão lentas, avaliações e atualizações de associação.
| Medida | Máximo recomendado |
|---|---|
| ACEs em um namespace de segurança | 1,000,000 |
| Membros em um grupo de Microsoft Entra ou Azure DevOps | 10,000 |
Uma ACE (entrada de controle de acesso) armazena as permissões atribuídas a um usuário ou grupo. Para grupos aninhados, considere o total de membros efetivos ao usar a diretriz de tamanho do grupo.
Práticas recomendadas
| Prática | Benefício de desempenho |
|---|---|
| Atribuir permissões a grupos em vez de usuários individuais | Substitui muitas ACEs (entradas de controle de acesso do usuário) por uma ACE de grupo. |
| Use o escopo mais abrangente e a herança correspondente | Evita repetir ACEs idênticas em recursos filho. |
| Usar Negar somente para exceções | Limita substituições explícitas e ACEs no nível do objeto. |
| Use grupos de identidades com o dimensionamento adequado | Reduz o processamento desnecessário de associação de grupo. |
| Balancear recursos entre projetos e organizações | Limita o número de recursos avaliados dentro de um limite. |
| Aplicar alterações de permissão incrementalmente | Reduz a carga de atualizações de controle de acesso grandes ou frequentes. |
Atribuir permissões a grupos
Use grupos de segurança Azure DevOps internos ou personalizados para representar funções, equipes e coortes de acesso. Atribuir uma permissão a um grupo cria um ACE. Atribuir a mesma permissão diretamente a muitos usuários cria uma ACE para cada usuário.
- Prefira grupos internos como Leitores, Colaboradores e Administradores de Project quando suas permissões corresponderem ao acesso necessário.
- Crie um grupo personalizado quando um grupo integrado não atender ao acesso necessário.
- Não substitua um grupo por centenas ou milhares de atribuições diretas a usuários.
Use o escopo de correspondência mais amplo e a herança
Defina uma permissão uma única vez no escopo mais alto compatível com o requisito de acesso. Permita que os recursos secundários herdem a permissão e mantenha a herança habilitada, a menos que um recurso secundário exija um acesso diferente.
Por exemplo:
| Requisito de acesso | Escopo preferencial |
|---|---|
| Executar uma tarefa no nível da organização | Nível da organização, quando a permissão está disponível nesse nível |
| Acessar todos os recursos de um tipo com suporte em um projeto | Nível do projeto ou o pai no nível do projeto do tipo de recurso |
| Acessar todos os repositórios Git em um projeto | Entrada de repositórios Git de nível superior |
| Acessar todas as ramificações em um repositório | Nível do repositório |
| Acessar um repositório, uma ramificação, um pipeline, um caminho de área ou outro recurso | Nível do objeto |
Evite configurar permissões idênticas separadamente em cada repositório, ramificação, pipeline ou qualquer outro recurso filho. Para repositórios Git, repositórios individuais herdam permissões da entrada de repositórios Git de nível superior.
Desabilite a herança somente quando um recurso precisar de acesso diferente de seu pai. Desabilitar a herança em muitos recursos geralmente requer atribuições mais explícitas.
Use Deny apenas para exceções
Conceda acesso por meio de um grupo e deixe permissões como Não definidas para identidades que não devem receber a concessão. Em vez de conceder acesso amplo e adicionar muitas entradas deny , crie um grupo com as permissões exatas necessárias.
Use Negar somente quando você precisar substituir um Allow herdado para uma exceção específica. Uma única entrada deny não é inerentemente um problema de desempenho. No entanto, muitas exceções adicionam ACEs e geralmente exigem mais atribuições de permissão no nível do objeto.
Use grupos de identidade dimensionados adequadamente
Use grupos que se alinham aos requisitos de acesso, como uma unidade de negócios, projeto, produto ou função de trabalho. Nem os grupos do Entra nem os grupos do Azure DevOps oferecem melhor desempenho. Aplique as mesmas diretrizes de tamanho e aninhamento a ambos os tipos de grupo.
- Evite adicionar um grupo de locatários ou de toda a empresa, como um grupo All Employees .
- Evite estruturas de grupo muito aninhadas ou que mudam com frequência quando um grupo mais simples fornece o mesmo acesso.
- Divida um grupo muito grande em coortes de acesso menores quando seus membros não exigem o mesmo acesso.
- Se cada membro precisar do mesmo acesso, atribua um grupo em um escopo pai herdado em vez de usar atribuições individuais ou grupos duplicados.
Grupos com mais de 10.000 membros são um risco de desempenho. Aninhamento, alterações frequentes de associação e acesso a muitos recursos autorizados podem aumentar o impacto. Reduza a associação desnecessária e divida o grupo em coortes de acesso menores, quando prático.
Balancear recursos entre projetos e organizações
Evite concentrar milhares de repositórios e a maioria dos recursos protegidos por permissão em um projeto, enquanto outros projetos contêm apenas alguns. As operações que descobrem recursos acessíveis podem precisar avaliar permissões em todo o conjunto.
Distribua grandes conjuntos de repositórios e outros recursos entre projetos antes que muitos recursos se acumulem em um projeto. Não crie um projeto por repositório; A contagem de projetos também tem limites práticos de desempenho.
Em escala empresarial extrema, várias organizações menores podem ter um desempenho melhor do que uma organização que contém a maioria dos dados de permissão e recursos da empresa. Divida as organizações com base em fronteiras estáveis de produto ou de negócios para distribuir a carga de recursos e de permissões. Use essa abordagem somente quando o benefício de escala superar a sobrecarga de gerenciamento de recursos em organizações separadas.
Reduza a instabilidade na automação de permissões
Se você gerenciar permissões por meio de scripts, APIs REST ou fluxos de trabalho de configuração como código:
- Aplique apenas as alterações necessárias para alcançar o estado pretendido. Não apague nem recrie atribuições de permissão inalteradas em cada execução.
- Defina permissões em um escopo pai em vez de gerar entradas equivalentes para cada recurso filho.
- Faça alterações em lote quando houver suporte e siga as práticas recomendadas da API REST do Azure DevOps.
- Evite ciclos de reconciliação de permissões de alta frequência.
- Evite criar e excluir rotineiramente um grande número de projetos ou recursos com permissão.
- Remova atribuições explícitas obsoletas para reduzir o volume da lista de controle de acesso (ACL) e das ACEs.