Active Directory 2003 - Permissões delegadas sendo removidas

4

Eu tenho um domínio em execução no Windows 2003, no modo 2000. Eu estou tentando criar um grupo AD para conceder permissões temporárias de administrador de domínio para o usuário, para salvar ter que dar-lhes DA permanente.

Eu criei um grupo do AD: g.Temp_DomainAdmin, em uma unidade organizacional: grupos / administrador / permissões delegadas.

Eu tenho uma tarefa agendada executando um VBScript para remover todos os usuários deste grupo.

A tarefa é executada como uma conta de serviço, com permissões limitadas: s.purge_temp_da

Eu deleguei permissões na UO para a conta de serviço para permitir controle total sobre grupos sob ela.

Executar a tarefa manualmente funciona perfeitamente. Mas sempre que se trata de executar à meia-noite, ele falha com "-2147024891 - Erro geral de acesso negado". Observar o grupo g.Temp_DomainAdmin mostra que as permissões delegadas desapareceram.

Alguma ideia? Aqui está o VBScript:

Option Explicit
Dim objRootDSE, strDomain, objGroup, objUser, strdistinguishedName, arrDnComponents
Const ADS_PROPERTY_DELETE = 4
' Retrieve domain information
Set objRootDSE = GetObject("LDAP://RootDSE")
strDomain = objRootDSE.Get("DefaultNamingContext")
' Bind to the group
Set objGroup = GetObject("LDAP://CN=G.ADM.Temp_DomainAdmin,OU=Delegated Permissions,OU=Admin,OU=Resource Access,OU=groups," & strDomain)

' Iterate through the user objects in the group
For Each objUser In objGroup.Members

    on error resume next

    ' Get the users distinguishedName
    strdistinguishedName = objUser.distinguishedName
    wscript.echo "Removing " & objUser.cn

    ' Remove the user from the group
    objGroup.PutEx ADS_PROPERTY_DELETE, "member", Array(strdistinguishedName)
    objGroup.SetInfo
    wscript.echo "Removed " & objUser.cn

    if err.number <> 0 then
        wscript.echo err.number & " - " & err.description
    end if

    on error goto 0
Next
wscript.echo "Done"

Obrigado

    
por pixelseventy2 10.11.2012 / 17:33

1 resposta

4

Você está experimentando os efeitos da funcionalidade "adminSDHolder" e "SDProp" do Active Directory. O objetivo dessa funcionalidade é aplicar uma ACL conhecida a entidades de segurança (usuários, grupos e computadores) que sejam membros de grupos protegidos especiais. Seu grupo "g.Temp_DomainAdmin", por ser um membro de "Admins. Do domínio", foi marcado com um valor "adminCount" de "1" e está agora sujeito ao "adminSDHolder". A ACL no seu grupo "g.Temp_DomainAdmin" será redefinida para uma ACL conhecida quando esta thread for executada. (A Microsoft tem uma descrição mais detalhada desta funcionalidade se você quiser saber mais detalhes. )

Você pode modificar a ACL adminSDHolder para permitir o que você está tentando fazer, mas geralmente não é uma prática recomendada.

Como seu script tem o poder de adicionar / remover membros do grupo "Admins. do domínio", provavelmente é melhor executá-lo como usuário com a participação "Administradores do domínio", evitando assim a necessidade de delegar permissões para o roteiro. (Basicamente, se alguém "possui" o contexto de execução de script, mesmo com a delegação que você tentou organizar, ele pode simplesmente usar o script para adicionar a "Admins. Do Domínio". A delegação complica as coisas e não oferece segurança real. )

    
por 10.11.2012 / 19:36