Visa eller ta bort Active Directory delegerade behörigheter

Active Directory (AD) – delegering är en viktig del av många organisationers IT-infrastruktur. Genom att delegera administration kan du bara ge användare eller grupper de behörigheter de behöver utan att lägga till användare i privilegierade grupper (t.ex. domänadministratörer, Kontooperatörer). Det enklaste sättet att utföra delegering är att använda guiden delegering av kontroll i snapin-modulen Microsoft Management Console (MMC) Active Directory-användare och datorer.

relaterat: hantera Active Directory med PowerShell

även om guiden delegering av kontroll ger ett enkelt sätt att delegera behörigheter finns det ingen motsvarande guide för att ta bort delegerade behörigheter. Någon hos Microsoft måste ha märkt denna brist och skapat ett kommandoradsprogram med namnet Dsrevoke.exe som kan ta bort behörighetsposter som lagts till av guiden delegering av kontroll.

emellertid Dsrevoke.exe-programmet har två viktiga tekniska begränsningar, som dokumenteras i Microsoft-artikeln “När du använder kommandoradsverktyget dsrevoke för att rapportera behörigheter för alla organisationsenheter i en Windows Server 2003-baserad domän, kanske verktyget inte returnerar alla åtkomstkontrollposter.”Dessa begränsningar är:

  • Dsrevoke.exe kan bara hitta upp till 1000 OUs i en enda sökning. Den föreslagna lösningen för denna begränsning är att starta programmets sökning i en djupare kapslad organisationsenhet (OU) för att minska antalet resultat.
  • Dsrevoke.exe misslyckas om några ou: er innehåller ett snedstreck (/) tecken i deras namn. Det finns ingen lösning för denna begränsning annat än att byta namn på den kränkande OUs.

när du arbetar med Dsrevoke.exe nyligen kunde jag komma runt det första problemet, men sedan stötte jag på det andra problemet. Av organisatoriska skäl var det inte ett alternativ att byta namn på OUs för att ta bort slash-tecknet. Dessutom är snedstrecket ett giltigt tecken i ett OU-namn och Dsrevoke.exe ska fungera oavsett om en OU innehåller ett snedstreck i sitt namn eller inte. Att arbeta runt 1000 ou-gränsen i min miljö var också tidskrävande.

på grund av dessa problem bestämde jag mig för att se om det fanns några inbyggda alternativ till Dsrevoke.exe. Från och med de senaste versionerna av Windows, Dsacls.exe-programmet ger ett sätt att ta bort de behörigheter som lagts till av delegeringen av Kontrollguiden. Även om det inte misslyckas om en OU innehåller ett snedstreck i sitt namn, Dsacls.exe kan inte söka underbehållare för behörigheter som Dsrevoke.exe gör.

jag bestämde mig först för att bara skriva ett enkelt skript för att söka efter OUs och ringa Dsacls.exe för att ta bort de delegerade behörigheterna från varje OU. Men när jag tänkte på hur jag ville utforma ett sådant skript, hände det mig att jag också skulle vilja se en lista över vilka OUs hade behörigheter delegerade till en viss användare eller grupp. Dsrevoke.exe och Dsacl.exe kan producera en lista med behörigheter, men utgången är mycket lång och teknisk. Jag ville ha något enklare.

på grund av begränsningarna i Dsrevoke.exe och Dsacl.exe, och min önskan att få kortare utgång, bestämde jag mig för att skriva ett Windows PowerShell-skript för att få den funktionalitet jag ville ha. Resultatet är Remove-DSACE. ps1. Innan jag diskuterar det här skriptet måste jag dock ge lite bakgrundsinformation om vad som händer när du använder delegeringen av Kontrollguiden samt täcka några grundläggande Windows-säkerhetskoncept.

lägga till delegerade behörigheter med guiden

som jag tidigare nämnde ger guiden delegering av kontroll Ett enkelt sätt att delegera behörigheter. Anta till exempel att du vill att medlemmar i gruppen för återställning av lösenord ska kunna återställa lösenord för användare i OU för alla användare i din ANNONSDOMÄN. För att göra detta måste du utföra dessa steg:

  1. öppna konsolen Active Directory-användare och datorer.
  2. högerklicka på alla användare OU och välj delegera kontroll, som visas i Figur 1. Klicka på knappen Nästa för att gå förbi guidens välkomstsida.

Figur 1: Starta guiden delegering av kontroll

  1. klicka på knappen Lägg till på sidan användare eller grupper i guiden.
  2. i dialogrutan Välj användare, datorer eller grupper anger du gruppens namn (återställning av lösenord), klickar på knappen Kontrollera namn för att se till att gruppens namn är korrekt och klickar på OK, som visas i Figur 2.
Figur 2: Ange gruppens namn
Figur 2: Ange gruppens namn
  1. när du har kontrollerat att gruppens namn är listat på sidan Användare eller grupper klickar du på nästa, som visas i Figur 3.
