Безопасность объекта задания и права доступа

Модель безопасности Microsoft Windows позволяет управлять доступом к объектам заданий. Дополнительные сведения о безопасности см. в разделе Модель управления доступом.

Дескриптор безопасности для объекта задания можно указать при вызове функции CreateJobObject. Если указать значение NULL, объект задания получает дескриптор безопасности по умолчанию. Списки управления доступом в дескрипторе безопасности по умолчанию для объекта задания поступают из основного маркера или маркера олицетворения создателя.

Чтобы получить или задать дескриптор безопасности для объекта задания, вызовите функцию GetNamedSecurityInfo, SetNamedSecurityInfo, GetSecurityInfo или SetSecurityInfo .

Допустимые права доступа для объектов заданий включают стандартные права доступа и некоторые права доступа для конкретных заданий. В следующей таблице перечислены стандартные права доступа, используемые всеми объектами.

Значение Значение
DELETE (0x00010000L) Требуется для удаления объекта .
READ_CONTROL (0x00020000L) Требуется для чтения сведений в дескрипторе безопасности для объекта, не включая сведения в SACL. Чтобы прочитать или записать saCL, необходимо запросить право доступа ACCESS_SYSTEM_SECURITY . Дополнительные сведения см. в разделе Права доступа к SACL.
SYNCHRONIZE (0x00100000L) Право на использование данного объекта для синхронизации. Это позволяет потоку ждать, пока объект не перейдет в состояние сигнала.
WRITE_DAC (0x00040000L) Требуется для изменения DACL в дескрипторе безопасности для объекта .
WRITE_OWNER (0x00080000L) Требуется для изменения владельца в дескрипторове безопасности для объекта .

 

В следующей таблице перечислены права доступа для конкретных заданий.

Значение Значение
JOB_OBJECT_ALL_ACCESS (0x1F001F) Объединяет все допустимые права доступа к объекту задания.
JOB_OBJECT_ASSIGN_PROCESS (0x0001) Требуется для вызова функции AssignProcessToJobObject для назначения процессов объекту задания.
JOB_OBJECT_QUERY (0x0004) Требуется для получения определенных сведений об объекте задания, таких как атрибуты и учетные данные (см. QueryInformationJobObject и IsProcessInJob).
JOB_OBJECT_SET_ATTRIBUTES (0x0002) Требуется для вызова функции SetInformationJobObject для задания атрибутов объекта задания.
JOB_OBJECT_SET_SECURITY_ATTRIBUTES (0x0010) Этот флаг не поддерживается. Ограничения безопасности необходимо устанавливать отдельно для каждого процесса, связанного с объектом задания. Windows Server 2003 и Windows XP: Требуется для вызова функции SetInformationJobObject с информационным классом JobObjectSecurityLimitInformation , чтобы задать ограничения безопасности для процессов, связанных с объектом задания. Поддержка этого флага была удалена в Windows Vista и Windows Server 2008.
JOB_OBJECT_TERMINATE (0x0008) Требуется для вызова функции TerminateJobObject для завершения всех процессов в объекте задания.

 

Дескриптор, возвращаемый CreateJobObject , имеет JOB_OBJECT_ALL_ACCESS доступ к объекту задания. При вызове функции OpenJobObject система проверяет запрошенные права доступа по дескрипторе безопасности объекта. Если объект задания находится в иерархии вложенных заданий, вызывающий объект с доступом к объекту задания неявно имеет доступ ко всем его дочерним заданиям в иерархии.

Вы можете запросить право доступа ACCESS_SYSTEM_SECURITY к объекту задания, если вы хотите прочитать или записать saCL объекта. Дополнительные сведения см. в разделах Списки управления доступом (ACL) и Права доступа saCL.

Ограничения безопасности необходимо устанавливать отдельно для каждого процесса, связанного с объектом задания, а не для самого объекта задания. Дополнительные сведения см. в разделе Управление правами на доступ и безопасность процесса.

Windows Server 2003 и Windows XP: Для установки ограничений безопасности для объекта задания можно использовать функцию SetInformationJobObject . Эта возможность была удалена в Windows Vista и Windows Server 2008.