Udostępnij za pośrednictwem


Delegowanie za pomocą usługi WMI

Po uruchomieniu skryptu na systemie lokalnym, który pobiera dane z systemu zdalnego, WMI przekazuje Twoje poświadczenia dostawcy danych na systemie zdalnym. Wymaga to tylko poziomu personifikacji Personifikuj, ponieważ wymagany jest tylko jeden przeskok sieciowy. Jednakże, jeśli skrypt łączy się z WMI na systemie zdalnym i próbuje otworzyć plik dziennika na dodatkowym systemie zdalnym, to skrypt zakończy się niepowodzeniem, chyba że poziom podszywania się jest Deleguj. Poziom impersonacji jest wymagany przez dowolną operację, która obejmuje więcej niż jeden przeskok sieciowy. Aby uzyskać więcej informacji na temat zabezpieczeń DCOM w usłudze WMI, zobacz Ustawianie zabezpieczeń procesu aplikacji klienckiej. Aby uzyskać więcej informacji na temat połączenia za pośrednictwem jednego skoku sieciowego między dwoma komputerami, patrz Łączenie z WMI na zdalnym komputerze.

Aby użyć delegowania do nawiązania połączenia z komputerem za pośrednictwem innego komputera

  1. Włącz delegowanie w usłudze Active Directory (Użytkownicy i komputery Active Directory w Panelu sterowania Zadania administracyjne) na kontrolerze domeny. Konto w systemie zdalnym musi być oznaczone jako Zaufane dla delegowania, a konto w systemie lokalnym nie może być oznaczone jako Konto jest poufne i nie można go delegować. system lokalny, system zdalny i kontroler domeny muszą należeć do tej samej domeny lub w zaufanych domenach.

    Uwaga Używanie delegacji stanowi zagrożenie bezpieczeństwa, ponieważ daje procesom, nad którymi nie masz bezpośredniej kontroli, możliwość korzystania z twoich poświadczeń.

  2. Zmodyfikuj kod w następujący sposób, aby wskazać, że chcesz użyć delegowania.

    programu PowerShell

    Ustaw parametr -Impersonacja w poleceniu cmdlet usługi WMI na Delegowanie.

    VBScript

    Ustaw parametr impersonationLevel na Delegate w wywołaniu SWbemLocator.ConnectServer lub na Delegatew łańcuchu moniker. Można również ustawić personifikację w obiekcie SWbemSecurity.

    C++

    Ustaw parametr poziomu personifikacji na RPC_C_IMP_LEVEL_DELEGATE w wywołaniu CoInitializeSecurity lub CoSetProxyBlanket. Aby uzyskać więcej informacji na temat tego, kiedy należy wykonać te wywołania, zobacz Inicjowanie modelu COM dla aplikacji WMI.

    Aby przekazać tożsamość klienta do zdalnych serwerów COM w języku C++, skonfiguruj maskowanie w ramach wywołania CoSetProxyBlanket. Aby uzyskać więcej informacji, sprawdź Cloaking.

Przykłady

Poniższy przykład kodu przedstawia ciąg moniker, który ustawia personifikację na Delegate. Należy pamiętać, że autoryzacja musi być ustawiona na Kerberos.

set objWMIServices = Getobject("winmgmts:{impersonationLevel=Delegate,authority=kerberos:MyDomain\Computer_B}!\\ComputerB\Root\CIMv2")

Poniższy przykład kodu pokazuje, jak ustawić personifikację na Delegate (wartość 4) przy użyciu SWbemLocator.ConnectServer.

Set objLocator = CreateObject("WbemScripting.SWbemLocator")
Set objWMIService = objLocator.ConnectServer(Computer_B, _
                                             "Root\CIMv2", _
                                             AdminAccount, _
                                             MyPassword, _
                                             "kerberos:Domain\Computer_B")
objWMIService.Security_.ImpersonationLevel = 4

zabezpieczanie zdalnego połączenia WMI

zdalne tworzenie procesów za pomocą narzędzia WMI