Controllo dell'accesso a oggetti privati

Un'applicazione server protetta deve controllare i diritti di accesso di un client prima di consentire al client di accedere a un oggetto privato protetto. A tale scopo, il server passa un token di rappresentazione, un descrittore di sicurezza e un set di diritti di accesso richiesti a AccessCheck. Le voci di controllo di accesso (AES) nel descrittore di sicurezza specificano i diritti di accesso consentiti o negati a vari trustee. La funzione AccessCheck confronta l'utente attendibile in ogni ace ai trustee identificati nel token di rappresentazione. Per una descrizione dell'algoritmo usato per concedere o negare l'accesso, vedere How DACLs Control Access to an Object .For a description of the algorithm used to grant or deny access, see How DACLs Control Access to an Object.

La funzione AccessCheckAndAuditAlarm esegue un controllo di accesso simile. Genera inoltre record di controllo nel registro eventi di sicurezza a seconda del descrittore di sicurezza SACL.

Le funzioni AccessCheckByType e AccessCheckByTypeAndAuditAlarm sono simili a AccessCheck e AccessCheckAndAuditAlarm, ad eccezione del fatto che consentono di controllare l'accesso agli oggetti secondari di un oggetto, ad esempio set di proprietà o proprietà. Le funzioni AccessCheckByTypeResultList e AccessCheckByTypeResultListAndAuditAlarm sono simili anche a AccessCheck, ad eccezione del fatto che forniscono i risultati del controllo di accesso per ogni oggetto secondario in una gerarchia dei set di proprietà e proprietà dell'oggetto. Queste funzioni usano la struttura OBJECT_TYPE_LIST per descrivere la gerarchia degli oggetti per cui viene controllato l'accesso. Le funzioni che generano un messaggio di controllo usano il tipo di enumerazione AUDIT_EVENT_TYPE per indicare se l'oggetto controllato è un oggetto del servizio directory. Per altre informazioni sulla gerarchia di un oggetto e sui relativi oggetti secondari, vedere ACEs to Control Access to An Object's Properties (Controllo dell'accesso alle proprietà di un oggetto).

I diritti di accesso richiesti passati alle funzioni AccessCheck e AccessCheckAndAuditAlarm non devono includere alcun diritto di accesso generico. Il server può usare la funzione MapGenericMask per convertire qualsiasi diritto di accesso generico ai diritti specifici e standard corrispondenti in base al mapping specificato nella struttura GENERIC_MAPPING .

Le funzioni AreAllAccessesGranted e AreAnyAccessesGranted confrontano una maschera di accesso richiesta con una maschera di accesso concessa.

Per codice di esempio che usa la funzione AccessCheck , vedere Verifica dell'accesso client con ACL in C++.

La funzione ConvertToAutoInheritPrivateObjectSecurity crea e restituisce un descrittore di sicurezza in un formato che consente la propagazione automatica degli ACL ereditabili. Questo descrittore di sicurezza contiene tutti gli ACL, ereditati e nonriti, nel descrittore di sicurezza corrente ed è in formato auto-relativo . La funzione ConvertToAutoInheritPrivateObjectSecurity determina se gli ACL vengono ereditati o nonriti confrontando tutti gli ACL nel descrittore di sicurezza corrente con tutti gli ACL nel descrittore di sicurezza padre. Potrebbe non esserci una corrispondenza uno-a-uno tra i due gruppi di ACL. Ad esempio, un ACE che consente l'autorizzazione di lettura/scrittura può essere equivalente a due ACL: un ACE che consente l'autorizzazione di lettura e un ACE che consente l'autorizzazione di scrittura. Un descrittore di sicurezza padre potrebbe non essere fornito quando il descrittore di sicurezza corrente è l'elemento padre.