Получить состав локальной группы домена другого домена в том же лесу

Вопрос или проблема

Мой лес Active Directory состоит из нескольких дочерних доменов, включая:

  • Основной домен (main.contoso.local)
  • Тестовый домен (test.contoso.local)

Мой пользователь [email protected] является членом группы MAIN\Global, которая имеет область группы Global и находится в основном домене. Эта глобальная группа является членом группы TEST\DomainLocal, которая имеет область группы Domain Local и находится в тестовом домене.

[[email protected]]  --MemberOf-->  [MAIN\Global]  --MemberOf-->  [TEST\DomainLocal]
  

Если мой пользователь входит в систему на машине в тестовом домене, токен будет содержать SID TEST\DomainLocal. Это можно проверить с помощью whoami /groups в сессии пользователя.

Как администратор, как я могу получить эту информацию через CLI, не входя в систему как пользователь? Я пытался запросить глобальный каталог или использовать LDAP_MATCHING_RULE_IN_CHAIN (member:1.2.840.113556.1.4.1941), однако TEST\DomainLocal нигде не отображается.

Группы локального домена специально не реплицируются за пределами своего домена, включая глобальный каталог. Это сделано намеренно, и это причина существования этой области группы. Если вы хотите получить членство принципала в каждом домене, включая группы локального домена, вам нужно будет запрашивать каждый домен отдельно.

Или вы можете изменить область с группы локального домена на универсальную группу, которая может принимать участников из других доменов.

Или вы можете спроектировать так, чтобы универсальная группа из основного домена использовалась только и исключительно в группе локального домена в тестовом, чтобы вы могли видеть, членом каких DLG является пользователь, просто просматривая членства в основном.

Этот последний вариант наиболее близок к тому, как были изложены лучшие практики и экзамены по AD. Согласно этому обучению, пользователь из другого домена не должен быть прямым членом группы локального домена в любом домене; универсальные группы должны быть членами групп локального домена — но это уже довольно глубоко в нюансах. Все сводится к контролю области репликации и снижению объема и частоты репликаций. В современном мире пропускная способность и задержка значительно менее важны, и некоторые из этих практик стали устаревшими.

Ответ или решение

Для получения членства локальных групп домена другой доменной единицы (в данном случае, домена TEST) в рамках одной лесной структуры Active Directory, необходимо учесть особенности репликации и области действия групп.

Как указано в вопросе, локальные группы домена (Domain Local) не реплицируются вне своего домена, включая глобальный каталог. Это – проектное решение, которое обуславливает возможность члена группы в одном домене получать доступ к ресурсам в другом домене через локальные группы домена. Чтобы получить информацию о членстве в локальных группах, существует несколько подходов.

Способы решения:

  1. Поиск через PowerShell:
    Вы можете использовать PowerShell для выполнения запроса непосредственно к домену, в котором вы хотите получить информацию. Например, используя командлеты из модуля Active Directory, вы можете выполнить следующий скрипт:

    $user = "MAIN\User"  # имя пользователя
    $domainLocalGroup = "TEST\DomainLocal"  # имя локальной группы домена
    
    # Получаем SID пользователя
    $userSID = (Get-ADUser $user -Server "main.contoso.local").SID
    
    # Получаем локальную группу в TEST
    $localGroup = Get-ADGroup $domainLocalGroup -Server "test.contoso.local"
    
    # Проверяем, состоит ли глобальная группа из главного домена в локальной группе
    if ((Get-ADGroupMember $localGroup -Server "test.contoso.local" | Where-Object { $_.SID -eq $userSID })) {
       Write-Host "$user состоит в группе $localGroup."
    } else {
       Write-Host "$user не состоит в группе $localGroup."
    }
  2. Перепроектирование структуры групп:
    Если возможно, стоит рассмотреть ребрендинг локальных групп в универсальные (Universal Groups). Универсальные группы могут содержать участников из любого домена в лесу, что упрощает управление членством и доступом. Это требует изменений в архитектуре Active Directory, так как универсальные группы реплицируются во всех доменах леса.

  3. Стратегия использования универсальных групп:
    Подход, который близок к лучшим практикам Active Directory, заключается в использовании универсальных групп из домена MAIN, которые будут непосредственно членами доменной локальной группы в домене TEST. Это позволит упростить получение информации о членстве. Например, вы можете создать универсальную группу в домене MAIN и добавить в нее пользователей, которые должны иметь доступ к ресурсам в домене TEST, а затем сделать эту универсальную группу членом локальной группы в домене TEST.

Таким образом, вам необходимо использовать комбинацию инструментов PowerShell для получения информации Прямо из каждого домена, или пересмотреть структуру групп, чтобы закрепить использование универсальных групп для упрощения управления членством.

Оцените материал
Добавить комментарий

Капча загружается...