Storskalig tilldelning av rÀttigheter till anvÀndare av domÀner frÄn olika skogar

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 (för dem som glömt vad detta Àr). 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.

    Storskalig tilldelning av rÀttigheter till anvÀndare av domÀner frÄn olika skogar

  • 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)

    Storskalig tilldelning av rÀttigheter till anvÀndare av domÀner frÄn olika skogar

  • 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)

    Storskalig tilldelning av rÀttigheter till anvÀndare av domÀner frÄn olika skogar

  • 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.

Storskalig tilldelning av rÀttigheter till anvÀndare av domÀner frÄn olika skogar

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.

Storskalig tilldelning av rÀttigheter till anvÀndare av domÀner frÄn olika skogar

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:

Storskalig tilldelning av rÀttigheter till anvÀndare av domÀner frÄn olika skogar

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

Storskalig tilldelning av rÀttigheter till anvÀndare av domÀner frÄn olika skogar

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

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster