Как я могу найти "Schema-Id-Guid" класса Active Directory и "System-Id-Guid" атрибута с помощью PowerShell - PullRequest
0 голосов
/ 29 декабря 2018

Мне нужно создать несколько новых записей управления доступом (ACE), которые будут делегированы конкретным подразделениям Active Directory с помощью PowerShell.

Эти правила должны предоставлять / запрещать доступ к определенным атрибутам для «NT AUTHORITY \ SELF»."учетная запись пользователя на объекте" Компьютер ".

Я создаю ACE с использованием класса .NET System.DirectoryServices.ActiveDirectoryAccessRule. Конструктор, который мне требуется для создания этого объекта , нуждается в GUID как требуемого атрибута, так и класса.

Я могу создать это правило прямо сейчас, используя приведенный ниже код PowerShell, который яwrote:

# Get the security descriptor for the desired OU
$ouPath = "AD:\\OU=TestOU,DC=example,DC=com"
$acl = Get-Acl $ouPath

# Get the SID of the "NT AUTHORITY\SELF" user account
$account = [System.Security.Principal.NTAccount]::New("NT AUTHORITY", "SELF")
$accountSID = $account.Translate([System.Security.Principal.SecurityIdentifier])

# Property values for ActiveDirectoryAccessRule
$identity = [System.Security.Principal.IdentityReference]$accountSID
$adRights = [System.DirectoryServices.ActiveDirectoryRights]("ReadProperty, WriteProperty")
$type = [System.Security.AccessControl.AccessControlType]("Allow")
$objectType = [System.Guid]::New("bf9679d9-0de6-11d0-a285-00aa003049e2")
$inheritanceType = [System.DirectoryServices.ActiveDirectorySecurityInheritance]("Descendents")
$inheritedObjectType = [System.Guid]::New("bf967a86-0de6-11d0-a285-00aa003049e2")

# Create the new rule object
$ace = [System.DirectoryServices.ActiveDirectoryAccessRule]::New($identity, $adRights, $type, $objectType, $inheritanceType, $inheritedObjectType)

# Add the rule to the ACL
$acl.AddAccessRule($ace)

# Change the security descriptor
Set-Acl -AclObject $acl $ouPath

Приведенный выше пример кода позволяет выполнять чтение и запись для атрибута Network-Address в классе Computer.Ниже приведены ссылки на GUID:

Сетевой адрес: Идентификатор системы bf9679d9-0de6-11d0-a285-00aa003049e2

Компьютер: Schema-Id-Guid bf967a86-0de6-11d0-a285-00aa003049e2

Единственная проблема, с которой я сталкиваюсь, заключается в том, что мне приходится вручную искать GUID для обоихтребуемый Атрибут и Класс.

Итак, мой вопрос:

Кто-нибудь знает способ поиска этих GUID, используя только CN или Ldap-Display-Name?

1 Ответ

0 голосов
/ 31 декабря 2018

Ссылка на ответ предоставлена ​​ Тео .

Получить справочник свойства

Я скопирую / вставлю ответот Матиаса Р. Джессена:

Вы можете получить GUID атрибута из схемы:

  1. Запрос schemaNamingContext для объекта attributeSchema
  2. Фильтрв ldapDisplayName имя атрибута, отображаемое в GUI
  3. Получите значение атрибута schemaIDGUID и используйте его в ACE

Я буду использовать модуль RSAT ActiveDirectory для простоты, но выможет сделать это с любым клиентом ldap:

$attrSchemaParams = @{
    SearchBase = (Get-ADRootDSE).schemaNamingContext
    Filter = "ldapDisplayName -eq 'pwmEventLog' -and objectClass -eq 'attributeSchema'"
    Properties = 'schemaIDGUID'
}
$pwmEventLogSchema = Get-ADObject @attrSchemaParams

$pwmEventLogGUID = $pwmEventLogSchema.schemaIDGuid -as [guid]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...