Duket se kam një karma të tillë: të realizoj detyra standarde në mënyra gjithnjë e më të pazakonta. Nëse dikush ka një vizion tjetër të problemit - ju lutem, ftoni në diskutim për të shqyrtuar çështjen.
Një mëngjes të bukur u shfaq një detyrë interesante që ishte ndarja e të drejtave për grupet e përdoruesve në ndarjet e ndryshme, të cilat përmbanin nëndërfoldera projektesh me dosje dokumentesh. Të gjitha ishin mirë dhe u shkrua një skenar për të caktuar të drejtat në dosje. Më pas doli se grupet duhej të përfshinin përdorues nga domaine të ndryshme, nga pyje të ndryshme (). Le të supozojmë, ndarja vetë, është hostuar në një pajisje Synology, e regjistruar në domainin FB, pylli PSI. Detyra: të lejohet përdoruesve domenëve të pyllit tjetër të kenë akses në përmbajtjen e kësaj ndarjeje, mjaft selektivisht.
Të dhënat e kërkesës për detyra, me kalimin e kohës, po paraqiteshin në formën e mëposhtme:
- 2 pyje: Pylli PSI, pylli TG.

- Në çdo pyll janë 3 domaine: PSI (ZG, PSI, FB); TG (TG, HU, KC).
- Mes pyjëve - marrëdhënie besimi, Synology sheh të gjitha grupet e Sigurisë, në të gjitha pyjet.
- Në ndarjet dhe dosjet/nëndosjet patjetër duhet të jenë llogaritë e administratorëve të domainit FB me të drejta FullControl
- Emrat e dosjeve të ndarjeve duhet të sistematizohen. Miratimi i ID-ve të projekteve u mor nga drejtuesit, unë vendosa që emrat e grupeve të Sigurisë t'i lidhja me ID-të e projekteve.
- Dosjet e projekteve nĂ« ndarjet sistematike duhet tĂ« pĂ«rmbajnĂ« njĂ« strukturĂ« tĂ« pĂ«rgatitur paraprakisht nĂ« skedarin .xlsx, me privilegjet pĂ«rkatĂ«se tĂ« aksesi (R/RW/NA, ku NA â nuk ka akses)

- Duhet të ketë mundësinë për të kufizuar të drejtat e përdoruesve/anëtarëve të grupit të një projekti vetëm në katalogët e caktuar të këtij projekti. Për katalogë/të tjera projekte, përdoruesi mund të mos ketë akses, sipas anëtarësisë në grupe.
- Kur krijohet dosja e projektit, grupet në domenet përkatëse duhet të krijohen automatikisht me emra përkatës për ID-të e projekteve.
Shënime për kërkesën e detyrave
- Konfigurimi i marrëdhënieve të besimit nuk bën pjesë në kërkesën e detyrave
- ID e projektit përmban numra dhe latinisht
- Rolat e përdoruesve të projekteve për të gjitha domainet kanë emra standard
- Skedari .xlsx me dosjet dhe të drejtat e aksesit (matrica e aksesit) përgatitet para fillimit të realizimit të gjithë projektit
- Në realizimin e projekteve, mund të krijohen grupe përdoruesish në domenet përkatëse
- Automatizimi arrihet përmes përdorimit të mjeteve të zakonshme të administratës MS Windows
Realizimi i kërkesës për detyra
Pas formalizimit të këtyre kërkesave, u mor një pauzë taktike për të provuar metodat e krijimit të katalogëve dhe caktimit të të drejtave mbi to. Kishim për qëllim të përdornim vetëm PowerShell për të mos e komplikuar projektin. Siç kam shkruar më parë, algoritemi i skenarit dukej mjaft i thjeshtë:
- regjistrojmĂ« grupet me emra tĂ« nxjerrĂ« nga ID e projektit (p.sh., KC40587) dhe rolat pĂ«rkatĂ«se, tĂ« shĂ«nuara nĂ« matricĂ«n e aksesit: KC40587-EN- pĂ«r inxhinierin; KC40587-PM â pĂ«r menaxherin e produktit etj.
- marim SID-të e grupeve të krijuara
- regjistrojmë dosjen e projektit dhe setin përkatës të katalogëve (lista e nëndosjeve varet nga ndarja, ku krijohet dhe është përcaktuar në matricën e aksesit)
- caktojmë në nënkatalogët e ri të projektit të drejtat për grupet sipas matricës së aksesit.
Vështirësitë me të cilat u përballëm në fazën e parë:
- mungesa e kuptimit të mënyrës së caktimit të matricës së aksesit në skenar (tanë është implementuar një array shumë dimensional, por po kërkohet një mënyrë për ta plotësuar atë në bazë të përmbajtjes së skedarit .xlsx/matricës së aksesit)

