Sicherheitskontexte für Aufgaben

Tasks werden registriert und unter einem bestimmten Sicherheitskontext ausgeführt. Benutzer können Anwendungen erstellen, die Aufgaben erfolgreich registrieren, aktualisieren, löschen oder ausführen. Der Benutzer muss jedoch die richtigen Anmeldeinformationen angeben, wenn eine Aufgabe registriert ist und die Anwendung in einem Prozess mit den richtigen Berechtigungen ausgeführt werden muss.

Angeben von Anmeldeinformationen

Sie können den Sicherheitskontext für eine Aufgabe angeben, indem Sie Anmeldeinformationen in den Methoden ITaskFolder::RegisterTask oder ITaskFolder::RegisterTaskDefinition (TaskFolder.RegisterTask oder TaskFolder.RegisterTaskDefinition für Skripts) angeben oder indem Sie der Prinzipaleigenschaft von ITaskDefinition (TaskDefinition.Principal für Skripterstellung) einen Prinzipal zuweisen. Wenn ein Prinzipal für eine Aufgabendefinition erstellt wird und die Aufgabendefinition dann mit der RegisterTaskDefinition-Methode mit verschiedenen Anmeldeinformationen registriert wird, die in den Methodenparametern angegeben sind, überschreiben die in der RegisterTaskDefinition-Methode angegebenen Anmeldeinformationen die Anmeldeinformationen im Prinzipal. Wenn ein Prinzipal für eine Aufgabendefinition mithilfe von XML erstellt wird und dann der XML-Code für den Task mit der RegisterTask-Methode mit verschiedenen Anmeldeinformationen registriert wird, die in den Methodenparametern angegeben sind, überschreiben die in der RegisterTask-Methode angegebenen Anmeldeinformationen die Anmeldeinformationen im Prinzipal.

Sie geben ein Benutzerkonto oder eine Gruppe an, wenn Sie eine Aufgabe registrieren oder das Prinzip für eine Aufgabe angeben. Der Sicherheitskontext des Benutzerkontos oder der Gruppe wird für den Sicherheitskontext der Aufgabe verwendet. In diesen Methoden und Eigenschaften definieren Sie auch den Anmeldetyp. Der Anmeldetyp wird durch eine der Konstanten in der TASK_LOGON_TYPE-Enumeration definiert.

Aufgaben, die mit dem TASK_LOGON_PASSWORD- oder TASK_LOGON_S4U-Flag registriert sind, werden nur gestartet, wenn für den angegebenen Benutzer die Berechtigung Als Batch anmelden aktiviert ist. Administratoren und Benutzer der Gruppe Sicherungsoperatoren haben diese Berechtigung standardmäßig aktiviert.

Wenn Sie die ITaskService::Connect-Methode (TaskService.Connect für Skripterstellung) aufrufen, verwenden alle nachfolgenden Methodenaufrufe des Taskplaner-Diensts die Anmeldeinformationen, die an die Connect-Methode übergeben wurden. Dies ist beim Registrieren von Aufgaben mit einem interaktiven Anmeldetyp wichtig. Wenn Sie eine Aufgabe mit dem Anmeldetyp registrieren, der gleich TASK_LOGON_INTERACTIVE_TOKEN ist und die Aufgabe keine Anmeldeinformationen in der Principal-Eigenschaft der Aufgabendefinition hat, die in den Parametern für RegisterTaskDefinition angegeben oder in der XML-Datei angegeben ist, die an RegisterTask übergeben wird, wird die Aufgabe mit den Anmeldeinformationen des Benutzers registriert, der die Connect-Methode aufgerufen hat.

User Account Control (UAC) Security for Tasks

