Tycks som jag har en sÄdan karma: att lösa standarduppgifter pÄ olika icke-triviala sÀtt. Om nÄgon har en annan syn pÄ problemet, Àr ni vÀlkomna att delta i diskussionen för att arbeta med frÄgan.
En vacker morgon dök det upp en intressant uppgift att ge rÀttigheter till anvÀndargrupper pÄ olika delade mappar som innehÄller undermappar för projekt med dokumentmappar. Allt gick bra och jag skrev ett skript för att tilldela rÀttigheter till mappar. Och sedan visade det sig att grupperna mÄste innehÄlla anvÀndare frÄn olika domÀner, frÄn olika skogar (). Anta att sjÀlva delningen ligger pÄ en Synology-enhet registrerad i domÀnen FB, skogarna PSI. Uppgiften: att tillÄta anvÀndare domÀner frÄn en annan skog att fÄ tillgÄng till innehÄllet i denna delning, och detta mycket selektivt.
Kravspecifikationen förÀndrades över tid till följande:
- 2 skogar: Skog PSI, skog TG.

- I varje skog finns det 3 domÀner: PSI (ZG, PSI, FB); TG (TG, HU, KC).
- Mellan skogarna finns det förtroendeförbindelser, Synology ser alla sÀkerhetsgrupper i alla skogar.
- PÄ delningarna och mapparna / undermapparna mÄste det finnas domÀn-FB-admins med FullControl-rÀttigheter.
- Namnen pÄ delningsmapparna mÄste systematiseras. Ledningen ansvarade för godkÀnnande av projekts ID, jag beslutade att knyta namnen pÄ sÀkerhetsgrupperna till ID för projekten.
- Projektmappar i systemdelningar mÄste innehÄlla en i förvÀg förberedd struktur i en .xlsx-fil, med motsvarande ÄtkomstrÀttigheter (R / RW / NA, dÀr NA innebÀr att Ätkomst saknas)

- Det mÄste finnas möjlighet att begrÀnsa rÀttigheterna för anvÀndare / medlemmar av en projektgrupp endast till specifika kataloger inom det aktuella projektet. Till andra kataloger / projekt kanske anvÀndaren inte har Ätkomst, enligt medlemskap i grupper.
- Vid skapande av projektmappar ska grupper i motsvarande domÀner automatiskt skapas med namn som motsvarar projekts ID.
Kommentarer till kravspecifikationen
- InstÀllning av förtroendeförbindelser ingÄr inte i kravspecifikationen
- Projektets ID innehÄller siffror och latinska bokstÀver
- AnvÀndarroller för projekt i alla domÀner har standardnamn
- En .xlsx-fil med mappar och ÄtkomstrÀttigheter (Ätkomstmatris) tas fram innan genomförandet av hela projektet
- Vid genomförande av projekt kan anvÀndargrupper skapas i motsvarande domÀner
- Automatisering uppnÄs genom att anvÀnda befintliga administrationsverktyg i MS Windows
Genomförande av kravspecifikation
Efter formaliseringen av dessa krav togs en taktisk paus för att pröva metoder för att skapa kataloger och tilldela rÀttigheter till dem. Det var tÀnkt att endast anvÀnda PowerShell för att inte komplicera projektet. Som jag nÀmnde tidigare, föreslogs algoritmen för skriptet vara tillrÀckligt enkel:
- Vi registrerar grupper med namn som hÀrstammar frÄn projektets ID (till exempel KC40587) och motsvarande roller, angivna i Ätkomstmatrisen: KC40587-EN - för ingenjören; KC40587-PM - för produktchefen osv.
- Vi fÄr SID:er för skapade grupper
- Vi registrerar projektmappen och motsvarande uppsÀttning kataloger (listan över undermappar beror pÄ den delade enhet dÀr den skapas och definieras i Ätkomstmatrisen)
- Vi tilldelar nya underkataloger projektets rÀttigheter enligt Ätkomstmatrisen.
SvÄrigheter som vi stötte pÄ under första etappen:
- OförstÄelse av hur man stÀller in Ätkomstmatrisen i skriptet (just nu Àr en flerdimensionell array implementerad, men vi söker sÀtt att fylla den baserat pÄ innehÄllet i .xlsx-filen/Ätkomstmatrisen)

