Auftragsobjektsicherheit und Zugriffsrechte

Mit dem Microsoft Windows-Sicherheitsmodell können Sie den Zugriff auf Auftragsobjekte steuern. Weitere Informationen zur Sicherheit finden Sie unter Access-Control Model.

Sie können einen Sicherheitsdeskriptor für ein Auftragsobjekt angeben, wenn Sie die CreateJobObject-Funktion aufrufen. Wenn Sie NULL angeben, ruft das Auftragsobjekt einen Standardsicherheitsdeskriptor ab. Die ACLs im Standardsicherheitsdeskriptor für ein Auftragsobjekt stammen aus dem primären Token oder dem Identitätswechseltoken des Erstellers.

Um den Sicherheitsdeskriptor für ein Auftragsobjekt abzurufen oder festzulegen, rufen Sie die Funktionen GetNamedSecurityInfo, SetNamedSecurityInfo, GetSecurityInfo oder SetSecurityInfo auf.

Zu den gültigen Zugriffsrechten für Auftragsobjekte gehören die Standardzugriffsrechte und einige auftragsspezifische Zugriffsrechte. In der folgenden Tabelle sind die Standardzugriffsrechte aufgeführt, die von allen Objekten verwendet werden.

Wert Bedeutung
DELETE (0x00010000L) Erforderlich, um das Objekt zu löschen.
READ_CONTROL (0x00020000L) Erforderlich, um Informationen im Sicherheitsdeskriptor für das Objekt zu lesen, ohne dass die Informationen in der SACL enthalten sind. Zum Lesen oder Schreiben der SACL müssen Sie das zugriffsrecht ACCESS_SYSTEM_SECURITY anfordern. Weitere Informationen finden Sie unter SACL-Zugriffsrecht.
SYNCHRONIZE (0x00100000L) Das Recht, das Objekt für die Synchronisierung zu verwenden. Dadurch kann ein Thread warten, bis sich das Objekt im signalierten Zustand befindet.
WRITE_DAC (0x00040000L) Erforderlich, um die DACL im Sicherheitsdeskriptor für das -Objekt zu ändern.
WRITE_OWNER (0x00080000L) Erforderlich, um den Besitzer im Sicherheitsdeskriptor für das Objekt zu ändern.

 

In der folgenden Tabelle sind die auftragsspezifischen Zugriffsrechte aufgeführt.

Wert Bedeutung
JOB_OBJECT_ALL_ACCESS (0x1F001F) Kombiniert alle gültigen Zugriffsberechtigungen für Auftragsobjekte.
JOB_OBJECT_ASSIGN_PROCESS (0x0001) Erforderlich, um die AssignProcessToJobObject-Funktion aufzurufen, um dem Auftragsobjekt Prozesse zuzuweisen.
JOB_OBJECT_QUERY (0x0004) Erforderlich, um bestimmte Informationen zu einem Auftragsobjekt abzurufen, z. B. Attribute und Buchhaltungsinformationen (siehe QueryInformationJobObject und IsProcessInJob).
JOB_OBJECT_SET_ATTRIBUTES (0x0002) Erforderlich, um die SetInformationJobObject-Funktion aufzurufen, um die Attribute des Auftragsobjekts festzulegen.
JOB_OBJECT_SET_SECURITY_ATTRIBUTES (0x0010) Dieses Flag wird nicht unterstützt. Sie müssen Sicherheitsbeschränkungen einzeln für jeden Prozess festlegen, der einem Auftragsobjekt zugeordnet ist. Windows Server 2003 und Windows XP: Erforderlich, um die SetInformationJobObject-Funktion mit der Informationsklasse JobObjectSecurityLimitInformation aufzurufen, um Sicherheitseinschränkungen für die Prozesse festzulegen, die dem Auftragsobjekt zugeordnet sind. Die Unterstützung für dieses Flag wurde in Windows Vista und Windows Server 2008 entfernt.
JOB_OBJECT_TERMINATE (0x0008) Erforderlich, um die TerminateJobObject-Funktion aufzurufen, um alle Prozesse im Auftragsobjekt zu beenden.

 

Das von CreateJobObject zurückgegebene Handle hat JOB_OBJECT_ALL_ACCESS Zugriff auf das Auftragsobjekt. Wenn Sie die OpenJobObject-Funktion aufrufen, überprüft das System die angeforderten Zugriffsrechte mit dem Sicherheitsdeskriptor des Objekts. Wenn sich ein Auftragsobjekt in einer Hierarchie von geschachtelten Aufträgen befindet, hat ein Aufrufer mit Zugriff auf das Auftragsobjekt implizit Zugriff auf alle untergeordneten Aufträge in der Hierarchie.

Sie können das ACCESS_SYSTEM_SECURITY Zugriffsrecht auf ein Auftragsobjekt anfordern, wenn Sie die SACL des Objekts lesen oder schreiben möchten. Weitere Informationen finden Sie unter Zugriffssteuerungslisten (Access-Control Lists, ACLs) und SACL-Zugriffsberechtigung.

Sie müssen Sicherheitsbeschränkungen für jeden Prozess, der einem Auftragsobjekt zugeordnet ist, einzeln festlegen, anstatt sie für das Auftragsobjekt selbst festzulegen. Weitere Informationen finden Sie unter Prozesssicherheit und Zugriffsrechte.

Windows Server 2003 und Windows XP: Sie können die SetInformationJobObject-Funktion verwenden, um Sicherheitsbeschränkungen für das Auftragsobjekt festzulegen. Diese Funktion wurde in Windows Vista und Windows Server 2008 entfernt.