- pamundësia e caktimit të të drejtave të aksesit në ndarjet SMB në pajisjet synology përmes mjeteve PoSH (https://social.technet.microsoft.com/Forums/en-US/3f1a949f-0919-46f1-9e10-89256cf07e65/error-using-setacl-on-nas-share?forum=winserverpowershell), për shkak të së cilës humbëm shumë kohë dhe duhej të adaptoheshim gjithçka në skenarët e përdorimit të utilitarit të redaktimit të të drejtave icacls, që kërkonte krijimin e një magazina mesatare për skedarët dhe dosjet cmd.
Në mënyrën aktuale, ekzekutimi i skedarëve cmd kontrollohet manualisht, sipas nevojës për regjistrimin e dosjes për projektin.

Gjithashtu, doli që skenari duhet të ekzekutohet gjithashtu edhe për regjistrimin e grupeve në pyje të tjera (përdornim termin Cross-domains), dhe marrëdhënia mund të jetë jo vetëm 1 me 1, por edhe 1 me shumë.

Kjo do të thotë që për aksesin në burimet e ndonjë domaini tani mund të pretendojnë grupe nga pyje të tjera, përfshirë pyllin fqinj. Për të arritur njësi, u mor një vendim për të krijuar një strukturë simetrike në OU të të gjitha domaineve të shërbimeve të të gjitha pyjeve (ovale vertikale të zeza). Siç thotë, në ushtri duhet të ketë gjithçka të çrregullt, por të njëjtë:

Kështu, kur regjistrohet projekti 80XXX në domainin TG, skenari ekzekuton:
1. krijimi i OU përkatëse (ovalet horizontale të kuqe) në këtë domain dhe në cross-domain, dmth ato domain, punonjësit e të cilëve duhet të kenë akses në këtë burim.
2. plotësimi i OU me grupe që kanë emra në formën <SRC_domain><DST_domain><ID_project>-, ku:
- SRC_domain â cross-domain, punonjĂ«sit e tĂ« cilit do tĂ« kenĂ« akses nĂ« burimet e domain DST
- DST_domain â domain, nĂ« burimet e tĂ« cilit duhet tĂ« jepet akses, dmth pĂ«r tĂ« cilin Ă«shtĂ« krijuar gjithçka
- <ID_project> â numri i projektit
- ROLES â emrat e rolit tĂ« listuar nĂ« matricĂ«n e aksesit.
3. leximi i masës SID të të gjitha grupeve të të gjitha domain të përfshira dhe ruajtja e saj për transfertën e mëvonshme të të dhënave në një skedar, i cili përcakton të drejtat për një nënfolder të caktuar të projektit.
4. gjenerimi i skedarëve burim (parametri /restore) me grupin e të drejtave për t'u përdorur nga utilitarja icacKC në modin e skedarit ekzekutues "icacKC \"as-nasNNKCProjects\" /restore C:TempKCKC40XXKC40XX.txt"
5. krijimi i skedarit CMD, që përfshin të gjitha icacls e ekzekutueshme për të gjitha dosjet e projektit.

Siç është shkruar më parë, ekzekutimi i skedarit bëhet manualisht dhe vlerësimi i rezultateve të ekzekutimit po ashtu kryhet manualisht.
Vështirësitë me të cilat u përballa në fund:
- nëse folderi i projektit ka shumë skedha, rikthimi i komandës icacls në volumin ekzistues mund të marrë shumë kohë, dhe në disa raste ndihmoi në refuzimin (për shembull kur ka rrugë të gjata skedhash);
- përveç parametrave /restore, duhej shtuar rreshta me parametrin /reset për rastin nëse folderët nuk ishin krijuar, por ishin transferuar nga dosje ekzistuese, me të drejtat e trashëguara të çaktivizuara nga rrënja;
- pjesën e skriptit për krijimin e grupeve duhet të ekzekutohej në një dc të rastësishëm nga çdo lis, problemi lidhet me llogaritë administrative për çdo pemë.
Përfundimi i përgjithshëm: është shumë e çuditshme që në treg ende nuk ka utilitare me funksionim të tillë. Realizimi i një funksionaliteti të tillë duket i mundshëm mbi portalin SharePoint.
Gjithashtu është e paqartë mungesa e mundësisë për të përdorur utilitarët PoSH për të caktuar të drejtat në folder në pajisjet Sinology.
Nëse dikujt i intereson, jam i gatshëm të ndaj skriptin duke krijuar një projekt në github.
Burimi: habr.com