- Omöjlighet att stÀlla in rÀttigheter i SMB-delningar pÄ Synology-lagringsenheter med hjÀlp av PoSH (https://social.technet.microsoft.com/Forums/en-US/3f1a949f-0919-46f1-9e10-89256cf07e65/error-using-setacl-on-nas-share?forum=winserverpowershell), vilket gjorde att vi förlorade mycket tid och var tvungna att anpassa allt till skript som anvÀnde verktyget icacls för att redigera rÀttigheter, vilket krÀvde skapandet av ett mellanlager för text- och cmd-filer.
I det nuvarande lÀget kontrolleras körningen av cmd-filer manuellt, vid behov av att registrera mappen för projektet.

Det visade sig ocksÄ att skriptet mÄste köras, inklusive för registrering av grupper i andra skogar (vi anvÀnde termen Cross-domains), dÀr förhÄllandet inte bara kan vara 1 till 1, utan ocksÄ 1 till mÄnga.

Detta betyder att grupper frÄn andra kross-domaner, inklusive grannskogen, nu kan ansprÄka pÄ tillgÄng till resurser i en viss domÀn. För att uppnÄ enhetlighet fattades beslutet att skapa en symmetrisk struktur i OU för alla betjÀnade domÀner i alla skogar (svarta vertikala ovaler). Som man sÀger, i armén mÄste allt vara oordnat, men enhetligt:

Vid registrering av projektet 80XXX i domÀnen TG utförs följande av skriptet:
1. skapande av motsvarande OU (röda horisontella ellipser) i denna domÀn och tvÀrdomÀner, det vill sÀga de domÀner vars anstÀllda ska ha tillgÄng till denna resurs.
2. fyllning av OU med grupper med namn av typen <SRC_domain><DST_domain><ID_project>-, dÀr:
- SRC_domain â tvĂ€rdomĂ€n vars anstĂ€llda kommer att ha tillgĂ„ng till resurserna i DST-domĂ€nen
- DST_domain â domĂ€n vars resurser, som egentligen var syftet med allt detta, ska beviljas tillgĂ„ng
- <ID_project> â projektets nummer
- ROLES â namn pĂ„ rollerna som anges i Ă„tkomstmatrisen.
3. lÀsa in arrayen SID för alla grupper i alla involverade domÀner och spara den för senare överföring av data till en fil som definierar rÀttigheter för en specifik undermapp av projektet
4. generera kÀllfiler (parameter /restore) med en uppsÀttning rÀttigheter för att anvÀnda verktyget icacKC i körbart lÀge "icacKC \"as-nasNNKCProjects\" /restore C:TempKCKC40XXKC40XX.txt"
5. skapa en CMD-fil som sammanfogar alla körbara icacls för alla mappar i projektet

Som nÀmnts tidigare utförs körningen av den körbara filen manuellt och utvÀrderingen av körresultaten sker ocksÄ manuellt.
SvÄrigheterna som uppstod i slutÀndan:
- om projektmappen redan Àr fylld med mÄnga filer kan köra kommandot icacls pÄ de befintliga volymerna ta betydande tid, och i vissa fall ledde det till avvisande (till exempel vid lÄnga filvÀgar);
- förutom parametern /restore behövde jag lÀgga till rader med parametern /reset om mapparna inte skapades, utan flyttades frÄn redan existerande mappar, med avstÀngda Àrvda rÀttigheter frÄn roten;
- att köra en del av skriptet för att skapa grupper var tvunget att göras pÄ en godtycklig dc i varje skog, problemet berör administrativa anvÀndarkonton för varje trÀd.
Sammanfattningsvis: det verkar mycket mÀrkligt att det fortfarande inte finns nÄgra verktyg pÄ marknaden med liknande funktionalitet. Det förefaller genomförbart att implementera sÄdan funktionalitet baserat pÄ SharePoint-portalen.
Det Àr ocksÄ oklart varför det inte finns nÄgon möjlighet att anvÀnda PoSH-verktyg för att stÀlla in rÀttigheter pÄ mappar pÄ sinology-enheter.
Vid önskemÄl Àr jag redo att dela skriptet om jag skapar nÄgot projekt pÄ github, om det skulle vara av intresse för nÄgon.
KĂ€lla: habr.com



