Как получить список разрешений для объекта компьютера Active Directory для "Проверенная запись в имя участника службы" и "Имя участника службы записи"
Может кто-нибудь, пожалуйста, помогите мне со следующим
Я пытаюсь сделать что-то очень похожее на этот пост
Powershell: как установить разрешения AD для имени участника службы чтения / записи?
В принципе мне не нужно устанавливать / изменять права, а права на чтение
На объекте "Компьютер" в AD (Active Directory) вы "разрешаете" объекту "Пользователь", "Группа" или "Компьютер" (тому же компьютеру или другому объекту компьютера) право "Запись" на следующее свойство / атрибут объекта "компьютер"
Проверенная запись в имя участника службы и запись имени участника службы
Итак, допустим, что на объекте "Компьютер" Server01 пользователь "Домен \ Фред" имеет "Разрешено" для "Проверенная запись в имя субъекта службы", а также "Разрешено" "Имя субъекта службы записи"
И Пол, Джон и Сьюзан имеют те же права, что и Фред
Теперь допустим, у меня есть 500 компьютеров в домене AD с комбинацией вышеуказанных прав
Я хочу получить компьютерные объекты (я знаю, как это сделать с помощью PowerShell или ADSI, .NET)
затем я хочу перечислить, кто обладает вышеуказанными правами на эти компьютерные объекты (и это бит, на котором я застрял), как перечислить права (точнее, проверяя каждого пользователя, группу и компьютер по одному, чтобы увидеть, если они иметь эти права или нет), чтобы узнать, кто может устанавливать эти значения, связанные с SPN, для компьютеров в моем домене.
Большое спасибо заранее __Anotheruser
1 ответ
Чтобы выяснить, какие записи контроля доступа (ACE) предоставляют права, о которых вы говорите, сначала вам нужно знать GUID ObjectType, который нужно искать. Свойство servicePrincipalName имеет GUID f3a64788-5306-11d1-a9c5-0000f80367c1
, Проверенные записи используют GUID своего свойства, поэтому мы все еще ищем его. Поскольку имя участника-службы является членом набора свойств "Публичная информация", вы должны также отметить, что это GUID: e48d0154-bcf8-11d1-8702-00c04fb96050
Итак, вы ищете ACE, которые удовлетворяют одному из следующих условий:
- AccessMask для WriteProperty и без ObjectType или с пустым типом объекта GUID, так как это означает, что ACE предоставляет возможность записи всех свойств и наборов свойств
- AccessMask WriteProperty и GUID ObjectType f3a64788-5306-11d1-a9c5-0000f80367c1
- AccessMask WriteProperty и GUID ObjectType для e48d0154-bcf8-11d1-8702-00c04fb96050
- AccessMask of Self (что означает проверенную запись) и GUID ObjectType для f3a64788-5306-11d1-a9c5-0000f80367c1
Кроме того, GenericWrite может использоваться вместо WriteProperty выше. Может быть, что-то подобное в 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
}
Я думаю, что это сработало бы, чтобы показать вам интересующие вас ACE. Если вы заботитесь только о IdentityReference, вы можете извлечь это и выбросить все остальное. Если вы измените вызов Get-ADComputer на использование -Filter, это должно сработать для более чем одного компьютера (вы можете использовать Add-Member, чтобы добавить samAccountName к каждому ACE, чтобы вы могли различить их).
Еще одна вещь: это не учитывает флаги наследования и распространения или InheritedObjectTypes, поэтому вы можете увидеть некоторые ACE, которые технически не предоставят права, которые вы ищете...