zobrazit nebo odebrat oprávnění delegovaná službou Active Directory
delegace Active Directory (AD) je kritickou součástí IT infrastruktury mnoha organizací. Delegováním správy můžete udělit uživatelům nebo skupinám pouze potřebná oprávnění, aniž byste přidávali uživatele do privilegovaných skupin (např. Správci domén, provozovatelé účtů). Nejjednodušší způsob, jak dosáhnout delegování, je pomocí Průvodce delegováním řízení v modulu snap-in uživatelé a počítače služby Microsoft Management Console (MMC) Active Directory.
související: Správa služby Active Directory s PowerShell
přestože průvodce delegováním řízení poskytuje snadný způsob delegování oprávnění, neexistuje žádný odpovídající průvodce pro odstranění delegovaných oprávnění. Někdo v Microsoftu si musel všimnout tohoto nedostatku a vytvořil program příkazového řádku s názvem Dsrevoke.exe, který může odstranit položky oprávnění přidané delegováním průvodce řízením.
nicméně, Dsrevoke.exe program má dvě důležité technické omezení, které jsou zdokumentovány v článku společnosti Microsoft ” při použití nástroje Dsrevoke příkazového řádku hlásit oprávnění pro všechny organizační jednotky v doméně se systémem Windows Server 2003, nástroj nemusí vrátit všechny položky řízení přístupu.”Tato omezení jsou:
- Dsrevoke.exe může najít pouze až 1000 ou V jednom vyhledávání. Navrhovaným řešením tohoto omezení je spuštění vyhledávání programu v hlouběji vnořené organizační jednotce (OU), aby se snížil počet výsledků.
- Dsrevoke.exe selže, pokud některá ou obsahují ve svých jménech znak lomítka ( / ). Neexistuje žádné řešení pro toto omezení kromě přejmenování problematických ou.
při práci s Dsrevoke.exe nedávno jsem byl schopen vyřešit první problém, ale pak jsem narazil na druhý problém. Z organizačních důvodů nebylo možné přejmenovat OUs, aby se odstranil znak lomítka. Kromě toho, lomítko je platný znak v názvu OU, a Dsrevoke.exe by měl fungovat bez ohledu na to, zda OU obsahuje lomítko ve svém názvu nebo ne. Také práce kolem limitu 1000 OU v mém prostředí byla časově náročná.
kvůli těmto problémům jsem se rozhodl zjistit, zda existují nějaké vestavěné alternativy k Dsrevoke.exe. Počínaje nedávnými verzemi systému Windows, Dsacls.program exe poskytuje způsob, jak odstranit oprávnění přidaná delegováním průvodce ovládáním. Ačkoli to nezklame, pokud OU obsahuje lomítko ve svém názvu, Dsacls.exe nemůže vyhledávat subkontejnery pro oprávnění, jako je Dsrevoke.exe dělá.
nejprve jsem se rozhodl napsat jednoduchý skript pro vyhledávání OUs a volání Dsacl.exe pro odstranění přenesených oprávnění z každého OU. Když jsem však přemýšlel o tom, jak chci navrhnout takový skript, napadlo mě, že bych také rád viděl seznam, který ou měl oprávnění delegovaná na konkrétního uživatele nebo skupinu. Dsrevoke.exe a Dsacls.exe může vytvořit seznam oprávnění, ale výstup je velmi dlouhý a technický. Chtěl jsem něco jednoduššího.
vzhledem k omezením v Dsrevoke.exe a Dsacls.exe a moje touha získat kratší výstup, rozhodl jsem se napsat skript Windows PowerShell, abych získal funkčnost, kterou jsem chtěl. Výsledkem je Remove-DSACE. ps1. Než budu diskutovat o tomto skriptu, Musím však poskytnout nějaké základní informace o tom,co se stane, když použijete delegování průvodce řízením, a také pokrýt některé základní koncepty zabezpečení systému Windows.
přidání delegovaných oprávnění pomocí Průvodce
jak jsem již zmínil, delegování průvodce řízením poskytuje snadný způsob delegování oprávnění. Předpokládejme například, že chcete, aby členové skupiny pro resetování hesla mohli resetovat hesla pro uživatele v OU všichni uživatelé ve vaší reklamní doméně. Chcete-li to provést, musíte provést tyto kroky:
- otevřete konzolu uživatelé služby Active Directory a počítače.
- klepněte pravým tlačítkem myši na OU pro všechny uživatele a zvolte delegát řízení, jak je znázorněno na obrázku 1. Kliknutím na tlačítko Další postupujete kolem uvítací stránky průvodce.
- na stránce uživatelé nebo skupiny průvodce klikněte na tlačítko Přidat.
- v dialogovém okně Vybrat uživatele, počítače nebo skupiny zadejte název skupiny (Reset hesla), klikněte na tlačítko Zkontrolovat Názvy, abyste se ujistili, že je název skupiny správný, a klikněte na OK, jak je znázorněno na obrázku 2.
- poté, co se ujistíte, že název skupiny je uveden na stránce uživatelé nebo skupiny, klepněte na tlačítko Další, jak je znázorněno na obrázku 3.
- na stránce úkoly delegovat vyberte možnost obnovit uživatelská hesla a vynutit změnu hesla při příštím přihlášení a klepněte na tlačítko Další, jak je znázorněno na obrázku 4.
- ověřte informace na závěrečné stránce průvodce a klikněte na Dokončit.
když kliknete na tlačítko Dokončit, průvodce delegováním řízení přidá požadovaná oprávnění všem uživatelům OU. Účinky delegování můžete zobrazit kliknutím pravým tlačítkem myši na OU všichni uživatelé, výběrem vlastností a výběrem karty zabezpečení. (Pokud karta Zabezpečení není viditelná, povolte možnost Pokročilé funkce v nabídce Zobrazit v konzole uživatelé služby Active Directory a počítače.) Pro detailní pohled můžete kliknout na tlačítko Upřesnit. Obrázek 5 ukazuje dialogové okno Pokročilé nastavení zabezpečení, které se zobrazí.
ACLs, ACEs a Trustees-Ach můj!
Chcete-li porozumět informacím poskytovaným v dialogovém okně Pokročilé nastavení zabezpečení, musíte vědět o následujících konceptech zabezpečení systému Windows: seznam řízení přístupu (ACL), položka řízení přístupu (ACE), správce a dědičnost. Musíte také pochopit tyto pojmy použít Remove-DSACE. ps1.
ACL. Existují dva druhy ACL: diskreční ACL (Dacl) a systémové ACL (Sacl). DACL identifikuje účty, kterým je povolen nebo odepřen přístup k objektu. SACL popisuje, jak chce správce protokolovat pokusy o přístup k objektu (tj.
eso. ACL se skládá z ES. Každé eso identifikuje správce a určuje přístup správce (povolit, zakázat nebo audit) k objektu. Průvodce delegováním řízení přidává esa do DACL reklamního kontejneru. Figura 5 ukazuje DACL pro všechny uživatele OU. Na tomto obrázku je termín vstup povolení synonymem ACE.
Správce. Správce je entita (uživatel, skupina zabezpečení nebo přihlašovací relace), na kterou se vztahuje ACE. Každé eso se vztahuje na jednoho správce. Na obrázku 5, termín hlavní je synonymem pro správce. Obrázek 5 ukazuje, že do skupiny pro obnovení hesla jsou přiřazena dvě esa. Jinými slovy, skupina pro resetování hesla je správcem (hlavním) těchto dvou es.
dědičnost. ACE lze použít přímo na objekt nebo jej lze zdědit z nadřazeného objektu zdroje. Na obrázku 5, dvě esa pro všechny uživatele OU, které obsahují skupinu pro resetování hesla jako správce, nejsou zděděna z nadřazeného kontejneru (tj. sloupec zděděno z přečte Žádné), protože průvodce delegováním kontroly je přidal přímo do DACL. Obrázek 6 ukazuje DACL pro účetní OU. Dacl účetního OU obsahuje dvě esa pro skupinu pro resetování hesla, ale tato esa jsou zděděna od OU všech uživatelů (tj. zděděný ze sloupce čte OU=všichni uživatelé, DC=fabrikam, DC=local).
Představujeme Remove-DSACE. ps1
napsal jsem Remove-DSACE. ps1 (zkratka pro remove directory service ACEs), abych dosáhl následujících cílů:
- Najděte ou obsahující nezděděná esa obsahující Správce.
- rekurze do sub-OU v případě požadavku.
- odstraňte nezděděná esa obsahující Správce.
- produkovat stručné výstup.
syntaxe skriptu je následující:
Remove-DSACE path
parametr-Report nebo-Remove určuje, zda skript vypíše nebo odstraní nezděděná esa. Pokud zadáte-Report, skript najde nezděděná esa obsahující správce, ale neodstraní je. Pokud zadáte-Remove, skript odstraní nezděděná esa. Je velmi důležité si uvědomit, že skript odstraní všechny nezděděné ESA pro správce, nejen esa přidaná delegací průvodce kontrolou. Je to proto, že neexistuje žádný způsob, jak určit, jak byly přidány nezděděné esa.
parametry-Report a-Remove jsou volitelné, ale skript ve výchozím nastavení předpokládá parametr-Report. Skript vyvolá chybu, pokud zadáte oba parametry současně.
pomocí parametru-Path můžete zadat jeden nebo více rozlišených názvů (DNs) AD ou. Název parametru-Path je volitelný a přijímá vstup potrubí. I když můžete zadat více DNs, nemůžete použít zástupné znaky.
parametr-Správce pojmenuje správce, který má najít v Esech. Skript zkoumá dacl každého OU pro nezděděná esa obsahující jmenovaného Správce. Můžete určit více správců pomocí seznamu odděleného čárkami nebo pole, ale nemůžete použít zástupné znaky. Jména správců můžete určit pomocí libovolného formátu jmen uvedeného v tabulce 1.
Formát | Příklad |
---|---|
Windows NT 4.0 formát pojmenování (NT4) | FABRIKAM\KenDyer |
objekt je DN | CN=Ken Dyer, CN=Users, DC=fabrikam, DC=com |
kanonický název objektu | fabrikam.com/Users/Ken Dyer |
Hlavní jméno uživatele objektu (UPN) |
pokud chcete hledat ou pod zadaným OU, zahrnete parametr-Recurse. Pokud se chcete připojit k určitému řadiči domény (DC), můžete zadat název serveru pomocí parametru
-název serveru. Parametry-Recurse i-ServerName jsou volitelné.
skript podporuje alternativní pověření. Parametr-pověření používá objekt PSCredential, který obsahuje uživatelské jméno a heslo, které by skript měl použít pro připojení k doméně.
skript také podporuje parametr-Confirm. Parametr-Confirm má význam pouze v kombinaci s parametrem-Remove. Parametr-Confirm je ve výchozím nastavení povolen, pokud jej nezakážete zadáním-Confirm:$FALSE nebo nastavením proměnné $ConfirmPreference na None. Parametr-Confirm byste měli zakázat, pouze pokud jste si naprosto jisti, že odstraníte správná esa.
skript vytváří výstupní objekty obsahující vlastnosti uvedené v tabulce 2.
vlastnost | popis |
---|---|
cesta | DN OU |
Správce | jméno správce ve formátu domain\name |
esa | počet nezděděných ES v ACL OU |
výsledek * | slovo “odstraněno” nebo chybová zpráva |
*vlastnost výsledek existuje pouze při použití parametru-Remove. |
skript obsahuje pouze ou s nezděděnými esy obsahujícími Správce. Zděděná ESA pro správce nejsou součástí výstupu. Obrázek 7 ukazuje dva příklady. První příkaz na obrázku 7 nevytváří žádný výstup, protože DACL pro účetní OU neobsahuje žádné nezděděné ESA pro skupinu pro resetování hesla. (Účetní OU má dvě esa pro skupinu resetování hesla, ale tato esa jsou zděděna od OU všech uživatelů, jak je znázorněno na obrázku 6.) Druhý příkaz na obrázku 7 vytváří výstup. Existují dvě nezděděná ESA pro skupinu pro resetování hesla v OU pro všechny uživatele (jak je vidět na obrázku 5).
příklad reálného světa
podívejme se, jak můžete použít Remove-DSACE. ps1 v reálném světě. Předpokládejme, že správce ve fabrikamu.místní doména použila průvodce delegováním kontroly k delegování oprávnění skupině zaměstnanců sekretariátu v OU všech uživatelů a některých ou pod ním, ale nepamatuje si, který ou. Tato přenesená oprávnění musíte odstranit, abyste mohli oprávnění delegovat na jiné skupiny.
nejprve musíte vidět seznam ou, které mají nezděděná esa obsahující skupinu sekretářských zaměstnanců. Chcete-li tak učinit, můžete použít příkaz:
Remove-DSACE -Report ` -Path "OU=All Users,DC=fabrikam,DC=local" ` -Trustee "FABRIKAM\Secretarial_Staff" ` -Recurse | Format-List
tento příkaz a jeho výstup jsou znázorněny na obrázku 8.
z tohoto výstupu můžete vidět, že existují tři ou, které mají nezděděná esa obsahující skupinu zaměstnanců sekretariátu. Po ověření, že můžete tyto esa odstranit, můžete parametr-Report nahradit parametrem-Remove a příkaz opakovat, jak je znázorněno na obrázku 9. Jak jsem již zmínil, pokud byla skupině zaměstnanců sekretariátu přidělena jakákoli jiná oprávnění mimo průvodce delegováním kontroly, budou také odstraněna.
převzít kontrolu nad delegováním AD
delegování průvodce kontrolou je velmi užitečný nástroj, ale neexistuje snadný způsob, jak rychle zobrazit nebo zvrátit jeho účinky. I když můžete použít Dsrevoke.exe a Dsacls.exe pro splnění těchto úkolů mají tyto nástroje určitá omezení. Pokud místo toho použijete skript Remove-DSACE. ps1, budete mít lepší kontrolu nad delegovanými oprávněními v AD. Tento skript si můžete stáhnout kliknutím na tlačítko Stáhnout kód v horní části stránky.
související videa od Briana Desmonda (pouze VIP přístup):
Session 1: Mastering delegování oprávnění služby Active Directory
Session 2: Mastering delegování oprávnění zabezpečení služby Active Directory
Leave a Reply