Freigeben über


Festlegen der Standardsicherheitsstufe für Prozesse mit VBScript

Ein Skript kann die standardmäßigen WMI-Authentifizierungs- und Impersonierungseinstellungen verwenden. Das Skript benötigt jedoch möglicherweise eine Verbindung mit mehr Sicherheit oder kann eine Verbindung mit einem Namespace herstellen, der eine verschlüsselte Verbindung erfordert. Weitere Informationen finden Sie unter Festlegen von Namespacesicherheitsdeskriptoren und Anfordern einer verschlüsselten Verbindung zu einem Namespace.

Im einfachsten Fall kann ein Skript die Standardauthentifizierungs- und Identitätswechseleinstellungen verwenden. WMI wird normalerweise auf einem Host für gemeinsame Dienste ausgeführt und teilt die gleiche Authentifizierung wie andere Prozesse im Host. Wenn Sie den WMI-Prozess mit einer anderen Authentifizierungsebene ausführen möchten, führen Sie WMI mit dem Befehl "winmgmt " mit dem Switch "/standalonehost " aus, und legen Sie die Authentifizierungsstufe für WMI im Allgemeinen fest. Weitere Informationen finden Sie unter Verwalten von WMI-Sicherheits-.

Das folgende Skript verwendet Standardeinstellungen für Benutzerimitation und Authentifizierungsstufen.

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

Sie können auch einen Moniker in einem Aufruf von GetObject verwenden und die Standardsicherheitseinstellungen wie im folgenden Beispiel festlegen.

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

Weitere Informationen zum Festlegen unterschiedlicher Identitätswechsel- oder Authentifizierungsebenen in einem Skript oder zum Festlegen der Standardwerte für einen Computer finden Sie in den folgenden Themen:

Ändern der Standardauthentifizierungsanmeldeinformationen mit VBScript

Sie können die Authentifizierungsebene in einem Skript mithilfe einer moniker-Zeichenfolge und der SWbemLocator - und SWbemSecurity-Objekte ändern.

Die Authentifizierungsstufe muss entsprechend den Anforderungen des Zielbetriebssystems festgelegt werden, mit dem Sie eine Verbindung herstellen. Weitere Informationen finden Sie unter "Verbinden zwischen verschiedenen Betriebssystemen".

Das folgende VBScript-Codebeispiel zeigt, wie Sie die Authentifizierungsebene in einem Skript ändern, das die Freispeicherdaten von einem Remotecomputer namens "Server1" abruft.

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

Verwenden Sie in Skript-Moniker-Verbindungen mit WMI den kurzen Namen, der in der Spalte "Moniker-Name/Beschreibung" der folgenden Tabelle angezeigt wird. Im folgenden Skript wird beispielsweise die Authentifizierungsebene auf WbemAuthenticationLevelPktIntegrity festgelegt.

SetobjWMIService = GetObject( _
    "winmgmts:{authenticationLevel=pktPrivacy}!root\cimv2")

In der folgenden Tabelle sind die Authentifizierungsstufen aufgeführt, die Sie festlegen können. Diese Ebenen werden in Wbemdisp.tlb in der Enumeration WbemAuthenticationLevelEnum definiert.

Name/Wert BESCHREIBUNG
WbemAuthenticationLevelDefault
0
Moniker: Standard
WMI verwendet die Standardeinstellung für die Windows-Authentifizierung. Dies ist die empfohlene Konfiguration, die es WMI ermöglicht, auf die vom Datenbereitstellungsserver erforderliche Ebene zu verhandeln. Wenn der Namespace jedoch Verschlüsselung erfordert, verwenden Sie WbemAuthenticationLevelPktPrivacy.
WbemAuthentifizierungsstufeKeine
1
Moniker: Keine
Verwendet keine Authentifizierung.
WbemAuthenticationLevelConnect
2
Moniker: Verbinden
Authentifiziert die Anmeldeinformationen des Clients nur, wenn der Client eine Beziehung mit dem Server herstellt.
WbemAuthenticationLevelCall
3
Anruf
Authentifiziert sich nur am Anfang jedes Anrufs, wenn der Server die Anforderung empfängt.
WbemAuthenticationLevelPkt
4
Moniker: Pkt
Authentifiziert, dass alle empfangenen Daten vom erwarteten Client stammen.
WbemAuthenticationLevelPktIntegrity
5
Moniker: PktIntegrity
Authentifiziert und überprüft, ob keine der zwischen Client und Server übertragenen Daten geändert wurde.
WbemAuthenticationLevelPktPrivacy
6
Moniker: PktPrivacy
Authentifiziert alle vorherigen Identitätswechselebenen und verschlüsselt den Argumentwert jedes Remoteprozeduraufrufs. Verwenden Sie diese Einstellung, wenn der Namespace, mit dem Sie eine Verbindung herstellen, eine verschlüsselte Verbindung erfordert.

Um einen erfolgreichen Anruf zu ermitteln, überprüfen Sie den Rückgabewert, nachdem Sie die Authentifizierungsstufe geändert haben.

Da lokale Verbindungen beispielsweise immer über eine Authentifizierungsstufe von wbemAuthenticationLevelPktPrivacy verfügen, kann im folgenden Beispiel die Authentifizierungsstufe nicht festgelegt werden, da sie eine Verbindung mit dem lokalen Computer herstellt.

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate," _
    & "authenticationLevel=pktPrivacy}!" _
    & "\\" & strComputer & "\root\cimv2")

