Поделиться через


Дескрипторы безопасности для частных объектов

Чтобы создать дескриптор безопасности, защищенный сервер может использовать ту же процедуру, что и приложение для создания дескриптора безопасности для защищаемого объекта. Пример кода см. в разделе Создание дескриптора безопасности для нового объекта в C++. Кроме того, для этого защищенное серверное приложение может вызвать функцию BuildSecurityDescriptor . Если в BuildSecurityDescriptor указан указатель на существующий автономный дескриптор безопасности, он создаст новый дескриптор безопасности со сведениями, взятыми из этого дескриптора безопасности, объединенными с новыми сведениями об управлении доступом, переданными в качестве параметров в вызове функции. Владелец и группа при необходимости указываются структурами TRUSTEE , передаваемыми в функцию. Дескриптор безопасности, созданный BuildSecurityDescriptor , имеет самостоятельный формат.

Кроме того, API Windows предоставляет набор функций для объединения сведений о безопасности клиента со сведениями, унаследованными от дескриптора безопасности для родительского объекта или дескриптора безопасности по умолчанию. Функции CreatePrivateObjectSecurity, GetPrivateObjectSecurity, SetPrivateObjectSecurity и DestroyPrivateObjectSecurity позволяют получать сведения по умолчанию из маркера доступа, поддерживать наследование и управлять определенными частями дескриптора безопасности. Это может быть полезно, когда клиент создает частный объект в иерархии защищенных объектов. Например, можно использовать функцию CreatePrivateObjectSecurity для создания дескриптора безопасности, содержащего ACE, указанные клиентом, ACE, унаследованные от родительского объекта, и владельца по умолчанию из создаваемого маркера доступа клиента. В то время как BuildSecurityDescriptor создает дескрипторы безопасности на основе сведений об управлении доступом, передаваемых в вызов функции, или из существующего дескриптора безопасности, CreatePrivateObjectSecurity создает дескриптор безопасности исключительно из сведений в существующих дескрипторах безопасности.

Функция LookupSecurityDescriptorParts получает сведения о дескрипторе безопасности из существующего самостоятельного дескриптора безопасности. Эти сведения включают в себя спецификацию владельца и группы, количество ACE в списке SACL или DACL, а также список ACE в списке SACL или DACL.