Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Při použití objektů ADSI COM IADsSecurityDescriptor (popisovač zabezpečení), IADsAccessControlList (DACLs a SACLs) a IADsAccessControlEntry (ACE) pro přidání ACE do ACL, provádíte změny na vlastnosti nTSecurityDescriptor zadaného objektu v mezipaměti vlastností. To znamená, že je třeba umístit metody na objekty obsahující nové ACE, a metoda IADs.SetInfo musí být volána, aby se aktualizovaný popisovač zabezpečení mohl zapsat do adresáře z mezipaměti vlastností.
Další informace a příklad kódu, který nastaví ACE objektu ve službě Active Directory Domain Services, najdete v tématu Příklad kódu pro nastavení ACE objektu adresáře.
Pomocí následujícího obecného procesu vytvořte ACE pro přístupové právo a nastavte ACE v seznamu DACL objektu.
Získejte IADs ukazatel na rozhraní objektu.
K získání popisovače zabezpečení objektu použijte metodu IADs.Get. Název vlastnosti obsahující popisovač zabezpečení je nTSecurityDescriptor. Vlastnost bude vrácena jako VARIANT obsahující ukazatelIDispatch (vt člen je VT_DISPATCH). Voláním QueryInterface na ten IDispatch ukazatel k získání IADsSecurityDescriptor rozhraní, které je použito pro přístup k seznamu řízení přístupu (ACL) popisovače zabezpečení pomocí metod v tomto rozhraní.
K získání seznamu DACL použijte vlastnost IADsSecurityDescriptor.DiscretionaryAcl. Metoda vrátí ukazatel IDispatch. Volejte QueryInterface na tento ukazatel IDispatch, abyste získali rozhraní IADsAccessControlList pro použití metod tohoto rozhraní k přístupu k jednotlivým ACE v seznamu ACL.
Pomocí CoCreateInstance vytvořte objekt ADSI COM pro nový objekt ACE a získejte ukazatel rozhraní IADsAccessControlEntry na tento objekt. Mějte na paměti, že ID třídy je CLSID_AccessControlEntry.
Nastavte vlastnosti ACE pomocí metod IADsAccessControlEntry:
- Pomocí IADsAccessControlEntry::put_Trustee nastavte subjekt, na který se toto ACE vztahuje. 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ý chcete použít ACE. Správce je určen jako BSTR a může mít následující formy:
- Doménový účet (přihlašovací jméno použité v předchozí verzi systému Windows NT) formuláře "<doména>\<uživatelský účet>" kde "<doména>" je název domény systému Windows NT, která obsahuje uživatele a "<uživatelský účet>" je sAMAccountName vlastnost zadaného uživatele. Příklad: "fabrikam\jeffsmith".
- Známý objekt zabezpečení, který představuje speciální identity definované systémem zabezpečení systému Windows NT, jako jsou všichni, místní systém, vlastní objekt zabezpečení, ověřený uživatel, vlastník tvůrce atd. Objekty představující dobře známé objekty zabezpečení jsou uloženy v kontejneru Dobře známé objekty zabezpečení pod kontejnerem Konfigurace. Například anonymní přihlášení.
- Integrovaná skupina, která představuje předdefinované skupiny uživatelů definované systémem zabezpečení systému Windows NT. Má tvar "BUILTIN\<název skupiny>", kde "<název skupiny>" je název předdefinované skupiny uživatelů. Objekty představující vestavěné skupiny jsou uloženy v kontejneru Builtin pod kontejnerem domény. Například BUILTIN\Administrators.
- IDENTIFIKÁTOR SID (formát řetězce) zadaného uživatele, což je objectSID vlastnost zadaného uživatele. Funkci ConvertSidToStringSid v rozhraní API zabezpečení Win32 můžete použít k převodu na řetězec. Příklad: "S-1-5-32-548".
- Pomocí vlastnosti IADsAccessControlEntry.AccessMask nastavte masku, která určuje přístupové právo. Výčet ADS_RIGHTS_ENUM určuje přístupová práva, která můžete nastavit u objektu adresáře.
- Pomocí vlastnosti IADsAccessControlEntry.AceType určete, zda chcete povolit nebo odepřít práva přístupu, která určuje AccessMask . U standardních práv to může být ADS_ACETYPE_ACCESS_ALLOWED nebo ADS_ACETYPE_ACCESS_DENIED. Pro práva specifická pro objekty (práva, která se vztahují na konkrétní část objektu nebo na určitý typ objektu), použijte ADS_ACETYPE_ACCESS_ALLOWED_OBJECT nebo ADS_ACETYPE_ACCESS_DENIED_OBJECT. Výčet ADS_ACETYPE_ENUM určuje typy přístupu, které můžete nastavit v ACE.
- Pomocí vlastnosti IADsAccessControlEntry.AceFlags určíte, zda mohou jiné kontejnery nebo objekty pod zadaným objektem inheritovat ACE. Výčet ADS_ACEFLAG_ENUM určuje příznaky dědičnosti, které můžete nastavit v ACE.
- Pomocí vlastnosti IADsAccessControlEntry.Flags určete, zda se právo vztahuje na konkrétní část objektu, zděděný typ objektu nebo obojí.
- Pokud je Flags nastavena na ADS_FLAG_OBJECT_TYPE_PRESENT, nastavte vlastnost IADsAccessControlEntry.ObjectType a zadejte řetězec obsahující GUID třídy objektu (pro ADS_RIGHT_DS_CREATE_CHILD nebo ADS_RIGHT_DS_DELETE_CHILD), vlastnost, sadu vlastností, ověřený zápis nebo rozšířená práva, na které se ACE vztahuje. Identifikátor GUID musí být zadán jako řetězec formuláře vytvořeného funkcí StringFromGUID2 v knihovně COM.
- Pokud je Flags nastavena na ADS_FLAG_INHERITED_OBJECT_TYPE_PRESENT, nastavte vlastnost IADsAccessControlEntry.InheritedObjectType tak, aby určovala řetězec obsahující identifikátor GUID zděděné třídy objektu, na kterou se vztahuje ACE. Identifikátor GUID musí být zadán jako řetězec formuláře vytvořeného funkcí StringFromGUID2 v knihovně COM.
- Pomocí IADsAccessControlEntry::put_Trustee nastavte subjekt, na který se toto ACE vztahuje. 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ý chcete použít ACE. Správce je určen jako BSTR a může mít následující formy:
Pomocí metody QueryInterface na objektu IADsAccessControlEntry získejte ukazatelIDispatch. Metoda IADsAccessControlList.AddAce vyžaduje ukazatel na rozhraní IDispatch pro ACE.
Pomocí IADsAccessControlList.AddAce přidejte nový ACE do 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í položek ACE z existujícího seznamu ACL ve správném pořadí do nového seznamu ACL a poté 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.
Pomocí vlastnosti IADsSecurityDescriptor.DiscretionaryAcl napište seznam DACL obsahující nový popisovač ACE do popisovače zabezpečení. Další informace o DACL naleznete v části Null DACLs a prázdné DACL.
Pomocí metody IADs.Put zapište popisovač zabezpečení do nTSecurityDescriptor do mezipaměti vlastností.
K aktualizaci vlastnosti objektu v adresáři použijte metodu IADs.SetInfo.