Sdílet prostřednictvím


Vytváření popisovačů zabezpečení pro nové objekty adresáře

Pomocí rozhraní ADSI můžete vytvořit popisovač zabezpečení a nastavit ho jako vlastnost nTSecurityDescriptor nového objektu , nebo jej použít k nahrazení vlastnosti nTSecurityDescriptor existujícího objektu .

Vytvoření popisovače zabezpečení pro objekt:

  1. Pomocí CoCreateInstance vytvořte objekt ADSI COM pro nový popisovač zabezpečení a získejte ukazatel rozhraní IADsSecurityDescriptor na tento objekt. Mějte na paměti, že ID třídy je CLSID_SecurityDescriptor.
  2. K nastavení vlastníka objektu použijte metodu IADsSecurityDescriptor::put_Owner. Správce je uživatel, skupina nebo jiný objekt zabezpečení. Aplikace by měla použít hodnotu z příslušné vlastnosti od uživatele nebo objektu skupiny správce, na který má ACE použít.
  3. Pomocí metody IADsSecurityDescriptor::put_Control můžete určit, zda jsou seznamy řízení přístupu DACL a SACL děděny objektem z nadřazeného kontejneru.
  4. Pomocí CoCreateInstance vytvořte ADSI COM objekt pro DACL nového popisovače zabezpečení a získejte ukazatel na rozhraní IADsAccessControlList tohoto objektu. Mějte na paměti, že ID třídy je CLSID_AccessControlList.
  5. Pro každý ACE, který chcete přidat do DACL, použijte CoCreateInstance k vytvoření ADSI COM objektu pro nový ACE a získejte ukazatel na rozhraní IADsAccessControlEntry k tomuto objektu. Mějte na paměti, že ID třídy je CLSID_AccessControlEntry.
  6. Pro každou ACE, kterou chcete přidat do DACL, nastavte její vlastnosti pomocí metod objektu IADsAccessControlEntry. Další informace o vlastnostech, které chcete nastavit v ACE, naleznete v tématu Nastavení přístupových práv u objektu.
  7. Pro každou ACE, kterou přidat do DACL, použijte metodu QueryInterface na objektu IADsAccessControlEntry k získání ukazatele IDispatch. Metoda IADsAccessControlList::AddAce vyžaduje ukazatel na rozhraní IDispatch pro ACE.
  8. Pro přidání každé ACE do seznamu DACL použijte IADsAccessControlList::AddAce k přidání nové ACE do seznamu DACL. Mějte na paměti, že pořadí řízení přístupu v rámci seznamu ACL může ovlivnit vyhodnocení přístupu k objektu. Správný přístup k objektu může vyžadovat vytvoření nového seznamu ACL, přidání ACL z existujícího seznamu ACL ve správném pořadí do nového seznamu ACL a následné nahrazení existujícího seznamu ACL v popisovači zabezpečení novým seznamem ACL. Další informace naleznete v tématu Pořadí řízení přístupu v jazyce DACL.
  9. Postupujte podle kroků 4 až 8 a vytvořte SACL pro nový popisovač zabezpečení.
  10. K nastavení DACL použijte metodu IADsSecurityDescriptor::put_DiscretionaryAcl. Další informace o DACL najdete v tématu Null DACL a prázdné DACL.
  11. K nastavení SACL použijte metodu IADsSecurityDescriptor::put_SystemAcl.
  12. Převeďte objekt IADsSecurityDescriptor na VARIANT pomocí metody QueryInterfaceobjektu IADsSecurityDescriptor a získejte rozhraní IDispatch. Potom nastavte člen vt objektu VARIANT na VT_DISPATCH a nastavte člen pdispVal objektu VARIANT rovný ukazateli IDispatch.
  13. Získejte ukazatel rozhraní IADs na objekt.
  14. Pomocí metody IADs::Put s "nTSecurityDescriptor" a VARIANT vytvořeným výše zapište nový popisovač zabezpečení do paměťové mezipaměti vlastností.
  15. Pomocí metody ID::SetInfo aktualizujte vlastnost objektu v adresáři.