如何我列出在Active Directory计算机对象的权限为“已验证写入服务主体名称”和“写入服务主体名称为”
能有人帮我用下面的如何我列出在Active Directory计算机对象的权限为“已验证写入服务主体名称”和“写入服务主体名称为”
我试图做一些非常相似这个帖子
Powershell: How do you set the Read/Write Service Principal Name AD Permissions?
基本上我并不需要设置/更改的权利,而是读权限
上的计算机对象在AD(Active Directory)中你“允许”用户,组或比较uter对象(无论是在相同的计算机或另一计算机对象)“烧录”右到计算机对象的下列属性/属性
已验证写入到服务主体名和写入服务主体名
因此,让我们在计算机对象Server01上说,用户Domain \ Fred是'允许'到'验证写入服务主体名称'还有'允许'写入服务主体名称
而保罗,约翰和苏珊都有与Fred相同的权利
现在可以说我有在AD域500台计算机与上述权利的组合
我想要得到的计算机对象(我知道如何使用PowerShell或ADSI,.NET做到这一点)
那么我想列出谁拥有这些计算机对象的上述权利(并且这是我卡住的位)如何列出列出权利(而不是每次检查每个用户,组和计算机以查看如果他们拥有这些权利),查看谁可以为我的域中的计算机设置这些SPN相关值。
在此先感谢 __AAnotheruser
非常要弄清楚哪些访问控制项(ACE)授予你在谈论的权利,首先你需要知道的对象类型的GUID是在寻找。 servicePrincipalName属性的GUID为f3a64788-5306-11d1-a9c5-0000f80367c1
。已验证的写入共享其属性的GUID,所以我们仍然只是在寻找一个。由于SPN是“公共信息”属性组中的一员,你需要注意它的GUID,也:e48d0154-bcf8-11d1-8702-00c04fb96050
所以,你要寻找的是满足下列条件之一的ACE:
- 写属性的AccessMask和要么没有对象类型或空GUID 对象类型,因为这将意味着所述ACE授予写 所有性质的能力和属性设置
- AccessMask写属性的和 f3a64788-5306-的对象类型GUID 11d1-a9c5-0000f80367c1
- 写属性的AccessMask和 e48d0154-bcf8-11d1-8702-00c04fb96050
- 自AccessMask(这意味着验证写入)和一个对象类型 的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在技术上不会授予你正在寻找的权利......