web-dev-qa-db-ja.com

$ Groupに他のドメインのプリンシパルが含まれている場合、Get-ADGroupMember $ 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

コマンドレットが特定のDCを対象とするように-server $DCパラメーターを指定してみました。次に、セキュリティログをチェックしますDC=エラーを再現し、関連するセキュリティエラーの監査を行わないためservices\NTDS\DiagnosticsキーのすべてのDiagnosticsレジストリエントリを調べたところ、ディレクトリサービスのログには何も表示されません。

MyGroupから他のドメインにあるグループメンバーを削除した場合、コマンドレットは問題なく機能します。

興味深いことに、このコマンドをローカルでDC自体で実行すると機能します。ただし、同じユーザーアカウントを使用して、メンバーサーバーからリモートでコマンドを実行すると、 Domain Admin、)失敗します。

何が間違っているのでしょうか?

6
Ryan Ries

Get-ADGroupMemberなどのActive Directory Powershellコマンドレットは、Active Directory Webサービス(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.............
.........

チケットフラグフィールドに注意を向けます。何かが欠けています。このチケットは転送可能ではありません

チケットを転送できないのはなぜですか?

delegation

私はそのチェックボックスをオフにし、klist purgeでKerberosチケットをフラッシュします。新しいTGTがない場合は、それを取得する必要があるあらゆるネットワークアクティビティを実行して、新しいTGTを取得します(gpupdateは良い例です。)TGTをもう一度検査すると、転送可能フラグが含まれていることがわかります。

これで、Powershellコマンドレットがメンバーサーバーから期待どおりに動作します。

グループに別のドメインのセキュリティプリンシパル(ユーザーまたはグループ)が含まれている場合、追跡が必要な参照が返されます。その紹介を追跡するために、ADWSは元の呼び出しを行ったユーザーを偽装する必要があります。そのユーザーアカウントでKerberos委任が無効になっている場合、偽装/委任は発生しません。

10
Ryan Ries