Mit der Benutzerkontensteuerung (User Account Control, UAC) können Benutzer allgemeine Funktionen wie das Ausführen von Programmen und das Speichern und Ändern von Daten nutzen, ohne Administratorrechte verfügbar zu machen. Standardmäßig wird eine Aufgabe mit Berechtigungen auf niedriger Ebene ausgeführt, wenn die UAC aktiviert ist. Tasks können angeben, dass sie mit erhöhten oder niedrigen Berechtigungen ausgeführt werden, indem sie eine Berechtigungsstufe aus der TASK_RUNLEVEL_TYPE-Enumeration für die RunLevel-Eigenschaft von IPrincipal (Principal.RunLevel für Skripts) festlegen. Der Wert der RunLevel-Eigenschaft bestimmt die Berechtigungsstufe, auf der die Aktionen einer Aufgabe ausgeführt werden. Wenn die Aktionen einer Aufgabe über erhöhte Berechtigungen zum Ausführen verfügen müssen, müssen Sie die RunLevel-Eigenschaft auf TASK_RUNLEVEL_HIGHEST festlegen. Wenn eine Aufgabe mit der Gruppe Administratoren für den Sicherheitskontext der Aufgabe registriert wird, müssen Sie auch die RunLevel-Eigenschaft auf TASK_RUNLEVEL_HIGHEST festlegen, wenn Sie die Aufgabe ausführen möchten. Wenn eine Aufgabe mit dem Konto "Builtin\Administrator" oder "Local System" oder "Local Service" registriert wird, wird die RunLevel-Eigenschaft ignoriert. Der Eigenschaftswert wird auch ignoriert, wenn die Benutzerkontensteuerung (User Account Control, UAC) deaktiviert ist. Der Wert der RunLevel-Eigenschaft wirkt sich nicht auf die Berechtigungen aus, die zum Ausführen oder Löschen einer Aufgabe erforderlich sind.

Hinweis

Nach dem Upgrade eines Betriebssystems von Windows XP auf Windows Vista wird für Aufgaben, die mit dem Konto "Builtin\Administrator" unter Windows XP registriert wurden, die RunLevel-Eigenschaft auf TASK_RUNLEVEL_LUA festgelegt. Dies kann dazu führen, dass einige Aufgaben fehlschlagen. Sie können diese Eigenschaft manuell aktualisieren, um sicherzustellen, dass alle Tasks ausgeführt werden.

 

Bei einem Prozess mit niedrigen Berechtigungen können Sie keine Aufgabe mit der RunLevel-Eigenschaft registrieren, die gleich TASK_RUNLEVEL_HIGHEST ist, aber Sie können eine Aufgabe mit der RunLevel-Eigenschaft registrieren, die TASK_RUNLEVEL_LUA. Die Aufgabenaktionen werden mit geringen Berechtigungen ausgeführt. Sie sind nicht berechtigt, die Aufgabe als Integriert/Administrator, lokales System oder für eine Gruppe zu registrieren.

In einem Prozess mit erhöhten Berechtigungen können Sie eine Aufgabe mit der RunLevel-Eigenschaft registrieren, die TASK_RUNLEVEL_HIGHEST oder TASK_RUNLEVEL_LUA entspricht. Die Aufgabe wird mit einer berechtigungsstufe ausgeführt, die von der RunLevel-Eigenschaft festgelegt wird, es sei denn, Sie verwenden das Administratorkonto. In diesem Fall wird die Aufgabe mit erhöhten Berechtigungen ausgeführt.

Über einen Prozess mit erhöhten Rechten können Sie einen Task Scheduler 1.0-Task registrieren. Der Aufgabenplanungsdienst legt die Ausführungsebene der Aufgabe auf TASK_RUNLEVEL_HIGHEST fest, und der Task wird mit erhöhten Berechtigungen ausgeführt.

Aus einem Prozess mit geringen Berechtigungen können Sie auch einen Task Scheduler 1.0-Task registrieren. Der Aufgabenplanungsdienst legt die Ausführungsebene der Aufgabe auf TASK_RUNLEVEL_LUA fest, und der Task wird mit geringen Berechtigungen ausgeführt. Wenn diese Aufgabe von einem Prozess mit erhöhten Rechten aktualisiert wird, bleibt die Ausführungsebene der Aufgabe TASK_RUNLEVEL_LUA.

Sicherheit für das Registrieren von Aufgaben

