Token con restrizioni

Un token con restrizioni è un token di accessoprimario o di rappresentazione modificato dalla funzione CreateRestrictedToken. Un processo o un thread di rappresentazione in esecuzione nel contesto di sicurezza di un token con restrizioni è limitato nella possibilità di accedere a oggetti a protezione diretta o di eseguire operazioni con privilegi. La funzione CreateRestrictedToken può limitare un token nei modi seguenti:

  • Rimuovere i privilegi dal token.
  • Applicare l'attributo di sola negazione ai SID nel token in modo che non possano essere usati per accedere agli oggetti protetti. Per altre informazioni sull'attributo di sola negazione, vedere Attributi SID in un token di accesso.
  • Specificare un elenco di SID che limitano l'accesso a oggetti a protezione diretta.

Il sistema usa l'elenco dei SID di limitazione quando controlla l'accesso del token a un oggetto a protezione diretta. Quando un processo o un thread con restrizioni tenta di accedere 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 di SID di limitazione. L'accesso viene concesso solo se entrambi i controlli di accesso consentono i diritti di accesso richiesti. Per altre informazioni sui controlli di accesso, vedere How DACLs Control Access to an Object.For more information about access check, see How DACLs Control Access to an Object.

È possibile usare un token primario con restrizioni in una chiamata alla funzione CreateProcessAsUser . In genere, il processo che chiama CreateProcessAsUser deve avere il privilegio SE_ASSIGNPRIMARYTOKEN_NAME, che in genere viene mantenuto solo dal codice di sistema o dai servizi in esecuzione nell'account LocalSystem. Tuttavia, se la chiamata CreateProcessAsUser specifica una versione limitata del token primario del chiamante, questo privilegio non è obbligatorio. Ciò consente alle applicazioni comuni di creare processi con restrizioni.

È anche possibile usare un token primario o di rappresentazione con restrizioni nella funzione ImpersonateLoggedOnUser .

Per determinare se un token ha un elenco di SID limitati, chiamare la funzione IsTokenRestricted .

Nota

Le applicazioni che usano token con restrizioni devono eseguire l'applicazione con restrizioni nei desktop diversi dal desktop predefinito. Ciò è necessario per evitare un attacco da parte di un'applicazione con restrizioni, tramite SendMessage o PostMessage, per applicazioni senza restrizioni sul desktop predefinito. Se necessario, passare da un desktop all'altro ai fini dell'applicazione.