Condividi tramite


Creazione di descrittori di sicurezza per i nuovi oggetti directory

È possibile utilizzare ADSI per creare un descrittore di sicurezza e impostarlo come proprietà nTSecurityDescriptor di un nuovo oggetto o utilizzarlo per sostituire la proprietà nTSecurityDescriptor di un oggetto esistente.

Per creare un descrittore di sicurezza per un oggetto :

  1. Usare CoCreateInstance per creare l'oggetto COM ADSI per il nuovo descrittore di sicurezza e ottenere un IADsSecurityDescriptor puntatore all'interfaccia a tale oggetto. Tenere presente che l'ID classe è CLSID_SecurityDescriptor.
  2. Utilizzare il metodo IADsSecurityDescriptor::put_Owner per impostare il proprietario dell'oggetto. Il trustee è un utente, un gruppo o un'altra entità di sicurezza. Un'applicazione dovrebbe utilizzare il valore della proprietà appropriata dell'oggetto utente o gruppo del trustee al quale applicare l'ACE.
  3. Utilizzare il metodo IADsSecurityDescriptor::put_Control per controllare se DACL e SACL vengono ereditate dall'oggetto dal suo contenitore padre.
  4. Usare CoCreateInstance per creare l'oggetto COM ADSI per il DACL del nuovo descrittore di sicurezza e ottenere un puntatore all'interfaccia IADsAccessControlList per tale oggetto. Tenere presente che l'ID classe è CLSID_AccessControlList.
  5. Per ogni ACE da aggiungere al DACL, usare CoCreateInstance per creare l'oggetto COM ADSI per il nuovo ACE e ottenere un puntatore all'interfaccia IADsAccessControlEntry relativo a quell'oggetto. Tenere presente che l'ID classe è CLSID_AccessControlEntry.
  6. Per ogni ACE da aggiungere al DACL, impostare le proprietà dell'ACE usando i metodi di proprietà dell'oggetto IADsAccessControlEntry. Per altre informazioni sulle proprietà da impostare su un ace, vedere Impostazione dei diritti di accesso per un oggetto.
  7. Per ogni ACE da aggiungere al DACL, utilizzare il metodo QueryInterface sull'oggetto IADsAccessControlEntry per ottenere un puntatore IDispatch. Il metodo IADsAccessControlList::AddAce richiede un puntatore all'interfaccia IDispatch per l'ACE.
  8. Per ogni ACE da aggiungere al DACL, usare IADsAccessControlList::AddAce per aggiungere la nuova ACE al DACL. Tenere presente che l'ordine degli ACL all'interno dell'ACL può influire sulla valutazione dell'accesso all'oggetto. L'accesso corretto all'oggetto potrebbe richiedere di creare un nuovo ACL, aggiungere gli ACL dall'ACL esistente nell'ordine corretto al nuovo ACL e quindi sostituire l'ACL esistente nel descrittore di sicurezza con il nuovo ACL. Per altre informazioni, vedere Order of ACEs in a DACL.
  9. Seguire i passaggi da 4 a 8 per creare il SACL per il nuovo descrittore di sicurezza.
  10. Usare il metodo IADsSecurityDescriptor::put_DiscretionaryAcl per impostare il DACL. Per ulteriori informazioni sui DACL, vedere DACL Null e DACL Vuoti.
  11. Usare il metodo IADsSecurityDescriptor::put_SystemAcl per impostare SACL.
  12. Convertire l'oggetto IADsSecurityDescriptor in un oggetto VARIANT utilizzando il metodo QueryInterface dell'oggetto IADsSecurityDescriptor per ottenere un'interfaccia IDispatch. Quindi impostare il membro vt del VARIANT su VT_DISPATCH e impostare il membro pdispVal del VARIANT uguale al puntatore IDispatch.
  13. Ottenere un puntatore all'interfaccia IADs per l'oggetto.
  14. Usare il metodo IADs::Put con "nTSecurityDescriptor" e il VARIANT creato in precedenza per scrivere il nuovo descrittore di sicurezza nella cache delle proprietà.
  15. Utilizzare il metodo IADs::SetInfo per aggiornare la proprietà dell'oggetto nella directory.