Wenn Sie eine Aufgabe aus einem Konto registrieren, das Mitglied der Gruppe Administratoren ist, müssen Sie beim Registrieren der Aufgabe nur in den folgenden Situationen ein Kennwort angeben:

  • Wenn Sie die Aufgabe registrieren, die unter dem Sicherheitskontext Ihres Kontos oder eines anderen Benutzerkontos ausgeführt werden soll, und verwenden Sie das flag TASK_LOGON_PASSWORD in der RegisterTask- oder RegisterTaskDefinition-Methode .
  • Wenn Sie die Aufgabe registrieren, die unter dem Sicherheitskontext eines anderen Benutzerkontos ausgeführt werden soll, und verwenden Sie das flag TASK_LOGON_S4U in der RegisterTask- oder RegisterTaskDefinition-Methode .

Sie können eine Benutzergruppe nicht als Sicherheitskontext einer Aufgabe verwenden, wenn Sie den Task mit dem TASK_LOGON_S4U-Flag oder dem TASK_LOGON_PASSWORD-Flag in der RegisterTask- oder RegisterTaskDefinition-Methode registrieren.

Wenn Sie eine Aufgabe aus einem Benutzerkonto registrieren, das nicht Mitglied der Gruppe Administratoren ist, müssen Sie beim Registrieren der Aufgabe kein Kennwort angeben, wenn Sie die Aufgabe registrieren, die unter dem Sicherheitskontext Ihres Kontos ausgeführt werden soll, und sie den S4U- oder interaktiven Anmeldetyp verwenden. Andernfalls müssen Sie beim Registrieren der Aufgabe ein Kennwort angeben. Außerdem können Sie die Aufgabe nicht mit dem Lokalen Dienstkonto oder mit einer Gruppe für den Sicherheitskontext der Aufgabe registrieren.

Sicherheit beim Lesen, Aktualisieren, Löschen und Ausführen von Aufgaben

Standardmäßig kann ein Benutzer, der eine Aufgabe erstellt, die Aufgabe lesen, aktualisieren, löschen und ausführen. Ein Benutzer muss über eine Dateischreibberechtigung für eine Aufgabendatei verfügen, um eine Aufgabe zu aktualisieren, über die Berechtigung zum Lesen einer Aufgabe, über die Berechtigung zum Löschen einer Aufgabe und über die Berechtigung zum Ausführen einer Datei für eine Aufgabe mit den Methoden IRegisteredTask::Run oder RunEx (RegisteredTask.Run und RunEx für Skripterstellung) verfügen. Mitglieder der Gruppe Administratoren oder des SYSTEM-Kontos können alle Aufgaben lesen, aktualisieren, löschen und ausführen. Mitglieder der Gruppe Benutzer, des LocalService-Kontos und des NetworkService-Kontos können nur die von ihnen erstellten Aufgaben lesen, aktualisieren, löschen und ausführen. Dieses Standardverhalten wird geändert, wenn die DACL der Aufgabendatei geändert wird. In diesem Fall definiert die DACL, welche Benutzer über die Berechtigung zum Schreiben, Lesen, Ausführen und Löschen von Dateien verfügen. Um Berechtigungen für eine Aufgabendatei festzulegen, verwenden Sie die IRegisteredTask.SetSecurityDescriptor-Methode (RegisteredTask.SetSecurityDescriptor für Skripterstellung), oder legen Sie den Sicherheitsdeskriptor fest, wenn Sie den Task mit den RegisterTask - oder RegisterTaskDefinition-Methoden registrieren.

Ein Benutzer muss zusätzlich zu den Lese-/Schreibberechtigungen über die Berechtigung WriteDAC verfügen, um eine Aufgabe zu aktualisieren, wenn für die Aufgabenaktualisierung eine Änderung der DACL für den Task erforderlich ist.

Informationen zur Vorgangsregistrierung

Informationen zum Aufgabenplaner

Aufgabensicherheitshärtung

TaskFolder.RegisterTaskDefinition

ITaskFolder::RegisterTaskDefinition

Principal-Eigenschaft von ITaskDefinition

TASK_LOGON_TYPE