Figur 3: Se till att gruppens namn är listat
Figur 3: Se till att gruppens namn är listat
  1. på sidan uppgifter att delegera väljer du Återställ användarlösenord och tvinga lösenordsbyte vid nästa inloggning och klicka på nästa, som visas i Figur 4.
Figur 4: Välja de uppgifter som ska delegeras
Figur 4: Välja de uppgifter som ska delegeras
  1. verifiera informationen på den sista sidan i guiden och klicka på Slutför.

när du klickar på knappen Slutför lägger guiden delegering av kontroll till de begärda behörigheterna för alla användare. Du kan visa effekterna av delegeringen genom att högerklicka på OU för alla användare, välja Egenskaper och välja fliken Säkerhet. (Om fliken Säkerhet inte är synlig aktiverar du alternativet Avancerade funktioner på menyn Visa i konsolen Active Directory-användare och datorer.) För en detaljerad vy kan du klicka på knappen Avancerat. Figur 5 visar dialogrutan Avancerade säkerhetsinställningar som visas.

 Figur 5: Granska DACL för alla användare ou
Figur 5: Granska DACL för alla användare ou

ACL, Ess och förvaltare—Oh My!

för att förstå informationen som tillhandahålls i dialogrutan Avancerade säkerhetsinställningar måste du veta om följande Windows-säkerhetskoncept: åtkomstkontrolllista (ACL), ÅTKOMSTKONTROLLPOST (ACE), förvaltare och arv. Du måste också förstå dessa begrepp för att använda Remove-DSACE. ps1.

ACL. Det finns två typer av ACL: diskretionära ACL (DACL) och system ACL (SACL). En DACL identifierar de konton som tillåts eller nekas åtkomst till ett objekt. En SACL beskriver hur en administratör vill logga försök att komma åt ett objekt (dvs. granskning).

ess. En ACL består av ess. Varje ACE identifierar en förvaltare och anger förvaltarens åtkomst (Tillåt, neka eller granska) för objektet. Delegering av Styrguiden lägger ess till en annons containers DACL. Figur 5 visar DACL för alla användare OU. I denna figur är termen tillståndsinmatning synonymt med ACE.

förvaltare. En förvaltare är entiteten (en användare, säkerhetsgrupp eller inloggningssession) som ett ACE gäller. Varje ess gäller för en enda förvaltare. I Figur 5 är termen rektor synonymt med förvaltare. Figur 5 visar att det finns två ess som tilldelats gruppen för återställning av lösenord. Med andra ord är Lösenordsåterställningsgruppen förvaltaren (rektor) för dessa två ess.

arv. Ett ess kan appliceras direkt på ett objekt, eller det kan ärvas från resursens överordnade objekt. I Figur 5 är de två esserna för alla användare OU som innehåller Lösenordsåterställningsgruppen som förvaltare inte ärvda från moderbehållaren (dvs den ärvda från kolumnen läser ingen) eftersom delegeringen av Kontrollguiden lade dem direkt till DACL. Figur 6 visar DACL för redovisning OU. Bokförings-OU: s DACL innehåller två ess för Lösenordsåterställningsgruppen, men dessa Ess ärvs från alla användare OU (dvs den ärvda från kolumnen läser OU=alla användare, DC=fabrikam,DC=lokal).

 Figur 6: granska DACL för redovisningen OU
Figur 6: granska DACL för redovisningen ou

introduktion Remove-DSACE. ps1

jag skrev Remove-dsace.ps1 (kort för remove directory service ACEs) för att uppnå följande mål:

  • hitta OUs som innehåller icke-ärvda ess som innehåller en förvaltare.
  • Recurse till sub-OUs om så önskas.
  • ta bort icke-ärvda ess som innehåller en förvaltare.
  • producera kortfattad utgång.

skriptets syntax är som följer:

Remove-DSACE path 

parametern-Report eller-Remove avgör om skriptet kommer att lista eller ta bort icke-ärvda Ess. Om du anger-Report hittar skriptet icke-ärvda ess som innehåller förvaltare, men det tar inte bort dem. Om du anger-ta bort, tar skriptet bort de icke-ärvda esserna. Det är väldigt viktigt att förstå att manuset kommer att ta bort alla icke-ärvda Ess för förvaltaren, inte bara ess som läggs till av delegeringen av Kontrollguiden. Detta beror på att det inte finns något sätt att bestämma hur de icke-ärvda esserna tillsattes.

parametrarna-rapport och-ta bort är valfria, men skriptet antar parametern-rapport som standard. Skriptet kommer att kasta ett fel om du anger båda parametrarna samtidigt.

du använder parametern-Path för att ange ett eller flera utmärkta namn (DNs) för AD ou: er. Parameternamnet-Path är valfritt och accepterar pipelineingång. Även om du kan ange flera DNs kan du inte använda jokertecken.

parametern-Trustee namnger förvaltaren att hitta i Ess. Manuset undersöker varje OU: s DACL för icke-ärvda ess som innehåller den namngivna förvaltaren. Du kan ange flera förvaltare med en kommaavgränsad lista eller en array, men du kan inte använda jokertecken. Du kan ange förvaltarnamn med något av namnformaten som anges i Tabell 1.

