Установка уровня безопасности процесса по умолчанию с помощью VBScript
Скрипт может использовать параметры проверки подлинности WMI и олицетворения по умолчанию. Однако скрипту может потребоваться подключение с большей безопасностью или подключение к пространству имен, требующее зашифрованного подключения. Дополнительные сведения см. в разделах Настройка дескрипторов безопасности среды имен и Требование зашифрованного подключения к пространству имен.
В простейшем случае скрипт может использовать параметры проверки подлинности и олицетворения по умолчанию. WMI обычно выполняется на общем узле службы и использует ту же проверку подлинности, что и другие процессы на узле. Если вы хотите запустить процесс WMI с другим уровнем проверки подлинности, запустите WMI с помощью команды winmgmt с параметром /standalonehost и задайте уровень проверки подлинности для WMI в целом. Дополнительные сведения см. в разделе Поддержание безопасности WMI.
В следующем сценарии используются параметры по умолчанию для уровней олицетворения и проверки подлинности.
strComputer = "."
Set objServices = GetObject("winmgmts:\\" _
& strComputer & "\root\CIMV2")
set objProcessSet = objServices.ExecQuery _
("SELECT Name FROM Win32_Process",,48)
For Each Process in objProcessSet
WScript.Echo Process.Name
Next
Вы также можете использовать моникер в вызове GetObject и задать параметры безопасности по умолчанию, как показано в следующем примере.
strComputer = "."
Set objServices = GetObject( _
"winmgmts:{impersonationLevel=impersonate," _
& "authenticationLevel=pktPrivacy}!root/cimv2")
set objProcessSet = objServices.ExecQuery _
("SELECT Name FROM Win32_Process",,48)
For Each Process in objProcessSet
WScript.Echo Process.Name
Next
Дополнительные сведения о настройке различных уровней олицетворения или проверки подлинности в скрипте, а также о настройке значений по умолчанию для компьютера см. в следующих разделах:
- Изменение учетных данных проверки подлинности по умолчанию с помощью VBScript
- Изменение параметров олицетворения по умолчанию с помощью VBScript
- Установка уровня олицетворения по умолчанию с помощью реестра
- Доступ к объекту SWbemSecurity в VBScript
- SWbemSecurity
Изменение учетных данных проверки подлинности по умолчанию с помощью VBScript
Вы можете изменить уровень проверки подлинности в скрипте с помощью строки моникера , а также объектов SWbemLocator и SWbemSecurity .
Уровень проверки подлинности должен быть задан в соответствии с требованиями целевой операционной системы, к которой выполняется подключение. Дополнительные сведения см. в разделе Подключение между разными операционными системами.
В следующем примере кода VBScript показано, как изменить уровень проверки подлинности в скрипте, который получает данные о свободном пространстве с удаленного компьютера с именем Server1.
strComputer = "Server1"
Set objWMIService = GetObject("winmgmts:{authenticationLevel=Pkt}!\\" _
& strComputer & "\root\cimv2")
Set colDisks = objWMIService.ExecQuery ("Select * from Win32_LogicalDisk")
For each objDisk in colDisks
Wscript.Echo "DeviceID: " & vbTab & objDisk.DeviceID & vbNewLine & _
"FreeSpace: " & vbTab & objDisk.FreeSpace
NextstrComputer = "."
Set objServices = GetObject( "winmgmts:{impersonationLevel=impersonate," _
& "authenticationLevel=pktPrivacy}!root/cimv2")
Set objProcessSet = objServices.ExecQuery("SELECT Name FROM Win32_Process",,48)
For Each Process in objProcessSet
WScript.Echo Process.Name
Next
Next
В подключениях моникера скрипта к WMI используйте короткое имя, указанное в столбце "Имя моникера/описание" таблицы ниже. Например, в следующем сценарии для уровня проверки подлинности задано значение WbemAuthenticationLevelPktIntegrity.
SetobjWMIService = GetObject( _
"winmgmts:{authenticationLevel=pktPrivacy}!root\cimv2")
В следующей таблице перечислены уровни проверки подлинности, которые можно задать. Эти уровни определяются в Wbemdisp.tlb в перечислении WbemAuthenticationLevelEnum.
Имя/значение | Описание |
---|---|
WbemAuthenticationLevelDefault 0 |
Моникер: по умолчанию WMI использует параметр проверка подлинности Windows по умолчанию. Это рекомендуемый параметр, позволяющий WMI согласовывать уровень, требуемый сервером, возвращающим данные. Однако если пространство имен требует шифрования, используйте WbemAuthenticationLevelPktPrivacy. |
WbemAuthenticationLevelNone 1 |
Моникер: Нет Не использует проверку подлинности. |
WbemAuthenticationLevelConnect 2 |
Моникер: Connect Проверяет подлинность учетных данных клиента только в том случае, если клиент устанавливает связь с сервером. |
WbemAuthenticationLevelCall 3 |
Вызов Выполняет проверку подлинности только в начале каждого вызова, когда сервер получает запрос. |
WbemAuthenticationLevelPkt 4 |
Моникер: Pkt Проверяет подлинность того, что все данные получены от ожидаемого клиента. |
WbemAuthenticationLevelPktIntegrity 5 |
Моникер: PktIntegrity Выполняет проверку подлинности и проверяет, не были ли изменены данные, передаваемые между клиентом и сервером. |
WbemAuthenticationLevelPktPrivacy 6 |
Моникер: PktPrivacy Проверяет подлинность всех предыдущих уровней олицетворения и шифрует значение аргумента каждого удаленного вызова процедуры. Используйте этот параметр, если для пространства имен, к которому выполняется подключение, требуется зашифрованное подключение. |
Чтобы определить успешный вызов, проверка возвращаемое значение после изменения уровня проверки подлинности.
Например, так как локальные подключения всегда имеют уровень проверки подлинности wbemAuthenticationLevelPktPrivacy, в следующем примере не удается задать уровень проверки подлинности, так как он подключается к локальному компьютеру.
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate," _
& "authenticationLevel=pktPrivacy}!" _
& "\\" & strComputer & "\root\cimv2")
Поставщик может задать безопасность в пространстве имен, чтобы данные не возвращались, если вы не используете конфиденциальность пакетов (PktPrivacy) в подключении к пространству имен. Это гарантирует, что данные шифруются по мере их пересечения по сети. При попытке установить более низкий уровень проверки подлинности вы получите сообщение об отказе в доступе. Дополнительные сведения см. в разделе Защита пространств имен WMI.
Изменение уровней олицетворения по умолчанию с помощью VBScript
При вызове API скриптов для WMI рекомендуется использовать значения по умолчанию, которые WMI предоставляет для уровня олицетворения. Для удаленных вызовов и некоторых поставщиков с несколькими сетевыми прыжками требуется более высокий уровень олицетворения, чем wMI. Если уровень олицетворения недостаточно, поставщик может отклонить запрос или предоставить неполные сведения.
Если уровень олицетворения не задан ни в моникере, ни путем задания SWbemSecurity.ImpersonationLevel для защищаемого объекта, задайте уровень олицетворения DCOM по умолчанию для операционной системы. Уровень олицетворения должен быть задан в соответствии с требованиями целевой операционной системы, к которой выполняется подключение. Дополнительные сведения см. в разделе Подключение между разными операционными системами.
В следующем примере кода VBScript показано изменение уровня олицетворения в том же скрипте, который показан выше.
strComputer = "Server1"
Set objWMIService = GetObject("winmgmts:{impersonationLevel=Impersonate}!\\" _
& strComputer & "\root\cimv2")
Set colDisks = objWMIService.ExecQuery("Select * from Win32_LogicalDisk")
For each objDisk in colDisks
Wscript.Echo "DeviceID: " & vbTab & objDisk.DeviceID & vbNewLine & _
"FreeSpace: " & vbTab & objDisk.FreeSpace
Next
В следующей таблице перечислены уровни проверки подлинности в WbemImpersonationLevelEnum , которые используются.
Имя/значение | Описание |
---|---|
wbemImpersonationLevelAnonymous 1 |
Моникер: Анонимный Скрывает учетные данные вызывающей стороны. При этом уровне олицетворения во время вызовов, адресованных WMI, возможны сбои. |
wbemImpersonationLevelIdentify 2 |
Моникер: Определение позволяет объектам запрашивать учетные данные вызывающей стороны. При этом уровне олицетворения во время вызовов, адресованных WMI, возможны сбои. |
wbemImpersonationLevelImpersonate 3 |
Моникер: олицетворения позволяет объектам использовать учетные данные вызывающей стороны. Это рекомендуемый уровень олицетворения для API скриптов для вызовов WMI. |
wbemImpersonationLevelDelegate 4 |
Моникер: Делегат Позволяет объектам разрешать другим объектам использовать учетные данные вызывающей стороны. Это олицетворение будет работать с API скриптов для вызовов WMI, но может представлять ненужный риск безопасности. |
В следующем примере показано, как задать олицетворение в строке моникера при получении определенного экземпляра Win32_Process.
Set object = GetObject("winmgmts:{impersonationLevel=impersonate}!root\cimv2:Win32_Process.Handle='0'")
Дополнительные сведения см. в статье Создание приложения или скрипта WMI.
Установка уровня олицетворения по умолчанию с помощью реестра
Если у вас есть доступ к реестру, можно также задать раздел реестра на уровне олицетворения по умолчанию. Этот ключ указывает, какой уровень олицетворения использует API скриптов для WMI, если не указано иное. Следующий путь идентифицирует путь к реестру.
HKEY_LOCAL_MACHINE\ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ\Microsoft\WBEM\Сценариев\Уровень олицетворения по умолчанию
По умолчанию для раздела реестра задано значение 3, указывающее уровень олицетворения олицетворение. Для некоторых поставщиков может потребоваться более высокий уровень олицетворения.
Доступ к объекту SWbemSecurity в VBScript
Уровень олицетворения также можно задать из объекта безопасности SWbemSecurity , который отображается как свойство Security_ объектов SWbemServices, SWbemObject, SWbemObjectSet, SWbemEventSource, SWbemObjectPath и SwbemLocator .
WMI передает параметр безопасности родительского объекта потомкам исходного объекта. Таким образом, можно задать уровень олицетворения объекта SWbemServices после входа в WMI и вызовы API с помощью этого объекта или объектов, созданных из него, таких как объекты типа SWbemObject.