Compartilhar via


Representando um cliente de pipe nomeado

Representação é a capacidade de um thread ser executado em um contexto de segurança diferente daquele do processo que possui o thread. A representação permite que o thread do servidor execute ações em nome do cliente, mas dentro dos limites do contexto de segurança do cliente. O cliente normalmente tem algum nível menor de direitos de acesso. Para obter mais informações, consulte Representação.

Um thread de servidor de pipe nomeado pode chamar a função ImpersonateNamedPipeClient para assumir o token de acesso do usuário conectado à extremidade do cliente do pipe. Por exemplo, um servidor de pipe nomeado pode fornecer acesso a um banco de dados ou sistema de arquivos ao qual o servidor de pipe tem acesso privilegiado. Quando um cliente de pipe envia uma solicitação para o servidor, o servidor representa o cliente e tenta acessar o banco de dados protegido. Em seguida, o sistema concede ou nega o acesso do servidor, com base no nível de segurança do cliente. Quando o servidor é concluído, ele usa a função RevertToSelf para restaurar seu token de segurança original.

O nível de representação determina as operações que o servidor pode executar ao representar o cliente. Por padrão, um servidor representa no nível de representação SecurityImpersonation. No entanto, quando o cliente chama a função CreateFile para abrir um identificador para a extremidade do cliente do pipe, o cliente pode usar o sinalizador SECURITY_SQOS_PRESENT para controlar o nível de representação do servidor.