Ambito da pontuacao de conformidade AD: o que o número pode demonstrar
O Ambito da pontuacao de conformidade AD determina o que um número pode sustentar numa auditoria. Na implementação do etc-collector revista a 4 de outubro de 2026, a pontuação começa em 100 e subtrai pontos por quatro valores da política de palavras-passe do domínio e por uma contagem de utilizadores ativos com adminCount=1. Não agrega todas as constatações nem avalia um referencial de conformidade completo.
Uma pontuação de 100 significa que nenhuma destas cinco condições de dedução foi acionada com os dados fornecidos. Não certifica o Active Directory, não prova que todos os objetos relevantes foram recolhidos nem demonstra que controlos independentes foram aprovados. Antes de utilizar o número num relatório, reconstrua os dados de entrada e as provas da sua recolha.
Esta análise está fixada na revisão do collector 6a04c34b5ce01d3abf747c1d1c2f671eaa1d5e85, especificamente em public/internal/audit/detectors/ad/compliance/score.go, a partir de Detect() na linha 23. Os exemplos abaixo são cálculos a partir desse código, não medições de um domínio real. Não foram executados comandos Windows contra um ambiente para este artigo.
Como funcionam as cinco deduções
Com um DomainInfo não nulo, cada condição é avaliada de forma independente. O quinto dado de entrada é derivado da coleção Users fornecida. Estes são limiares do produto; utilizá-los para reproduzir um resultado não demonstra que sejam a base de referência aprovada pela organização.
| Dado de entrada utilizado pelo detetor | Condição de dedução | Pontos subtraídos | Chave da dedução |
|---|---|---|---|
MinPwdLength | Inferior a 14 | 10 | weak_password_length |
PwdHistoryLength | Inferior a 24 | 5 | weak_password_history |
LockoutThreshold | Superior a 10 ou igual a 0 | 5 | weak_lockout_policy |
MaxPwdAge, em dias inteiros do collector | Superior a 90 ou igual a 0 | 5 | weak_password_age |
Número de utilizadores fornecidos com Disabled=false e AdminCount=true | Superior a 20 | 10 | excessive_admins |
A igualdade é relevante: comprimento 14, histórico 24, limiar de bloqueio 10, idade máxima 90 dias e contagem 20 não acionam as respetivas deduções. O contador conta cada objeto que cumpre as condições uma vez; não calcula uma proporção de administradores em relação aos utilizadores.
Se DomainInfo for nulo, o detetor ignora as quatro condições de política e subtrai 15 com a chave no_domain_info. Em seguida, avalia a mesma condição de contagem de utilizadores. Um objeto nulo é, portanto, um ramo de cálculo diferente, não quatro falhas de controlos de política confirmadas.
Demonstrar o intervalo alcançável
Com DomainInfo presente, a maior dedução possível é 10 + 5 + 5 + 5 + 10 = 35. A menor é zero. As pontuações variam, portanto, de 65 a 100, em incrementos de cinco pontos. A limitação defensiva a zero nunca é atingida por estas condições.
Sem DomainInfo, a pontuação é 85 quando a contagem de utilizadores que cumprem as condições é, no máximo, 20, ou 75 quando ultrapassa 20. Não pode assumir outros valores nesse ramo.
Por exemplo, o acionamento das quatro condições de política com contagem 20 produz 75; com contagem 21 produz 65. Um objeto de domínio nulo com contagem 20 produz 85. Estes casos hipotéticos explicam por que motivo um número aparentemente melhor pode acompanhar provas de política mais fracas.
A constatação inclui faixas de interpretação como 50-69 e 0-49. Apenas 65 é alcançável na primeira faixa; a segunda é totalmente inalcançável. Valores inferiores a 65 não podem resultar apenas deste cálculo. Esses rótulos de apresentação não ampliam a cobertura do detetor nem transformam a sua faixa superior num veredito de conformidade.
Deteção: conciliar os dados de entrada com leituras independentes
Comece pelo domínio, pelo controlador de domínio escolhido, pela hora da recolha e pelo âmbito do inventário. Uma nova leitura independente noutro DC ou com uma base de pesquisa mais restrita pode descrever provas diferentes. Registe essas diferenças antes de tratar uma divergência como erro do detetor.
A Microsoft documenta Get-ADDefaultDomainPasswordPolicy como forma de obter a política predefinida de um domínio. Este exemplo apenas de leitura utiliza os parâmetros documentados -Identity e -Server. Substitua o domínio e o DC ilustrativos pelos alvos em análise:
Get-ADDefaultDomainPasswordPolicy -Identity 'example.com' -Server 'dc01.example.com'
Guarde o objeto devolvido completo e compare o comprimento mínimo, o histórico de palavras-passe, o limiar de bloqueio e a idade máxima com os dados de entrada do collector. Preserve as unidades de duração: o fornecedor converte o intervalo de idade máxima do diretório em dias inteiros. Não compare diretamente um intervalo bruto do diretório ou uma cadeia de duração formatada com o inteiro 90.
O collector lê estes atributos de política a partir do objeto do domínio. Não utiliza o objeto resultante de definições de palavras-passe (PSO) de cada utilizador para esta pontuação. A Microsoft documenta Get-ADUserResultantPasswordPolicy para essa questão distinta ao nível da conta. Mantenha essas provas fora da pontuação reproduzida, em vez de substituir os dados do domínio pela política de um utilizador selecionado.
Ler adminCount sem mudar o nome da população
A definição do atributo adminCount da Microsoft descreve um objeto cujas ACLs foram reforçadas pelo sistema devido à pertença direta ou transitiva a um grupo administrativo. Isso descreve um histórico de proteção; não é uma consulta à pertença atual ao grupo Domain Admins.
O fornecedor converte a cadeia LDAP exata "1" no booleano do utilizador AdminCount=true. O detetor exclui depois os utilizadores desativados. Embora a descrição e o texto de âmbito da constatação digam “Domain Admins count”, o predicado efetivo nunca resolve esse grupo. Preserve esta distinção ao explicar o resultado.
Utilize os parâmetros de pesquisa e de propriedades documentados de Get-ADUser para guardar os registos de utilizadores subjacentes:
Get-ADUser -Filter * -SearchBase 'DC=example,DC=com' -Server 'dc01.example.com' -Properties adminCount,Enabled
Este é um exemplo adaptado da documentação, não um inventário executado. A partir dos registos devolvidos, concilie os utilizadores ativos cujo adminCount bruto é igual a 1 com a população do collector que cumpre as condições. Guarde as identidades dos objetos e as exceções, não apenas o total final. Um atributo em falta, uma base restrita ou um limite de recolha exigem contextualização antes de interpretar uma contagem baixa.
Criar uma folha de cálculo e proveniência
Para uma auditoria real, preencha o seguinte registo com valores observados. “Recolha confirmada” significa que a resposta e os atributos necessários foram lidos com sucesso para o âmbito indicado; uma estrutura não nula, por si só, não demonstra isso.
| Dado de entrada | Origem no collector | Provas necessárias para confirmar a recolha | Cálculo a reproduzir |
|---|---|---|---|
| Comprimento mínimo | minPwdLength do domínio mapeado para MinPwdLength | Identidade do objeto do domínio, atributo devolvido, análise bem-sucedida, DC e hora | Subtrair 10 quando inferior a 14 |
| Histórico | pwdHistoryLength do domínio mapeado para PwdHistoryLength | Mesma identidade do domínio, provas do atributo e da análise | Subtrair 5 quando inferior a 24 |
| Limiar de bloqueio | lockoutThreshold do domínio | Resposta do atributo e provas da análise; contextualizar qualquer zero | Subtrair 5 quando superior a 10 ou zero |
| Idade máxima | maxPwdAge do domínio convertido em dias inteiros | Valor bruto, resultado da conversão e unidades; contextualizar qualquer zero | Subtrair 5 quando superior a 90 ou zero |
| População adminCount ativa | Users fornecidos, adminCount analisado e indicador de desativação | Base de pesquisa, população/filtro, limites, atributos devolvidos e identidades dos objetos | Subtrair 10 quando a contagem ultrapassa 20 |
Acrescente a cada linha o valor real, o resultado da recolha, o valor independente e a dedução resultante. Quando não houver provas disponíveis, escreva “desconhecido” na coluna das provas, preservando o dado numérico de entrada utilizado pelo código. Não substitua silenciosamente esse dado por um valor presumido.
Correção: resolver lacunas nas provas antes de alterar a política (Remediation)
Primeiro, concilie o cálculo. Preserve a pontuação da constatação, o mapa de deduções, as estatísticas de utilizadores e a revisão do collector. Recalcule o resultado com os dados fornecidos e identifique se o objeto do domínio estava presente, parcial ou nulo. Isto separa uma discrepância aritmética de uma observação incompleta.
Em seguida, contextualize a recolha. Neste fornecedor, um zero pode representar um valor configurado ou um valor ausente/não analisado. Obtenha a resposta relevante do domínio e uma leitura independente no DC registado. Para os utilizadores, concilie o âmbito e os limites da pesquisa com a população pretendida. Uma chamada GetUsers bem-sucedida é uma prova necessária, mas não demonstra, por si só, que um inventário intencionalmente limitado abranja todo o domínio.
Se a recolha estiver incompleta, resolva o problema específico de recolha e execute uma nova auditoria. Preserve o resultado anterior como uma observação incompleta. Não descreva a passagem de 85 para 100 após recuperar a informação do domínio como quatro controlos de política corrigidos sem provas da política antes e depois.
Identifique depois a base de referência da organização, a sua edição, o responsável e as exceções. A nossa comparação dos predicados de política de palavras-passe ANSSI e CIS explica por que diferentes verificações podem divergir em atributos sobrepostos. As cinco deduções desta pontuação são um cálculo separado do produto; não constituem uma terceira base de referência de um referencial.
Para uma lacuna de configuração confirmada, aplique a alteração de política aprovada através do processo de administração estabelecido, guarde o respetivo registo de alteração, repita a leitura independente e volte a auditar o mesmo âmbito. Para uma discrepância de adminCount, investigue separadamente os objetos reais e as pertenças privilegiadas atuais. Limpar o marcador apenas para reduzir o contador não demonstra que os privilégios ou a proteção das ACLs estejam corretos.
Por fim, anexe provas de controlos independentes. O nosso mapeamento dos requisitos de conformidade AD e Azure para controlos de identidade identificados fornece contexto para esse trabalho. O registo de eventos, as proteções de protocolo, a governação de acessos e os controlos Entra precisam dos seus próprios resultados. Esta pontuação não inspeciona esses controlos e não pode preencher as suas lacunas de prova.
Como a EtcSec deteta isto
COMPLIANCE_SCORE é o único detetor abordado aqui. O seu Detect() lê DomainInfo e Users, aplica as cinco condições acima e devolve sempre uma constatação Info com Count=1, incluindo quando a pontuação é 100. Count 1 designa a constatação de pontuação devolvida, não um utilizador afetado ou um controlo que falhou.
Os detalhes incluem score, maxScore=100, deductions, totalUsers, enabledUsers e adminCount. Os totais de utilizadores descrevem a coleção fornecida. Não demonstram uma cobertura completa do diretório.
Os caminhos do fornecedor explicam os limites:
public/internal/providers/ldap/client.go:569cria um objeto de informação do domínio antes de consultar RootDSE e o domínio. Respostas falhadas ou vazias podem deixar um objeto parcial com valores zero. Os quatro valores de política provêm do objeto do domínio, não de um PSO resultante por utilizador.public/internal/providers/ldap/parser.go:155defineAdminCountdo utilizador através da comparação exata de cadeiasadminCount == "1". A sua função auxiliar de inteiros devolve zero para valores ausentes e ignora erros de análise de inteiros.public/internal/audit/engine.go:512trata um erro devolvido porGetDomainInfocomo não fatal e fornece informação do domínio nula. Esse ramo produz 85 antes da dedução opcional de 10 pontos de adminCount. Em contrapartida, o caminho de erro anterior deGetUsersinterrompe a recolha.- Os valores alcançáveis pelo cálculo são 65–100 com um objeto do domínio, ou 75/85 sem ele. Um objeto não nulo não prova a recolha bem-sucedida de atributos, e as faixas de interpretação abaixo de 65 são inalcançáveis por este detetor.
Todas as referências de código acima estão fixadas na revisão analisada. Apresente o resultado como um indicador parcial do produto, sustentado por dados de entrada contextualizados. Uma pontuação de 100 demonstra apenas que estas cinco condições de dedução não foram acionadas; a conformidade global e a certificação exigem controlos e provas definidos de forma independente.
Explore as paginas de identidade que sustentam este tema