Ein Anbieter kann die Sicherheit für einen Namespace festlegen, sodass keine Daten zurückgegeben werden, es sei denn, Sie verwenden den Paketdatenschutz (PktPrivacy) in Ihrer Verbindung mit diesem Namespace. Dadurch wird sichergestellt, dass Daten verschlüsselt werden, während sie das Netzwerk durchquert. Wenn Sie versuchen, eine niedrigere Authentifizierungsstufe festzulegen, erhalten Sie eine Nachricht mit Zugriff verweigert. Weitere Informationen siehe Schützen von WMI-Namespaces.

Ändern der Standardidentitätswechselebenen mit VBScript

Wenn Sie Aufrufe an die Skript-API für WMI tätigen, ist es empfehlenswert, die Standardwerte zu verwenden, die WMI für die Impersonationsebene bereitstellt. Remote-Anrufe und einige Anbieter mit mehr als einem Netzwerkhop erfordern ein höheres Maß an Identitätswechsel, als WMI verwendet. Wenn die Identitätswechselstufe nicht ausreicht, könnte ein Anbieter eine Anfrage ablehnen oder unvollständige Informationen bereitstellen.

Wenn Sie die Identitätswechselebene weder in einem Moniker noch durch Festlegen von SWbemSecurity.ImpersonationLevel auf einem sicherbaren Objekt festlegen, dann setzen Sie die standardmäßige DCOM-Identitätswechselebene für das Betriebssystem. Die Imitationsebene muss entsprechend den Anforderungen des Zielbetriebssystems festgelegt werden, zu dem Sie eine Verbindung herstellen. Weitere Informationen finden Sie unter "Verbinden zwischen verschiedenen Betriebssystemen".

Im folgenden VBScript-Codebeispiel wird gezeigt, wie die Identitätswechselebene im selben Skript, das oben dargestellt wurde, geändert werden kann.

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

In der folgenden Tabelle sind die Authentifizierungsstufen in WbemImpersonationLevelEnum aufgeführt, die verwendet werden.

Name/Wert BESCHREIBUNG
wbemImpersonationLevelAnonymous
1
Moniker: Anonym
Blendet die Anmeldeinformationen des Aufrufers aus. Aufrufe an WMI können mit dieser Impersonierungsstufe fehlschlagen.
wbemImpersonationLevelIdentify
2
Moniker: Identifizieren
Ermöglicht Es Objekten, die Anmeldeinformationen des Aufrufers abzufragen. Bei diesem Impersonierungslevel können Aufrufe an WMI fehlschlagen.
wbemImpersonationLevelImpersonate
3
Moniker: Vortäuschung
Ermöglicht es Objekten, die Anmeldeinformationen des Aufrufers zu verwenden. Dies ist die empfohlene Identitätswechselebene für Skript-API für WMI-Aufrufe.
wbemImpersonationLevelDelegate
4
Moniker: Stellvertretung
Ermöglicht Objekten die Verwendung der Anmeldeinformationen des Aufrufers für andere Objekte. Dieser Identitätswechsel funktioniert mit der Skript-API für WMI-Aufrufe, kann jedoch ein unnötiges Sicherheitsrisiko darstellen.

Das folgende Beispiel zeigt, wie die Impersonierung in einer Moniker-Zeichenfolge eingestellt wird, wenn eine bestimmte Instanz von Win32_Process abgerufen wird.

Set object = GetObject("winmgmts:{impersonationLevel=impersonate}!root\cimv2:Win32_Process.Handle='0'")

Weitere Informationen finden Sie unter Erstellen einer WMI-Anwendung oder eines Skripts.

Festlegen der Standardidentitätswechselstufe mithilfe der Registrierung

Wenn Sie Zugriff auf die Registrierung haben, können Sie auch den Registrierungsschlüssel für die Standard-Identitätswechselebene festlegen. Dieser Schlüssel gibt an, welche Identitätswechselebene die Skript-API für WMI verwendet, sofern nicht anders angegeben. Der folgende Pfad identifiziert den Registrierungspfad.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WBEM\Scripting\Standard-Impersonierungsstufe

Standardmäßig ist der Registrierungsschlüssel auf 3 festgelegt, wodurch das Impersonate-Identitätswechselniveau festgelegt wird. Einige Anbieter können einen höheren Grad der Vertretung erfordern.

Zugreifen auf das SWbemSecurity-Objekt in VBScript

Die andere Möglichkeit, die Identitätswechselebene festzulegen, stammt aus dem SWbemSecurity-Sicherheitsobjekt , das als Security_ -Eigenschaft der Objekte SWbemServices, SWbemObjectSet, SWbemObjectSet, SWbemEventSource, SWbemObjectPath und SwbemLocator angezeigt wird.

WMI übergibt die Sicherheitseinstellung eines übergeordneten Objekts an die Nachfolger des ursprünglichen Objekts. Daher können Sie die Identitätswechselebene eines SWbemServices-Objekts festlegen, nachdem Sie sich bei WMI- und API-Aufrufen mit diesem Objekt oder Objekten angemeldet haben, die daraus erstellt wurden, z. B. Objekte vom Typ SWbemObject.

Herstellen einer Verbindung mit WMI auf einem Remotecomputer

Absicherung von Scripting-Clients