Format Exempel
Tabell 1: Namnformat för parametern-Trustee
namngivningsformat för Windows NT 4.0 (NT4) FABRIKAM \ KenDyer
objektets DN CN=Ken Dyer, CN=användare, DC = fabrikam, DC = com
objektets kanoniska namn fabrikam.com/Users/Ken Dyer
objektets användarnamn (UPN)

du inkluderar parametern-Recurse om du vill söka efter OUs under den angivna OU. Om du vill ansluta till en specifik domänkontrollant (DC) kan du ange serverns namn med parametern
-ServerName. Både parametrarna-Recurse och-ServerName är valfria.

skriptet stöder alternativa referenser. Parametern-Credential använder ett PSCredential-objekt som innehåller användarnamnet och lösenordet som skriptet ska använda för att ansluta till domänen.

skriptet stöder också parametern-Confirm. Parametern-Confirm är endast meningsfull i kombination med parametern-Remove. Parametern-Confirm är aktiverad som standard, såvida du inte inaktiverar den genom att ange-Confirm:$FALSE eller genom att ställa in variabeln $ConfirmPreference till None. Du bör bara inaktivera parametern-bekräfta när du är helt säker på att du tar bort rätt Ess.

skriptet producerar utdataobjekt som innehåller de egenskaper som anges i Tabell 2.

fastighet beskrivning
Tabell 2: Utmatningsobjektegenskaper för Remove-DSACE.ps1
sökväg OU: s DN
förvaltare förvaltarens namn i DOMÄNNAMNSFORMAT
Ess antalet icke-ärvda ess i OU: s ACL
resultat * ordet “borttagen” eller ett felmeddelande
*Resultategenskapen existerar endast när parametern-ta bort används.

manuset innehåller endast OUs med icke-ärvda ess som innehåller en förvaltare. Ärvda Ess för en förvaltare ingår inte i utgången. Figur 7 visar två exempel. Det första kommandot i Figur 7 ger ingen utgång eftersom DACL för redovisning OU inte innehåller några icke-ärvda Ess för Lösenordsåterställningsgruppen. (Redovisningen OU har två ess för gruppen för återställning av lösenord, men dessa Ess ärvs från alla användare OU, som visas i Figur 6.) Det andra kommandot i Figur 7 producerar utgång. Det finns två icke-ärvda Ess för Lösenordsåterställningsgruppen i alla användare OU (som ses i Figur 5).

Figur 7: jämföra utdata från två kommandon
Figur 7: Jämföra utdata från två kommandon

verkliga exempel

Låt oss titta på hur du kan använda Remove-DSACE.ps1 i den verkliga världen. Antag att en administratör i fabrikam.lokal domän hade använt delegering av Kontrollguiden för att delegera behörigheter till Sekreterargruppen i OU för alla användare och några av ou: erna under den, men han kommer inte ihåg vilka ou: er. Du måste ta bort dessa delegerade behörigheter så att du kan delegera behörigheterna till andra grupper.

först måste du se en lista de ou: er som har icke-ärvda ess som innehåller Sekreterargruppen. För att göra det kan du använda kommandot:

Remove-DSACE -Report ` -Path "OU=All Users,DC=fabrikam,DC=local" ` -Trustee "FABRIKAM\Secretarial_Staff" ` -Recurse | Format-List

detta kommando och dess utgång visas i Figur 8.

figur 8: lista de ou: er som har icke-ärvda ess som innehåller Sekreterargruppen
figur 8: lista de ou: er som har icke-ärvda ess som innehåller Sekreterargruppen

från denna utgång kan du se att det finns tre ou: er som har icke-ärvda ess som innehåller Sekreterargruppen. När du har verifierat att du kan ta bort dessa ess kan du ersätta parametern-Report med parametern-Remove och upprepa kommandot, som visas i Figur 9. Som jag nämnde tidigare, om Sekreterargruppen har tilldelats några andra behörigheter utanför delegationen av Kontrollguiden, kommer de också att tas bort.

Figur 9: Ta bort ou: erna som har icke-ärvda ess som innehåller Sekreterargruppen
Figur 9: Ta bort ou: erna som har icke-ärvda ess som innehåller Sekreterargruppen

ta kontroll över Annonsdelegationen

guiden delegering av kontroll är ett mycket användbart verktyg, men det finns inget enkelt sätt att snabbt visa eller vända dess effekter. Även om du kan använda Dsrevoke.exe och Dsacl.exe för att utföra dessa uppgifter har dessa verktyg vissa begränsningar. Om du använder skriptet Remove-DSACE.ps1 istället har du bättre kontroll över delegerade behörigheter i AD. Du kan ladda ner det här skriptet genom att klicka på knappen Hämta koden längst upp på sidan.

relaterade videor från Brian Desmond (endast VIP-åtkomst):
Session 1: Mastering av Active Directory-Behörighetsdelegation
Session 2: Mastering av Active Directory-Säkerhetsbehörighetsdelegation

Leave a Reply