Delegação de simulação do assistente de controle com o PowerShell

3

Desejo delegar o controle da unidade organizacional TestUsers a um usuário NickA e conceda as seguintes permissões:

  1. Create, delete, and manage user accounts
  2. Reset user passwords and force password change at next logon
  3. Read all user information
  4. Create, delete and manage groups
  5. Modify the membership of a group

O único método que encontrei é o seguinte, mas não consigo encontrar as permissões corretas para atribuir:

$acc  = Get-ADUser NickA
$sid  = new-object System.Security.Principal.SecurityIdentifier $acc.SID
$guid = new-object Guid bf967aba-0de6-11d0-a285-00aa003049e2 
$ou   = Get-ADOrganizationalUnit -Identity TestUsers
$acl  = Get-ACL -Path "AD:$($ou.DistinguishedName)"
$acl.AddAccessRule($(new-object System.DirectoryServices.ActiveDirectoryAccessRule $sid,"CreateChild,DeleteChild","Allow",$guid))
Set-ACL -ACLObject $acl -Path "AD:$($ou.DistinguishedName)"
    
por user01230 11.07.2016 / 22:05

2 respostas

1

Eu finalmente fiz isso usando o PowerShell. Agradecemos aos seguintes posts do TechNet Referência do GUID do Exchange 2007 e Atualizar o esqueleto da ACL Eu consegui delegar o controle da unidade organizacional TestUsers a um usuário NickA e dar as permissões que eu postei originalmente.

$OU   = Get-ADOrganizationalUnit -Identity "OU=TestUsers,DC=contoso,DC=private"
$SID  = new-object System.Security.Principal.SecurityIdentifier $(Get-ADUser "NickA").SID
$GUIDUserOBJ  = new-object Guid bf967aba-0de6-11d0-a285-00aa003049e2
$GUIDGroupOBJ = new-object Guid bf967a9c-0de6-11d0-a285-00aa003049e2
$GUIDNull     = new-object Guid 00000000-0000-0000-0000-000000000000 

$ACL  = Get-ACL -Path "AD:$($OU.DistinguishedName)"

#Create a hashtable to store the GUID value of each schema class and attribute
$ADRootDSE = Get-ADRootDSE
$GUIDMap = @{}
Get-ADObject -SearchBase ($ADRootDSE.SchemaNamingContext) -LDAPFilter "(schemaidguid=*)" -Properties lDAPDisplayName,schemaIDGUID | % {$GUIDMap[$_.lDAPDisplayName]=[System.GUID]$_.schemaIDGUID}

$ACL.AddAccessRule((New-Object System.DirectoryServices.ActiveDirectoryAccessRule $SID,"CreateChild,DeleteChild","Allow",$GUIDUserOBJ,"ALL"))
$ACL.AddAccessRule((New-Object System.DirectoryServices.ActiveDirectoryAccessRule $SID,"GenericAll","Allow",$GUIDNull,"Descendents",$GUIDMap["user"]))
$ACL.AddAccessRule((New-Object System.DirectoryServices.ActiveDirectoryAccessRule $SID,"CreateChild,DeleteChild","Allow",$GUIDGroupOBJ,"ALL"))
$ACL.AddAccessRule((New-Object System.DirectoryServices.ActiveDirectoryAccessRule $SID,"GenericAll","Allow",$GUIDNull,"Descendents",$GUIDMap["group"]))

Set-ACL -ACLObject $ACL -Path "AD:$($OU.DistinguishedName)"
    
por 19.07.2016 / 17:34
1

Ainda não enfrentei o edifício do ACL com o PowerShell, mas isso pode ser feito com o antigo comando DSACLS que faz parte do RSAT e das ferramentas de suporte desde o Windows Server 2003.

dsacls "OU=Test,DC=domain,DC=com" /I:S /G "domain\user:CA;Reset Password";user

Coloque o DN da OU delegada entre as aspas e coloque o usuário após o parâmetro / G (grant). O parâmetro /I:S informa à ACE para herdar apenas objetos filho, e o parâmetro CA significa Control Access.

Mais sobre a sintaxe pode ser encontrada em TechNet ou outros sites. Se você precisar usar o PowerShell, confira o Atualizar ACL ativo Documentação do Provedor de diretório .

    
por 12.07.2016 / 16:37