Защита потока и права доступа


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

Вы можете задать дескриптор безопасности (security descriptor) для потока, когда вызываете функцию CreateProcess, CreateProcessAsUser, CreateProcessWithLogonW, CreateThread или CreateRemoteThread. Если Вы устанавливаете значение ПУСТО (NULL), поток получает заданный по умолчанию дескриптор безопасности. Списки контроля доступа (ACL) в заданном по умолчанию дескрипторе безопасности потока происходят от первичного маркера или маркера заимствования прав создателя.

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

Дескриптор, возвращенный функцией CreateThread, имеет доступ к объекту потока THREAD_ALL_ACCESS. Когда Вы вызываете функцию GetCurrentThread, система возвращает псевдодескриптор с максимальным доступом, который дескриптор безопасности потока позволяет вызывающей программе.

Правильные права доступа для объектов потока включают в себя стандартные права доступа (standard access rights)  DELETE, READ_CONTROL, SYNCHRONIZE, WRITE_DAC и WRITE_OWNER, в дополнение к нижеследующим конкретным для потока правам доступа.

 

Значение

Предназначение

SYNCHRONIZE

Дает возможность использования дескриптора потока в любой из функций ожидания. 

THREAD_ALL_ACCESS

Все возможные права доступа для объекта потока. 

THREAD_DIRECT_IMPERSONATION

Требуется для потока сервера, который исполняет роль клиента. 

THREAD_GET_CONTEXT

Требуется, чтобы читать контекст потока, используя функцию GetThreadContext. 

THREAD_IMPERSONATE

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

THREAD_QUERY_INFORMATION

Требуется, чтобы читать некоторую информацию из объекта потока, такую как код завершения работы (см. функцию GetExitCodeThread ). 

THREAD_SET_CONTEXT

Требуется, чтобы записать контекст потока, используя функцию SetThreadContext. 

THREAD_SET_INFORMATION

Требуется, чтобы установить некоторую информацию в объекте потока. 

THREAD_SET_THREAD_TOKEN

Требуется, чтобы установить маркер заимствования прав для потока, используя функцию SetTokenInformation. 

THREAD_SUSPEND_RESUME

Требуется, чтобы приостановить или восстановить работу потока (см. функции SuspendThread и ResumeThread ). 

THREAD_TERMINATE

Требуется, чтобы завершить работу потока, используя функцию TerminateThread .

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

Назад в оглавление темы
На главную страницу темы

Hosted by uCoz