Copiare le autorizzazioni OU da un gruppo di protezione esistente in un nuovo gruppo di protezione

Attualmente abbiamo un gruppo di protezione denominato: Limited_IT_Admins che dispone di autorizzazioni speciali (limitate a solo determinate attività che possono fare) in ~ 7 OU della città all'interno di un Paese OU.

[Country] <- top level OU [City01] [City02] [City03] [City04] [City05] [City06] [City07] 

Tuttavia, ora devo dividere questo singolo gruppo di sicurezza in tre gruppi individuali. Gli utenti del gruppo Limited_IT_Admin verranno suddivisi in tre nuovi gruppi separati. Gli utenti avranno bisogno di un accesso identico a quello di Limited_IT_Admins, ma solo sulle rispettive organizzazioni.

  • Il modo più veloce per scoprire quale app di IIS è un process?
  • Come dare un utente NTFS diritti a una cartella, tramite Powershell
  • Hai bisogno di consigli su iptables
  • Consente l'accesso amministrativo agli account utente AD alle macchine specifiche
  • Problemi di accesso di Windows 7
  • Nagios frontend w / API per cambiare la configuration?
  •  Limited_IT_Admin_01 - User01 City01, City02, City03 Limited_IT_Admin_02 - User02 City04, City05 Limited_IT_Admin_03 - User03 City06, City07 

    Invece di wherer tentare di ricreare tutte le autorizzazioni speciali impostate nel gruppo di protezione, esiste un modo più semplice per copiare le autorizzazioni che i Limited_IT_Admins avevano ai tre nuovi gruppi?

    2 Solutions collect form web for “Copiare le autorizzazioni OU da un gruppo di protezione esistente in un nuovo gruppo di protezione”

    Ho creato una funzionalità PowerShell Copy-DsAcl che dovrebbe aiutare a eseguire questo tipo di copia delle autorizzazioni di Active Directory. Utilizzando questa function, la risposta originale (sotto la linea) può essere riscritta più in modo pulito come:

      Import-Module ActiveDirectory # Dot source the Copy-DsAcl function: https://github.com/jasonkeithscott/Copy-DsAcl . .\Copy-DsAcl.ps1 # Reference objects $sourceGroup = Get-ADGroup Limited_IT_Admins $sourceObject = Get-ADOrganizationalUnit -Filter { Name -eq "City01" } # Hash for the new groups and their assigned OUs $targetGroups = @{} $targetGroups.Add("Limited_IT_Admin_01", @("City01", "City02", "City03")) $targetGroups.Add("Limited_IT_Admin_02", @("City04", "City05")) $targetGroups.Add("Limited_IT_Admin_03", @("City06", "City07")) # Walk each targetGroup in the hash foreach ( $g in $targetGroups.GetEnumerator() ) { $targetGroup = Get-ADGroup $g.Name # Walk each $city OU and add the $targetGroup to the ACL foreach ( $city in $g.Value ) { Write-Host "Adding $($g.Name) to $city" $targetObject = Get-ADOrganizationalUnit -Filter { Name -eq $city } Copy-DsAcl $sourceGroup $sourceObject $targetGroup $targetObject } } 

    Il Powershell di seguito deve fare quello che stai chiedendo. Ci sono alcuni requisiti:

    1. È necessario il module Microsoft ActiveDirectory Powershell. È incluso con RSAT7.
    2. È necessario aggiornare quanto segue per l'ambiente:
      1. $root – il PSDrive alla tua "root" OU. "Paese" nella tua domanda.
      2. $sourceOU – l'origine OU (nome, non DN) da cui copierai gli ACE.
      3. $sourceGroup – il gruppo (nome, non DN o dominio) elencato nell'ACL che $sourceGroup .
      4. $targetGroups – Hash di gruppi (nome, non DN o dominio) e OU (nome, non DN) per l'applicazione degli ACE.
    3. Questo copierà solo ACE esplicite, non ereditate. Forse dovrei guardare a camminare sull'tree per afferrare quelli ereditati?
    4. Ho dovuto eseguire questo come Domain Admin poiché stavo ricevendo errori "Accesso negato". Le mie delegazioni iniziali dell'OU erano probabilmente sospette però.

    Leggendo tutto questo, credo che dovrei semplicemente scrivere una function più generica, CopyOuAcl , e aggiornare questo quando è finito. Come è scritto ora, è completamente specifico per la tua domanda e l'ambiente.

     Import-Module ActiveDirectory $root = "AD:\OU=Country,DC=example,DC=com" $sourceOU = "City01" $sourceACL = Get-Acl $root.Replace("AD:\", "AD:\OU=$sourceOU,") $sourceGroup = "Limited_IT_Admins" # Hash for the new groups and their OUs $targetGroups = @{} $targetGroups.Add("Limited_IT_Admin_01", @("City01", "City02", "City03")) $targetGroups.Add("Limited_IT_Admin_02", @("City04", "City05")) $targetGroups.Add("Limited_IT_Admin_03", @("City06", "City07")) # Get the uniherited ACEs for the $sourceGroup from $sourceOU $sourceACEs = $sourceACL | Select-Object -ExpandProperty Access | Where-Object { $_.IdentityReference -match "$($sourceGroup)$" -and $_.IsInherited -eq $False } # Walk each targetGroup in the hash foreach ( $g in $targetGroups.GetEnumerator() ) { # Get the AD object for the targetGroup Write-Output $g.Name $group = Get-ADGroup $g.Name $identity = New-Object System.Security.Principal.SecurityIdentifier $group.SID # Could be multiple ACEs for the sourceGroup foreach ( $a in $sourceACEs ) { # From from the sourceACE for the ActiveDirectoryAccessRule constructor $adRights = $a.ActiveDirectoryRights $type = $a.AccessControlType $objectType = New-Object Guid $a.ObjectType $inheritanceType = $a.InheritanceType $inheritedObjectType = New-Object Guid $a.InheritedObjectType # Create the new "copy" of the ACE using the target group. http://msdn.microsoft.com/en-us/library/w72e8e69.aspx $ace = New-Object System.DirectoryServices.ActiveDirectoryAccessRule $identity, $adRights, $type, $objectType, $inheritanceType, $inheritedObjectType # Walk each city OU of the target group foreach ( $city in $g.Value ) { Write-Output "`t$city" # Set the $cityOU $cityOU = $root.Replace("AD:\", "AD:\OU=$city,") # Get the ACL for $cityOU $cityACL = Get-ACL $cityOU # Add it to the ACL $cityACL.AddAccessRule($ace) # Set the ACL back to the OU Set-ACL -AclObject $cityACL $cityOU } } } 
    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.