Creazione di un diritto di accesso di controllo

Per aggiungere un diritto di accesso di controllo a un server Active Directory, creare un oggetto controlAccessRight nel contenitore Extended-Rights della partizione di configurazione. Per altre informazioni e un esempio di codice, vedere Codice di esempio per la creazione di un diritto di accesso di controllo. Per usare il diritto di accesso di controllo, è necessario completare alcuni passaggi, a seconda che il diritto di accesso di controllo sia per un'operazione speciale o un set di proprietà.

Se si definisce un diritto di accesso di controllo per un set di proprietà, utilizzare rightsGUID dell'oggetto controlAccessRight per identificare le proprietà nel set. Ogni proprietà è definita da un oggetto attributeSchema nello schema di Active Directory. La proprietà attributeSecurityGUID di un oggetto attributeSchema identifica il set di proprietà, se presente, a cui appartiene la proprietà. Tenere presente che la proprietà attributeSecurityGUID è a valore singolo e archivia il GUID in formato binario (sintassi di stringa ottetto).

Se si definisce un diritto di accesso di controllo per applicare restrizioni all'accesso a una determinata operazione, l'applicazione deve eseguire il controllo di accesso quando un utente tenta l'operazione.

Per configurare il controllo di accesso

  1. Creare un diritto di accesso di controllo che definisce il tipo di accesso all'applicazione o al servizio. Per altre informazioni, vedere l'esempio di codice seguente.
  2. Creare un oggetto Dominio di Active Directory Services che rappresenta l'applicazione, il servizio o la risorsa da proteggere.
  3. Aggiungere gli ACL dell'oggetto al descrittore di sicurezza degli oggetti per concedere o negare agli utenti o ai gruppi il diritto di accesso di controllo su tale oggetto. Per altre informazioni, vedere Impostazione di un ace di accesso di controllo nell'ACL di un oggetto.
  4. Quando un utente tenta di eseguire l'operazione, verificare i diritti utente passando il descrittore di sicurezza degli oggetti e il token di accesso utente alla funzione AccessCheckByTypeResultList. Per altre informazioni, vedere Controllo di un diritto di accesso di controllo nell'ACL di un oggetto.

In base al risultato del controllo di accesso sull'oggetto, l'applicazione o il servizio può consentire o negare all'utente l'accesso all'applicazione o al servizio.

Quando si crea un oggetto controlAccessRight, impostare gli attributi, elencati nella tabella seguente, per rendere l'oggetto un diritto di accesso di controllo legale riconosciuto dai servizi di Dominio di Active Directory e dai sistemi di sicurezza Windows.

Attributo Descrizione
Cn Proprietà a valore singolo che rappresenta il nome distinto relativo dell'oggetto (RDN) nel contenitore Extended-Rights. Il cn è il nome del diritto di controllo di accesso in Dominio di Active Directory Services.
Appliesto Proprietà multivalore che elenca le classi oggetto a cui si applica il diritto di controllo di accesso. Ad esempio, il controllo di accesso Send-As elenca le classi di oggetti utente e computer nella relativa proprietà appliesTo. Nell'elenco ogni classe oggetto viene identificata dallo schemaIDGUID del relativo oggetto classSchema. I GUID vengono archiviati come stringhe del form prodotto dalla funzione StringFromGUID2 nella libreria COM, ma senza parentesi graffe iniziali e terminanti ({ }). Ad esempio, il GUID seguente è schemaIDGUID per la classe computer: bf967a86-0de6-11d0-a285-00aa003049e2.
Tenere presente che la proprietà schemaIDGUID di un oggetto classSchema viene archiviata come GUID binario usando la sintassi della stringa ottetto. Per convertire questo formato di stringa ottetto nel formato stringa usato nella proprietà appliesTo, utilizzare la funzione StringFromGUID2 e rimuovere le parentesi graffe dalla stringa restituita.
Per altre informazioni sulla proprietà schemaIDGUID di una delle classi di oggetti predefinite, ad esempio utente o computer, vedere la pagina di riferimento della classe nella Guida di riferimento allo schema di Active Directory nella guida di riferimento a Dominio di Active Directory Services. Per altre informazioni e un esempio di codice che recupera uno schemaIDGUID da un oggetto classSchema, vedere Reading attributeSchema and classSchema Objects.
displayName Stringa utilizzata per visualizzare il controllo di accesso direttamente nelle interfacce utente, ad esempio la pagina delle proprietà Sicurezza e altre posizioni nello snap-in MMC Utenti e computer di Active Directory.
rightsGuid GUID che identifica il diritto di accesso di controllo in un ace. Il GUID viene archiviato come stringa del form prodotto dalla funzione StringFromGUID2 , ma senza parentesi graffe iniziali e terminanti. Usare Uuidgen.exe per altre utilità per generare un GUID per il diritto di accesso di controllo. Se si definisce un nuovo set di proprietà, utilizzare rightsGuid dell'oggetto controlAccessRight per identificare le proprietà nel set. Per ogni proprietà nel set di proprietà, impostare il valore attributeSecurityGUID della proprietà sul valore di rightsGUID del set di proprietà. Il valore attributeSecurityGUID di una proprietà viene archiviato nella definizione attributeSchema della proprietà nello schema di Active Directory. La proprietà attributeSecurityGUID è a valore singolo e archivia il GUID in formato binario (sintassi di stringa ottetto).
Objectclass Questo attributo specifica controlAccessRight come classe oggetto.
validAccesses Per i set di proprietà, impostare questo attributo su 0x30 (ADS_RIGHT_DS_READ_PROP ADS_RIGHT_DS_WRITE_PROP | ). Per controllare i diritti di accesso, impostare questo attributo su 0x100 (ADS_RIGHT_DS_CONTROL_ACCESS). La pagina delle proprietà di sicurezza riconosce i diritti di accesso di controllo solo se l'attributo validAccesses è impostato sul valore appropriato. Se zero, il diritto di accesso al controllo viene ignorato o non visualizzato dalla pagina delle proprietà di sicurezza.

Tenere presente che le classi dello schema predefinite usano l'attributo localizationDisplayId di un oggetto controlAccessRight per specificare un identificatore di messaggio utilizzato per recuperare un nome visualizzato localizzato da Dssec.dll. Non impostare l'attributo localizationDisplayId se si definisce un nuovo oggetto controlAccessRight .