Partilhar via


Função SeFilterToken (ntifs.h)

A rotina de seFilterToken cria um novo token de acesso que é uma versão restrita de um token de acesso existente.

Sintaxe

NTSTATUS SeFilterToken(
  [in]           PACCESS_TOKEN     ExistingToken,
  [in]           ULONG             Flags,
  [in, optional] PTOKEN_GROUPS     SidsToDisable,
  [in, optional] PTOKEN_PRIVILEGES PrivilegesToDelete,
  [in, optional] PTOKEN_GROUPS     RestrictedSids,
                 PACCESS_TOKEN     *FilteredToken
);

Parâmetros

[in] ExistingToken

Ponteiro para um token primário ou de representação. O token também pode ser um token restrito. Esse token já deve estar aberto para acesso TOKEN_DUPLICATE. Esse ponteiro pode ser obtido de um identificador de token existente chamando ObReferenceObjectByHandle, especificando TOKEN_DUPLICATE como o tipo de DesiredAccess.

[in] Flags

Especifica opções de privilégios adicionais. Esse parâmetro pode ser zero ou uma combinação dos valores a seguir.

Valor Significado
DISABLE_MAX_PRIVILEGE Desabilita todos os privilégios no novo token, exceto SE_CHANGE_NOTIFY_PRIVILEGE. Se esse valor for especificado, o parâmetro PrivilegesToDelete será ignorado.
SANDBOX_INERT Armazena o sinalizador TOKEN_SANDBOX_INERT no token.

[in, optional] SidsToDisable

Ponteiro para uma estrutura TOKEN_GROUPS que contém uma matriz de estruturas SID_AND_ATTRIBUTES que especificam os SIDs somente negação no token restrito. O sistema usa um SID somente negação para negar o acesso a um objeto protegível. A ausência de um SID somente negação não permite acesso.

Desabilitar um sid ativa SE_GROUP_USE_FOR_DENY_ONLY e desativa SE_GROUP_ENABLED e SE_GROUP_ENABLED_BY_DEFAULT. Todos os outros atributos são ignorados.

Atributos somente negação se aplicam a qualquer combinação de SIDs de um token existente, incluindo o SID do usuário e SIDs de grupo que têm o atributo SE_GROUP_MANDATORY. Para obter os SIDs associados ao token existente, chame seQueryInformationToken com os sinalizadores TokenUser e TokenGroups. SeFilterToken ignora os SIDs na matriz que também não são encontrados no token existente.

seFilterToken ignora os de atributos membros das estruturas SID_AND_ATTRIBUTES.

Esse parâmetro é opcional e pode ser NULL.

[in, optional] PrivilegesToDelete

Ponteiro para uma estrutura TOKEN_PRIVILEGES que contém uma matriz de estruturas LUID_AND_ATTRIBUTES que especificam os privilégios a serem excluídos no token restrito.

Para obter os privilégios mantidos pelo token existente, chame SeQueryInformationToken com o sinalizador TokenPrivileges. SeFilterToken ignora quaisquer privilégios na matriz que não são mantidos pelo token existente.

seFilterToken ignora os atributos membros das estruturas de LUID_AND_ATTRIBUTES.

Esse parâmetro é opcional e pode ser NULL.

[in, optional] RestrictedSids

Ponteiro para uma estrutura de TOKEN_GROUPS que contém uma matriz de estruturas SID_AND_ATTRIBUTES que especificam uma lista de SIDs restrinjantes para o novo token. Se o token existente for um token restrito, a lista de restrições de SIDs para o novo token será a interseção dessa matriz e a lista de SIDs de restrição para o token existente.

Os atributos membros das estruturas de SID_AND_ATTRIBUTES devem ser zero. A restrição de SIDs sempre está habilitada para verificações de acesso.

Esse parâmetro é opcional e pode ser NULL.

FilteredToken

Ponteiro para uma variável alocada por chamador que recebe o endereço do novo token restrito. O novo token é do mesmo tipo, principal ou representação, que o token existente.

Valor de retorno

Se um ou mais dos valores de parâmetro forem inválidos, SeFilterToken retornará STATUS_INVALID_PARAMETER. (Esse valor será retornado se o token de destino não for um token de representação.) Caso contrário, SeFilterToken retornará STATUS_SUCCESS.

Observações

seFilterToken pode restringir o token das seguintes maneiras:

  • Aplique o atributo somente negação aos SIDs no token para que eles não possam ser usados para acessar objetos protegidos. Para obter mais informações sobre o atributo somente negação, consulte atributos sid em um token de acesso na documentação do SDK do Microsoft Windows.

  • Remova privilégios do token.

  • Especifique uma lista de SIDs restritos, que o sistema usa quando verifica o acesso do token a um objeto protegível. O sistema executa duas verificações de acesso: uma usando SIDs habilitadas para o token e outra usando a lista de SIDs restritos. O acesso será concedido somente se ambas as verificações de acesso permitirem os direitos de acesso solicitados.

O token restrito pode ser usado junto com seCreateClientSecurity e SeImpersonateClientEx para criar um processo que tenha privilégios e direitos de acesso restritos.

Para obter mais informações sobre segurança e controle de acesso, consulte modelo de segurança do Windows para desenvolvedores de driver e a documentação sobre esses tópicos no SDK do Windows.

Quando o token retornado no NewToken não for mais necessário, libere-o chamando ObDereferenceObject.

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows XP
da Plataforma de Destino Universal
cabeçalho ntifs.h (inclua Ntifs.h)
biblioteca NtosKrnl.lib
de DLL NtosKrnl.exe
IRQL < DISPATCH_LEVEL

Consulte também

LUID_AND_ATTRIBUTES

ObDereferenceObject

ObReferenceObjectByHandle

de SID

SID_AND_ATTRIBUTES

seCreateClientSecurity

SeImpersonateClientEx

SeQueryInformationToken

SeTokenIsRestricted

TOKEN_GROUPS

TOKEN_PRIVILEGES