exibir ou remover permissões delegadas do Active Directory
a delegação do Active Directory (AD) é parte crítica da infraestrutura de TI de muitas organizações. Ao delegar administração, você pode conceder aos usuários ou grupos apenas as permissões necessárias sem adicionar usuários a grupos privilegiados (por exemplo, administradores de domínio, operadores de conta). A maneira mais simples de realizar a delegação é usando o Assistente de delegação de controle no snap-in Microsoft Management Console (MMC) Active Directory Users and Computers.
relacionado: Gerenciando o Active Directory com PowerShell
embora o Assistente de delegação de controle forneça uma maneira fácil de delegar permissões, não há assistente correspondente para remover permissões delegadas. Alguém na Microsoft deve ter notado essa lacuna e criado um programa de linha de comando chamado Dsrevoke.exe que pode remover as entradas de permissão adicionadas pela Delegação do Assistente de controle.
no entanto, o Dsrevoke.o programa exe tem duas limitações técnicas importantes, que são documentadas no Artigo da Microsoft ” quando você usa a Ferramenta de linha de comando Dsrevoke para relatar permissões para todas as unidades organizacionais em um domínio baseado no Windows Server 2003, a ferramenta pode não retornar todas as entradas de controle de acesso.”Essas limitações são:
- Dsrevoke.exe pode encontrar apenas até 1.000 OUs em uma única pesquisa. A solução sugerida para essa limitação é iniciar a pesquisa do programa em uma unidade organizacional (UO) mais profundamente aninhada para reduzir o número de resultados.
- Dsrevoke.exe falha se algum OUs contiver um caractere de barra (/) em seus nomes. Não há solução alternativa para essa limitação além de renomear as OUs ofensivas.
ao trabalhar com Dsrevoke.exe recentemente, consegui contornar o primeiro problema, mas depois encontrei o segundo problema. Por razões organizacionais, renomear o OUs para remover o caractere de barra não era uma opção. Além disso, a barra é um caractere válido em um nome OU e Dsrevoke.exe deve funcionar, não importa se uma OU contém uma barra em seu nome ou não. Além disso, trabalhar em torno do limite de 1.000 UO no meu ambiente foi demorado.
por causa desses problemas, decidi ver se havia alternativas integradas ao Dsrevoke.exe. A partir de versões recentes do Windows, O Dsacls.o programa exe fornece uma maneira de remover as permissões adicionadas pelo Assistente de delegação de controle. Embora não falhe se uma OU contiver uma barra em seu nome, Dsacls.exe não pode procurar subcontainers para permissões como Dsrevoke.exe faz.
eu primeiro decidi apenas escrever um script simples para procurar OUs e chamar Dsacls.exe para remover as permissões delegadas de cada UO. No entanto, ao pensar em como queria projetar esse script, ocorreu-me que também gostaria de ver uma lista de quais OUs tinham permissões delegadas a um determinado usuário ou grupo. Dsrevoke.exe e Dsacls.exe pode produzir uma lista de permissões, mas a saída é muito longa e técnica. Eu queria algo mais simples.
devido às limitações em Dsrevoke.exe e Dsacls.exe, e meu desejo de obter uma saída mais Curta, decidi escrever um script do Windows PowerShell para obter a funcionalidade que eu queria. O resultado é remover-DSACE. ps1. Antes de discutir este script, no entanto, preciso fornecer algumas informações básicas sobre o que acontece quando você usa o Assistente de delegação de controle, bem como cobrir alguns conceitos básicos de segurança do Windows.
adicionando permissões delegadas com o Assistente
como mencionei anteriormente, o Assistente de delegação de controle fornece uma maneira fácil de delegar permissões. Por exemplo, suponha que você queira que os membros do grupo de redefinição de senha possam redefinir senhas para usuários na OU de todos os usuários em seu domínio de anúncio. Para fazer isso, você precisa executar essas etapas:
- abra o console Usuários e computadores do Active Directory.
- clique com o botão direito do mouse na UO todos os usuários e escolha Delegate Control, conforme mostrado na Figura 1. Clique no botão Avançar para passar pela página de boas-vindas do assistente.
- na página Usuários ou grupos do assistente, clique no botão Adicionar.
- na caixa de diálogo Selecionar Usuários, Computadores ou grupos, insira o nome do grupo (redefinição de Senha), clique no botão Verificar nomes para garantir que o nome do grupo esteja correto e clique em OK, conforme mostrado na Figura 2.
- Após certificar-se de que o nome do grupo é listado na página Usuários ou Grupos, clique em Avançar, conforme mostrado na Figura 3.
- na página tarefas a delegar, selecione redefinir senhas de usuário e forçar alteração de senha no próximo logon e clique em Avançar, conforme mostrado na Figura 4.
- Verifique as informações na página final do assistente e clique em Concluir.
quando você clica no botão Concluir, o Assistente de delegação de controle Adiciona as permissões solicitadas à UO de todos os usuários. Você pode visualizar os efeitos da delegação clicando com o botão direito do mouse na OU todos os usuários, escolhendo Propriedades e selecionando a guia Segurança. (Se a guia Segurança não estiver visível, ative a opção recursos avançados no menu Exibir do console Usuários e computadores do Active Directory.) Para uma visão detalhada, você pode clicar no botão Avançado. A figura 5 mostra a caixa de diálogo Configurações Avançadas de segurança que aparece.
ACLs, ases e curadores-Oh meu!
para entender as informações fornecidas na caixa de diálogo Configurações Avançadas de segurança, você precisa saber sobre os seguintes conceitos de segurança do Windows: Lista de controle de acesso (ACL), entrada de controle de acesso (ACE), administrador e herança. Você também precisa entender esses conceitos para usar Remove-DSACE. ps1.
ACL. Existem dois tipos de ACLs: ACLs discricionários (DACLs) e ACLs do sistema (SACLs). Um DACL identifica as contas que têm acesso permitido ou negado a um objeto. Um SACL descreve como um administrador deseja registrar tentativas de acessar um objeto (ou seja, auditoria).
ACE. Um ACL é composto por Ases. Cada ACE identifica um administrador e especifica o acesso do administrador (permitir, negar ou auditar) para o objeto. A delegação do Assistente de controle adiciona Ases ao DACL de um contêiner de anúncio. A figura 5 mostra o DACL para todos os usuários OU. Nesta figura, o termo entrada de permissão é sinônimo de ACE.
administrador. Um administrador é a entidade (um usuário, grupo de segurança ou sessão de logon) à qual um ACE se aplica. Cada ás se aplica a um único administrador. Na Figura 5, o termo Principal é sinônimo de administrador. A figura 5 mostra que existem dois ases atribuídos ao grupo de redefinição de senha. Em outras palavras, o grupo de redefinição de senha é o administrador (principal) desses dois ases.
herança. Um ACE pode ser aplicado diretamente a um objeto ou pode ser herdado do objeto pai do recurso. Na Figura 5, Os dois ases para todos os usuários OU que contêm o grupo de redefinição de senha como Administrador não são herdados do contêiner pai (ou seja, a coluna herdada de lê nenhum) porque o Assistente de delegação de controle os adicionou diretamente ao DACL. A figura 6 mostra o DACL Para A ou contábil. O DACL da contabilidade ou contém dois ases para o grupo de redefinição de senha, mas esses ases são herdados de todos os usuários OU (ou seja, a coluna herdada de lê OU=todos os usuários,DC=fabrikam,DC=local).
Introdução de Remover-DSACE.ps1
eu escrevi Remover-DSACE.ps1 (curto para remover o serviço de diretório do ACEs) para alcançar as seguintes metas:
- Localizar ou contendo ACEs herdadas não contém um administrador.
- Recurse em sub-OUs, se solicitado.
- remover Ases não herdados contendo um administrador.
- produzir saída concisa.
a sintaxe do script é a seguinte:
Remove-DSACE path
o parâmetro-Report or-Remove determina se o script listará ou removerá Ases não herdados. Se você especificar-Report, o script encontrará Ases não herdados contendo curadores, mas não os removerá. Se você especificar-Remove, o script remove os ases não herdados. É muito importante entender que o script removerá todos os ases não herdados para o administrador, não apenas os ases adicionados pelo Assistente de delegação de controle. Isso ocorre porque não há nenhuma maneira de determinar como os ases não herdados foram adicionados.
os parâmetros-Report e-Remove são opcionais, mas o script assume o parâmetro-Report por padrão. O script gerará um erro se você especificar os dois parâmetros ao mesmo tempo.
você usa o parâmetro-Path para especificar um ou mais nomes distintos (DNs) do AD OUs. O nome do parâmetro-Path é opcional e aceita entrada de pipeline. Embora você possa especificar vários DNs, não pode usar curingas.
o parâmetro-Trustee nomeia o trustee para encontrar nos Ases. O script examina o DACL de cada UO para Ases não herdados contendo o administrador nomeado. Você pode especificar vários curadores usando uma lista delimitada por vírgulas ou uma matriz, mas não pode usar curingas. Você pode especificar nomes de administrador usando qualquer um dos formatos de nome listados na Tabela 1.
Formato | Exemplo |
---|---|
Windows NT 4.0 formato de nomenclatura (NT4) | FABRIKAM\KenDyer |
DN Do objeto | CN=Ken Dyer,CN=Utilizadores,DC=empresa,DC=com |
O objeto de nome canônico | fabrikam.com/Users/Ken Dyer |
O objeto de nome principal de utilizador (UPN) |
Você inclui o parâmetro Recurse se você deseja pesquisar por unidades organizacionais abaixo ou especificada. Se você quiser se conectar a um controlador de domínio específico( DC), você pode especificar o nome do servidor com o parâmetro
-ServerName. Ambos os parâmetros-Recurse e-ServerName são opcionais.
o script suporta credenciais alternativas. O parâmetro-Credential usa um objeto PSCredential que contém o nome de usuário e a senha que o script deve usar para se conectar ao Domínio.
o script também suporta o parâmetro-Confirm. O parâmetro-Confirm só é significativo em combinação com o parâmetro-Remove. O parâmetro-Confirm é ativado por padrão, a menos que você o desative especificando-Confirm:$FALSE ou definindo a variável $ConfirmPreference como None. Você só deve desativar o parâmetro-Confirm quando tiver certeza absoluta de que está removendo os ases corretos.
o script produz objetos de saída contendo as propriedades listadas na Tabela 2.
Propriedade | Descrição |
---|---|
Caminho | A ou DN |
Administrador | O nome do síndico no formato DOMÍNIO\nome |
ACEs | O número de não-ACEs herdadas ou ACL |
Resultado* | A palavra “Removidos” ou uma mensagem de erro |
*O Resultado propriedade só existe quando utilizar o parâmetro-Remove. |
o script inclui apenas uos com ases não herdados contendo um administrador. Os ases herdados para um administrador não estão incluídos na saída. A figura 7 mostra dois exemplos. O primeiro comando na Figura 7 não produz saída porque o DACL Para A ou contábil não contém ACEs não herdados para o grupo de redefinição de senha. (A contabilidade OU tem dois ases para o grupo de redefinição de senha, mas esses ases são herdados de todos os usuários OU, como mostrado na Figura 6.) O segundo comando na Figura 7 produz saída. Existem dois ases não herdados para o grupo de redefinição de senha na UO todos os usuários (como visto na Figura 5).
Exemplo do Mundo Real
Vamos ver como você pode usar Remove-DSACE.ps1 no mundo real. Suponha que um administrador no fabrikam.o domínio local usou o Assistente de delegação de controle para delegar permissões ao grupo de funcionários do Secretariado na UO de todos os usuários e em algumas das uos abaixo dela, mas ele não se lembra de quais uos. Você precisa remover essas permissões delegadas para poder delegar as permissões a outros grupos.
primeiro, você precisa ver uma lista das OUs que possuem Ases não herdadas contendo o grupo de funcionários do Secretariado. Para fazer isso, você pode usar o comando:
Remove-DSACE -Report ` -Path "OU=All Users,DC=fabrikam,DC=local" ` -Trustee "FABRIKAM\Secretarial_Staff" ` -Recurse | Format-List
este comando e sua saída são mostrados na Figura 8.
a partir desta saída, você pode ver que existem três uos que possuem Ases não herdados contendo o grupo de pessoal de Secretariado. Depois de verificar que é possível remover esses Ases, você pode substituir o parâmetro-Report pelo parâmetro-Remove e repetir o comando, conforme mostrado na Figura 9. Como mencionei antes, se o grupo de funcionários do Secretariado tiver recebido outras permissões fora do Assistente de delegação de Controle, elas também serão removidas.
Assuma o controle da delegação de anúncios
a delegação do Assistente de controle é uma ferramenta muito útil, mas não há uma maneira fácil de visualizar ou reverter rapidamente seus efeitos. Embora você possa usar Dsrevoke.exe e Dsacls.exe para realizar essas tarefas, essas ferramentas têm algumas limitações. Se você usar o script Remove-DSACE.ps1, terá melhor controle sobre as permissões delegadas no AD. Você pode baixar este script clicando no botão Baixar o código próximo ao topo da página.
vídeos relacionados de Brian Desmond (apenas acesso VIP):
Sessão 1: dominando permissões do Active Directory delegação
Sessão 2: dominando Permissões de segurança do Active Directory delegação
Leave a Reply