2017-01-30 22 views
-1

Может кто-то пожалуйста, помогите мне следующейКак я список разрешений на Active Directory объекта компьютера для «ПРОВЕРЯЕМЫХ записей для обслуживания основного имени» и «служба записи имени принципала»

Я пытаюсь сделать что-то очень похожее на этот пост

Powershell: How do you set the Read/Write Service Principal Name AD Permissions?

в принципе мне не нужно, чтобы установить права/изменить, а права чтения

на объекте компьютера в AD (Active Directory) вы «Разрешить» пользователь, группа или Comp Uter объект (либо тот же компьютер или другой объект компьютера) «Запись» право на следующее свойство/атрибут объекта компьютера

Удостоверенная записи для обслуживания основного имени и службы записи имени принципала

Итак, скажем, на объекте Computer01 сервера user, домен Domain \ Fred «разрешен» для «Validated write to service name name», а также «Allowed» «имя участника службы записи»

И у Павла, и у Джона и Сьюзан все такие же права, как Fred

теперь позволяет сказать, у меня есть 500 компьютеров в AD домен с комбинацией вышеуказанных прав

Я хочу, чтобы получить объекты компьютера (я знаю, как сделать это с помощью PowerShell или ADSI, .NET)

то я хочу указать, кто имеет вышеуказанные права на эти компьютерные объекты (и это бит, на который я застрял), как список прав (скорее, проверка каждого пользователя, группы и компьютера по одному, чтобы увидеть если у них есть эти права или нет), чтобы узнать, кто может установить эти значения, связанные с SPN, для компьютеров моего домена.

Большое спасибо заранее __AAnotheruser

ответ

1

Чтобы выяснить, какие записей управления доступом (АСЕ) предоставить права о которых вы говорите, сначала вы должны знать, что OBJECTTYPE GUID, чтобы быть в поиске. Свойство servicePrincipalName имеет идентификатор GUID f3a64788-5306-11d1-a9c5-0000f80367c1. Проверенные записи делятся своим GUID своего свойства, поэтому мы все еще просто ищем его.Поскольку SPN является членом «общественной информации» набор свойств, вам необходимо отметить это GUID, тоже: e48d0154-bcf8-11d1-8702-00c04fb96050

Итак, вы ищете АСЕ, которые удовлетворяют одному из следующих условий:

  • AccessMask из WriteProperty и либо не OBJECTTYPE или пустой GUID типа объекта, поскольку это будет означать ACE дает возможность писать все свойства и свойство устанавливает
  • AccessMask из WriteProperty и ObjectType GUID из f3a64788-5306- 11d1-a9c5-0000f80367c1
  • AccessMask из WriteProperty и ObjectType идентификатор GUID из e48d0154-bcf8-11d1-8702-00c04fb96050
  • AccessMask Самости (что означает проверенную запись) и в ObjectType GUID из f3a64788-5306-11d1-a9c5-0000f80367c1

Кроме того, вместо WriteProperty может использоваться «GenericWrite». Может быть, что-то вроде этого в PowerShell:

$ServicePrincipalNameProperty = [guid] 'f3a64788-5306-11d1-a9c5-0000f80367c1' 
$PublicInformationPropertySet = [guid] 'e48d0154-bcf8-11d1-8702-00c04fb96050' 
$ValidatedWrite = [System.DirectoryServices.ActiveDirectoryRights]::Self 
$WriteProperty = [System.DirectoryServices.ActiveDirectoryRights]::WriteProperty 
$GenericWrite = [System.DirectoryServices.ActiveDirectoryRights]::GenericWrite 

Get-ADComputer ComputerName -Properties ntSecurityDescriptor | ForEach-Object { 
    $SD = $_.ntSecurityDescriptor 

    $SD.Access | where { 
     # Look for the access rights that would grant write capabilities 
     ($_.ActiveDirectoryRights -band $ValidatedWrite) -eq $ValidatedWrite -or 
     ($_.ActiveDirectoryRights -band $WriteProperty) -eq $WriteProperty -or 
     ($_.ActiveDirectoryRights -band $GenericWrite) -eq $GenericWrite 
    } | where ObjectType -in $null, ([guid]::Empty), $ServicePrincipalNameProperty, $PublicInformationPropertySet 
} 

Я думаю, что будет работать, чтобы показать вам АСЕ вы заинтересованы в Если вы заботитесь только о IdentityReference, вы можете вытащить, что и брось остальное прочь.. Если вы изменили вызов Get-ADComputer для использования -Filter, это должно работать более чем на одном компьютере (вы можете использовать Add-Member, чтобы добавить имя samAccountName для каждого ACE, чтобы вы могли рассказать об этом отдельно).

еще одно: это не принимать наследство и распространения флагов или InheritedObjectTypes во внимание, так что вы можете увидеть некоторые АСЕ, которые не будут технически предоставить права, которые вы ищете ...