Share via


Aufgabensicherheitshärtung

Die Verwendung des Features zur Sicherheitshärtung von Tasks ermöglicht Es Aufgabenbesitzern, ihre Aufgaben mit minimal erforderlichen Berechtigungen auszuführen. Beachten Sie, dass dieses Feature standardmäßig aktiviert ist und Aufgabenbesitzer weitere Anpassungen vornehmen können, indem sie den Sicherheits-ID-Typ des Vorgangsprozesstokens und das Array der erforderlichen Berechtigungen verwenden.

Task Process Token SID Type and Task Required Privileges Array

Die Angabe von ProcessTokenSidType auf Aufgabendefinitionsebene ermöglicht es Aufgabenbesitzern, einen Aufgabenprozess anzufordern, der mit dem SID-Typ "none" oder dem SID-Typ "unrestricted" ausgeführt wird. Wenn das Feld in der Aufgabendefinition vorhanden ist, stellt die Überprüfung sicher, dass der Task UserId den Namen oder die entsprechende SID-Zeichenfolge für eines der integrierten Dienstkonten des Betriebssystems enthält: "NETWORK SERVICE" oder "LOCAL SERVICE".

Der SID-Typ "none" bedeutet, dass die Aufgabe in einem Prozess ausgeführt wird, der keine Prozesstoken-SID enthält (es werden keine Änderungen an der Liste der Prozesstokengruppen vorgenommen). Die Aufgabenprinzipalkonto-SID (LocalService/NetworkService) hat in diesem Fall Vollzugriff auf das Prozesstoken.

Der SID-Typ "unrestricted" bedeutet, dass eine Aufgaben-SID vom vollständigen Aufgabenpfad abgeleitet und der Liste der Prozesstokengruppen hinzugefügt wird. Beispielsweise wird die Aufgaben-SID vom Namen Microsoft-Windows\RAC\RACTask, der im Konto des lokalen Diensts ausgeführt wird, vom Namen Microsoft-Windows-RAC-RACTask abgeleitet, wobei ein "-" durch ein "\" ersetzt wird, da "\" ein ungültiges Benutzernamenzeichen ist. Der bekannte Gruppenname für die Task-SID lautet "NT TASK\<modified full task> path" (Domänenname\Benutzername). Die standardmäßige daCL (Discretionary Access Control List) des Prozesstokens wird ebenfalls so geändert, dass die Vollzugriffssteuerung nur für die Aufgaben-SID und die lokale System-SID sowie die Lesesteuerung für die Aufgabenprinzipalkonto-SID ermöglicht wird. "schtasks.exe /showsid /tn <full task path>" zeigt die Aufgaben-SID an, die der Aufgabe entspricht.

Wenn eine Nicht-COM-Vorgangsaktion gestartet wird, meldet sich die Planungs-Engine beim Aufgabenprinzipalkonto, ruft das Prozesstoken ab und fragt die Liste der Berechtigungen ab, über die das Token verfügt, und vergleicht diese dann mit der unter RequiredPrivileges angegebenen Berechtigungsliste. Wenn in letzterem keine Berechtigung angegeben ist, wird dies als SE_PRIVILEGE_REMOVED gekennzeichnet. Die ausführbare Aktion wird dann mit dem resultierenden Tokenhandle mithilfe der CreateProcessAsUser-API gestartet.

Wenn eine COM-Taskaktion gestartet wird, muss sie vom taskhost.exe-Prozess aktiviert werden. Die Planungs-Engine fragt den Kontextblock jedes ausgeführten taskhost.exe mit demselben Konto ab wie der Starttask. Wenn festgestellt wird, dass ein Hostprozess mit einer Übermenge von Berechtigungen gestartet wurde, die der Starttask benötigt, wird dieser Task in diesem Prozess gehostet. Wenn ein solcher Prozess nicht gefunden wird, kombiniert es die Härtungsinformationen aller Aufgaben, die in den Taskhosts unter dem Aufgabenprinzipalkonto ausgeführt werden, mit der angegebenen RequiredPrivileges-Maske und startet dann eine neue instance von taskhost.exe.

Wenn RequiredPrivileges in der Aufgabendefinition nicht vorhanden ist, werden die Standardberechtigungen des Aufgabenprinzipalkontos ohne SeImpersonatePrivilege für den Vorgangsprozess verwendet. Wenn ProcessTokenSidType in der Aufgabendefinition nicht vorhanden ist, wird "unrestricted" als Standard verwendet.

Informationen zur Vorgangsregistrierung

Informationen zum Aufgabenplaner

Sicherheitskontexte für Aufgaben