Dynamické uživatelské skupiny Active Directory s PowerShell

Při správě přístupu a uživatelských nastavení v doméně služby Active Directory může být úkolem správce vytvořit dynamické skupiny uživatelů AD. Taková dynamická skupina by měla automaticky zahrnovat nebo vyloučit uživatele ze skupiny v závislosti na nastavení uživatelského účtu v doméně. Například chcete automaticky přidat uživatele z určité OU do skupiny nebo vytvořit skupinu uživatelů, která zahrnuje všechny účty určitého oddělení (pole Department) atd. Dynamické skupiny umožňují správci zjednodušit proces přiřazování oprávnění souborovým serverům, pracovním stanicím atd..

Služba Active Directory nemá vestavěné funkce pro dynamické skupiny zabezpečení. Můžete si však vytvořit skript PowerShell, který automaticky vybere uživatele ze služby Active Directory podle konkrétního kritéria a přidá uživatele do konkrétní skupiny zabezpečení AD (můžete dočasně) a odebere účty ze skupiny, které již nespadají pod podmínky vytváření skupiny.

Při změně atributů uživatele v AD by skript měl automaticky přidat nebo vyloučit uživatele ze skupiny.

Chcete-li použít takové dynamické skupiny uživatelů, musíte zachovat všechna pole použitá ve výběrových kritériích co nejrelevantnější pro všechny účty (například při vytváření nových uživatelů skriptem PowerShell musíte okamžitě určit město, oddělení, organizaci atd.).

  • Na serveru Exchange Server existují dynamické distribuční skupiny (Exchange Dynamic Distribution List), které se vytvářejí automaticky na základě uživatelských kritérií, například hodnot v poli „company“ (company in AD), OU, kde je uživatel umístěn, pole City, Exchange server, na kterém nebo jakýkoli jiný atribut uživatele ve službě Active Directory. Dynamické distribuční skupiny však lze použít pouze k vytváření distribučních skupin, nikoli však bezpečnostních skupin;
  • V Azure AD jsou zabudovány dynamické skupiny. V tomto adresáři můžete vytvořit různá dynamická pravidla členství pro skupiny zabezpečení a skupiny Office 365;
  • Schopnost dynamických skupin poskytovat přístup může být částečně nahrazena funkcí Dynamic Access Control (DAC) v systému Windows Server 2012 a novějším;

Předpokládejme, že musíte automaticky přidat všechny uživatele z více organizačních jednotek, jejichž pole „Oddělení“ v AD říká „Obchodní oddělení" Napsal jsem takový skript PowerShell (pro jeho fungování je vyžadován modul Active Directory pro Windows PowerShell, rutina Get-ADUser se používá k získání informací o uživatelích a rutinách správy skupin AD - Add-ADGroupMember, Get-ADGroupMember a Remove-ADGroupMember).

## Název vaší AD domény
$ ADDomain = 'dc = winitpro, dc = ru'
## Dynamic Group Name
$ ADGroupname = 'mskSales'
Seznam ## OU pro vyhledávání uživatelů
$ ADOUs = @ (
"OU = Uživatelé, OU = Účty, OU = SPB, $ ADDomain",
"OU = Uživatelé, OU = Účty, OU = MSK, $ ADDomain"
)
$ users = @ ()
# Hledat uživatele podle zadaného OU
foreach ($ OU v $ ADOU)
$ users + = Get-ADUser -SearchBase $ OU -Filter Department-like Sales Department

foreach ($ user in $ users)

Add-ADGroupMember --Identity $ ADGroupname -Member $ user.samaccountname -ErrorAction SilentlyContinue

## Nyní zkontrolujeme, zda všichni uživatelé skupiny splňují kritéria výběru, a pokud uživatel nesplňuje (převeden do jiného OU, oddělení se změnilo), vyloučíme jej ze skupiny
$ members = Get-ADGroupMember -Identity $ ADGroupname
foreach ($ member in $ members)

pokud ($ member.distinguishedname - notlike "* OU = Users, OU = Accounts, OU = SPB, $ ADDomain *" - and $ member.distinguishedname - notlike "* OU = Users, OU = Accounts, OU = MSK, $ ADDomain * ")

Remove-ADGroupMember --Identity $ ADGroupname -Member $ member.samaccountname -Confirm: $ false

if ((Get-ADUser --identity $ member - Department of Department | Select-Object Department) .department - notlike "Sales Department")

Remove-ADGroupMember --Identity $ ADGroupname -Member $ member.samaccountname -Confirm: $ false



Spusťte skript a ověřte, že v důsledku toho se do skupiny mskSales automaticky přidají všichni uživatelé z dat OU, pro které je v poli Department zadáno „Sales department“. Všichni uživatelé, kteří tato kritéria nesplňují, jsou z této skupiny vyloučeni..

Tento skript je třeba spouštět ručně, ale je lepší jej pravidelně spouštět samostatným úkolem Plánovače úloh, jménem účtu, který má práva AD pro uživatele a skupiny (nespouštějte skript zpod administrátora domény, všechna potřebná práva můžete delegovat na obvyklé servisní účet nebo účet gmsa).

Tento skript PowerShell lze použít jako rámec pro vytváření vlastních pravidel pro vytváření dynamických skupin v AD.