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 |