Dado um par de usuário e um privilégio , preciso determinar se um usuário tem o privilégio no servidor. O seguinte é verdadeiro na minha configuração:
- O servidor faz parte de um domínio, mas não um controlador de domínio
- Existem vários domínios com relação de confiança na infraestrutura
- Às vezes, os usuários (local, domínio ou de um domínio diferente) podem pertencer a um grupo local por um mérito de pertencer a outro grupo (domínio ou local) que pertence a um grupo local, em vez de pertencer diretamente ao grupo.
Cenário de exemplo para o último ponto:
- Usuário1 pertence ao grupo EquipeA no DomínioA
- DomaimA \ TeamA é membro de DomainB \ SpecialAccess
- DomainB \ SpecialAccess é um membro de DomainB \ DomainAdmins
- Finalmente, DomainB \ DomainAdmins pertencem ao grupo local de Administradores
- O grupo Administradores Locais possui o privilégio SeRemoteInteractiveLogonRight
Agora, se eu tenho a entrada DomainA \ User1 e SeRemoteInteractiveLogonRight, preciso chegar à resposta Sim ou Não. Então, abro a Diretiva local na máquina, observe quais grupos estão listados à direita. Também estou interessado, depois vou aos gerentes de servidor e veja o que os membros do grupo precisam e depois que os membros de qualquer grupo desses grupos. e assim por diante.
Tenho um pressentimento de que pode ser mais fácil. Fiquei realmente empolgado quando encontrei o utilitário AccessChk . Durou três minutos inteiros que levaram a descobrir que ele lista apenas o relacionamento direto, para que o usuário dentro de um grupo não seja listado.
Agora, estou supondo que seria possível combinar os resultados do AccessChk de alguma forma, para que eu possa verificar se um usuário pertence a algum dos grupos que o AccessChk retorna, mas, como não é um domínio único, mas sim vários deles, não sei como abordar isso. Além disso, a saída do AccessChk não parece distinguir entre um grupo e um usuário.
EDIT : No espírito de não cair na armadilha do problema XY, o que eu realmente preciso fazer é garantir que, em um grupo de servidores, nenhuma conta de usuário específica usada como identidades de pool de aplicativos IIS tenha os privilégios SeInteractiveLogonRight ou SeRemoteInteractiveLogonRight. Não tenho nenhum problema com a parte do IIS, mas a última etapa da verificação de uma conta contra um privilégio é algo que estou lutando para encontrar uma maneira direta de verificar. Eu também gostaria de automatizar a verificação, porque isso é algo que precisará ser feito regularmente.