Поделиться через


Делегирование с помощью WMI

При запуске скрипта в локальной системе, получающей данные из удаленной системы, WMI предоставляет учетные данные поставщику данных удаленной системы. Для этого требуется только уровень олицетворения олицетворения, так как требуется только один сетевой прыжк. Однако если скрипт подключается к WMI в удаленной системе и пытается открыть файл журнала в дополнительной удаленной системе, скрипт завершается ошибкой, если уровень олицетворения не является делегатом. Уровень олицетворения делегата требуется для любой операции, которая включает несколько сетевых прыжков. Дополнительные сведения о безопасности DCOM в WMI см. в разделе "Настройка безопасности процесса клиентского приложения". Дополнительные сведения о подключении одного сетевого прыжка между двумя компьютерами см. в разделе "Подключение к WMI на удаленном компьютере".

Использование делегирования для подключения к компьютеру через другой компьютер

  1. Включите делегирование в Active Directory (Пользователи и компьютеры Active Directory в панель управления административных задачах) на контроллере домена. Учетная запись удаленной системы должна быть помечена как доверенной для делегирования , а учетная запись в локальной системе не должна быть помечена как конфиденциальная и не может быть делегирована. локальная система, удаленная система и контроллер домена должны быть членами одного домена или доверенных доменов.

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

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

    PowerShell

    Задайте для параметра -Олицетворение в командлете WMI значение "Делегировать".

    VBScript

    Задайте параметр impersonationLevel делегатом в вызове SWbemLocator.ConnectServer или Делегатв строке моникера. Вы также можете задать олицетворение в объекте SWbemSecurity.

    C++

    Задайте для параметра уровня олицетворения значение RPC_C_IMP_LEVEL_DELEGATE в вызове CoInitializeSecurity или CoSetProxyBlanket. Дополнительные сведения о выполнении этих вызовов см. в разделе Инициализация COM для приложения WMI.

    Чтобы передать удостоверение клиента на удаленные COM-серверы в C++, установите маскировку в вызове CoSetProxyBlanket. Дополнительные сведения см. в разделе о маскировке.

Примеры

В следующем примере кода показана моникерная строка, которая задает олицетворение делегату. Помните, что центр должен иметь значение Kerberos.

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

В следующем примере кода показано, как задать олицетворение делегату (значение 4) с помощью 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

Защита удаленного подключения WMI

Удаленное создание процессов с помощью WMI