Get-ADGroupMember $Group завершается ошибкой, когда $ Group содержит участников из других доменов

Я заметил, что когда я использую Powershell для получения членства в группе в группе безопасности домена Active Directory, командлет Powershell Get-ADGroupMember $Group не удается с сообщением об ошибке:

PS C:\> get-adgroupmember MyGroup
get-adgroupmember : An operations error occurred
At line:1 char:1
+ get-adgroupmember MyGroup
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (MyGroup:ADGroup) [Get-ADGroupMember], ADException
    + FullyQualifiedErrorId : ActiveDirectoryServer:8224,Microsoft.ActiveDirectory.Management.Commands.GetADGroupMember

Я попытался указать -server $DC параметр, чтобы командлет предназначался для определенного контроллера домена, а затем я проверяю журналы безопасности на этом контроллере, поскольку я воспроизводю ошибку, и соответствующие проверки безопасности не генерируются. Я включил все записи реестра диагностики в services\NTDS\Diagnostics ключ и это не производит ничего интересного в журналах службы каталогов либо.

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

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

Есть идеи, что случилось?

1 ответ

Решение

Командлеты Powershell Active Directory, такие как Get-ADGroupMember использовать веб-службы Active Directory (ADWS).

Заявление, такое как

"Это работает нормально, когда я запускаю команду локально на сервере, но не работает, когда я запускаю ее с удаленного сервера"

часто это красный флаг, указывающий на то, что основной проблемой является делегирование Kerberos.

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

Итак, давайте посмотрим на мой билет на выдачу билетов Kerberos (TGT):

C:\> klist tgt

Current LogonId is 0:0x95ec6

Cached TGT:

ServiceName        : krbtgt
TargetName (SPN)   : krbtgt
ClientName         : Administrator
DomainName         : FABTOSO.COM
TargetDomainName   : FABTOSO.COM
AltTargetDomainName: FABTOSO.COM
Ticket Flags       : 0xe10000 -> renewable initial pre_authent name_canonicalize
Session Key        : KeyType 0x12 - AES-256-CTS-HMAC-SHA1-96
                   : KeyLength 32 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00
StartTime          : 4/21/2016 18:42:34 (local)
EndTime            : 4/22/2016 4:42:34 (local)
RenewUntil         : 4/28/2016 18:42:34 (local)
TimeSkew           :  + 0:00 minute(s)
EncodedTicket      : (size: 1109)
0000  61 82 04 51 30 82 04 4d:a0 03 02 01 05 a1 0d 1b  a..Q0..M........
0010  0b 46 41 42 54 4f 53 4f:2e 43 4f 4d a2 20 30 1e  .FABTOSO.COM. 0.
0020  a0 03 02 01 02 a1 17 30:15 1b 06 6b 72 62 74 67  .......0...krbtg
0030  74 1b 0b 46 41 42 54 4f:53 4f 2e 43 4f 4d a3 82  t..FABTOSO.COM..
0040  04 13 30 82 04 0f a0 03:02 01 12 a1 03 02 01 02  ..0.............
.........

Обратите свое внимание на поле Ticket Flags. Чего-то не хватает. Этот билет не подлежит пересылке.

Почему билет не подлежит пересылке?

Я снимаю этот флажок, сбрасываю свои билеты Kerberos klist purge получить новый tgt, выполнив любую сетевую активность, которая требует получения нового tgt, если у меня его еще нет, (gpupdate хороший пример,) еще раз проверьте TGT, и я заметил, что теперь он включает флаг пересылки.

Теперь командлет Powershell работает должным образом с рядового сервера.

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

Это поведение изменилось с последними обновлениями безопасности Windows Server.

По умолчанию теперь по умолчанию отключено делегирование TGT через доверительные отношения лесов. Из-за этого Get-ADGroupMember завершится ошибкой в ​​группах с участниками внешней безопасности между лесами, пока Microsoft не решит проблему. А пока можно использовать следующее решение: Get-ADGroup -Properties member

Другие вопросы по тегам