Funzione SeFilterToken (ntifs.h)

La routine SeFilterToken crea un nuovo token di accesso che rappresenta una versione con restrizioni di un token di accesso esistente.

Sintassi

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
);

Parametri

[in] ExistingToken

Puntatore a un token primario o di rappresentazione. Il token può anche essere un token con restrizioni. Questo token deve essere già aperto per l'accesso TOKEN_DUPLICATE. Questo puntatore può essere ottenuto da un handle di token esistente chiamando ObReferenceObjectByHandle, specificando TOKEN_DUPLICATE come tipo DesiredAccess .

[in] Flags

Specifica opzioni di privilegio aggiuntive. Questo parametro può essere zero o una combinazione dei valori seguenti.

Valore Significato
DISABLE_MAX_PRIVILEGE Disabilita tutti i privilegi nel nuovo token, ad eccezione di SE_CHANGE_NOTIFY_PRIVILEGE. Se questo valore viene specificato, il parametro PrivilegesToDelete viene ignorato.
SANDBOX_INERT Archivia il flag TOKEN_SANDBOX_INERT nel token.

[in, optional] SidsToDisable

Puntatore a una struttura TOKEN_GROUPS contenente una matrice di strutture SID_AND_ATTRIBUTES che specificano i SID di sola negazione nel token con restrizioni. Il sistema usa un SID di sola negazione per negare l'accesso a un oggetto a protezione diretta. L'assenza di un SID di sola negazione non consente l'accesso.

La disabilitazione di un SID attiva SE_GROUP_USE_FOR_DENY_ONLY e disattiva SE_GROUP_ENABLED e SE_GROUP_ENABLED_BY_DEFAULT. Tutti gli altri attributi vengono ignorati.

Gli attributi di sola negazione si applicano a qualsiasi combinazione dei SID di un token esistente, inclusi i SID utente e i SID di gruppo con l'attributo SE_GROUP_MANDATORY. Per ottenere i SID associati al token esistente, chiamare SeQueryInformationToken con i flag TokenUser e TokenGroups. SeFilterToken ignora tutti i SID nella matrice che non vengono trovati anche nel token esistente.

SeFilterToken ignora i membri Attributes delle strutture SID_AND_ATTRIBUTES.

Questo parametro è facoltativo e può essere NULL.

[in, optional] PrivilegesToDelete

Puntatore a una struttura TOKEN_PRIVILEGES contenente una matrice di strutture LUID_AND_ATTRIBUTES che specificano i privilegi da eliminare nel token con restrizioni.

Per ottenere i privilegi mantenuti dal token esistente, chiamare SeQueryInformationToken con il flag TokenPrivileges. SeFilterToken ignora tutti i privilegi nella matrice che non sono contenuti nel token esistente.

SeFilterToken ignora i membri Attributes delle strutture LUID_AND_ATTRIBUTES.

Questo parametro è facoltativo e può essere NULL.

[in, optional] RestrictedSids

Puntatore a una struttura TOKEN_GROUPS contenente una matrice di strutture SID_AND_ATTRIBUTES che specificano un elenco di SID che limitano i SID per il nuovo token. Se il token esistente è un token con restrizioni, l'elenco di SID limitati per il nuovo token è l'intersezione di questa matrice e l'elenco di limitazione dei SID per il token esistente.

I membri Attributes delle strutture SID_AND_ATTRIBUTES devono essere zero. La limitazione dei SID è sempre abilitata per i controlli di accesso.

Questo parametro è facoltativo e può essere NULL.

FilteredToken

Puntatore a una variabile allocata dal chiamante che riceve l'indirizzo del nuovo token con restrizioni. Il nuovo token è lo stesso tipo, primario o rappresentazione, del token esistente.

Valore restituito

Se uno o più valori dei parametri non sono validi, SeFilterToken restituisce STATUS_INVALID_PARAMETER. Questo valore viene restituito se il token di destinazione non è un token di rappresentazione. In caso contrario, SeFilterToken restituisce STATUS_SUCCESS.

Commenti

SeFilterToken può limitare il token nei modi seguenti:

  • Applicare l'attributo di sola negazione ai SID nel token in modo che non possano essere usati per accedere a oggetti protetti. Per altre informazioni sull'attributo deny-only, vedere Attributi SID in un token di accesso nella documentazione di Microsoft Windows SDK.

  • Rimuovere i privilegi dal token.

  • Specificare un elenco di SID di limitazione, che il sistema usa quando controlla l'accesso del token a un oggetto a protezione diretta. Il sistema esegue due controlli di accesso: uno usando i SID abilitati del token e un altro usando l'elenco dei SID di limitazione. L'accesso viene concesso solo se entrambi i controlli di accesso consentono i diritti di accesso richiesti.

Il token con restrizioni può essere usato insieme a SeCreateClientSecurity e SeImpersonateClientEx per creare un processo con diritti di accesso e privilegi limitati.

Per altre informazioni sulla sicurezza e sul controllo di accesso, vedere Modello di sicurezza di Windows per sviluppatori di driver e la documentazione su questi argomenti in Windows SDK.

Quando il token restituito in NewToken non è più necessario, liberarlo chiamando ObDereferenceObject.

Requisiti

Requisito Valore
Client minimo supportato Windows XP
Piattaforma di destinazione Universale
Intestazione ntifs.h (include Ntifs.h)
Libreria NtosKrnl.lib
DLL NtosKrnl.exe
IRQL < DISPATCH_LEVEL

Vedi anche

LUID_AND_ATTRIBUTES

ObDereferenceObject

ObReferenceObjectByHandle

SID

SID_AND_ATTRIBUTES

SeCreateClientSecurity

SeImpersonateClientEx

SeQueryInformationToken

SeTokenIsRestricted

TOKEN_GROUPS

TOKEN_PRIVILEGES