Obsežno dodeljevanje pravic uporabnikom domene iz različnih gozdov

Očitno je moja karma naslednja: izvajati standardne naloge na najrazličnejše netrivialne načine. Če ima kdo drugačen pogled na problem, naj se o tem pogovori, da se zadeva reši.

Nekega lepega jutra se je pojavila zanimiva naloga razdeljevanja pravic skupinam uporabnikov za različne skupne rabe, ki vsebujejo podmape projektov z mapami dokumentov. Vse je bilo v redu in napisan je bil skript za dodelitev pravic mapam. In potem se je izkazalo, da morajo skupine vsebovati uporabnike iz različnih domen, iz različnih gozdov (za tiste, ki ste pozabili, kaj je). Recimo, da se sam delež nahaja na mediju Synology, registriranem v FB domeni gozda PSI. Naloga: omogočiti uporabnikom domen v drugem gozdu dostop do vsebine tega deleža in to zelo selektivno.

Čez nekaj časa so tehnične specifikacije dobile naslednjo obliko:

  • 2 gozda: PSI gozd, TG gozd.

    Obsežno dodeljevanje pravic uporabnikom domene iz različnih gozdov

  • Vsak gozd ima 3 domene: PSI (ZG, PSI, FB); TG (TG, HU, KC).
  • Med gozdovi obstaja odnos zaupanja; Synology vidi vse varnostne skupine v vseh gozdovih.
  • Skupne rabe in mape/podmape morajo imeti skrbniške račune FB domene s pravicami FullControl
  • Imena map naj bodo sistematizirana. Vodstvo je uskladilo projektne ID-je, odločil sem se, da povežem ime varnostnih skupin z ID-ji projekta.
  • Projektne mape v sistemskih skupnih rabah morajo vsebovati vnaprej pripravljeno strukturo v datoteki .xlsx z ustreznimi pravicami dostopa (R/RW/NA, kjer NA – brez dostopa)

    Obsežno dodeljevanje pravic uporabnikom domene iz različnih gozdov

  • Moralo bi biti mogoče omejiti pravice uporabnikov/članov skupine enega projekta samo na določene imenike tega projekta. Uporabnik morda nima dostopa do drugih imenikov/projektov, odvisno od članstva v skupini.
  • Pri ustvarjanju mape projekta je treba čim bolj samodejno ustvariti skupine v ustreznih domenah z imeni, ki ustrezajo ID-jem projekta.

Opombe k tehničnim specifikacijam

  • Vzpostavitev zaupnih razmerij ni vključena v obseg tehničnih specifikacij
  • ID projekta vsebuje številke in latinične znake
  • Uporabniške vloge projekta za vse domene imajo standardna imena
  • Pred začetkom celotnega projekta se pripravi datoteka .xlsx z mapami in pravicami dostopa (matrika dostopa).
  • Pri izvajanju projektov je možno ustvarjanje uporabniških skupin v pripadajočih domenah
  • Avtomatizacija je dosežena z uporabo standardnih MS Windows skrbniških orodij

Izvedba tehničnih specifikacij

Po formalizaciji teh zahtev je bil vzet taktični premor za testiranje metod za ustvarjanje imenikov in dodeljevanje pravic do njih. Namenjena je bila uporabi samo PowerShell, da ne bi komplicirali projekta. Kot sem že napisal, se je algoritem skripta zdel precej preprost:

  • registriramo skupine z imenom, ki izhaja iz ID-ja projekta (na primer KC40587) in pripadajočih vlog, navedenih v matriki dostopa: KC40587-EN- za inženirja; KC40587-PM – za produktnega vodjo itd.
  • dobimo SID-je ustvarjenih skupin
  • registrirajte mapo projekta in ustrezen niz imenikov (seznam podmap je odvisen od deleža, v katerem je ustvarjen in definiran v matriki dostopa)
  • dodelite pravice skupinam za nove podimenike projekta v skladu z matriko dostopa.

Težave na stopnji 1:

  • nerazumevanje načina določanja dostopne matrike v skriptu (večdimenzionalna matrika je zdaj implementirana, vendar se pot do njenega polnjenja išče na podlagi vsebine datoteke .xlsx/matrike dostopa)

    Obsežno dodeljevanje pravic uporabnikom domene iz različnih gozdov

  • nezmožnost nastavitve pravic dostopa v skupnih rabah SMB na pogonih synology z uporabo PoSH (https://social.technet.microsoft.com/Forums/en-US/3f1a949f-0919-46f1-9e10-89256cf07e65/error-using-setacl-on- nas -share?forum=winserverpowershell), zaradi česar je bilo izgubljenega veliko časa in je bilo treba vse prilagoditi skriptom s pripomočkom za urejanje pravic dostopa icacls, kar je zahtevalo izdelavo vmesnega repozitorija besedilnih in cmd datotek.

V trenutnem načinu se izvajanje datotek cmd nadzoruje ročno, odvisno od potrebe po registraciji mape za projekt.

Obsežno dodeljevanje pravic uporabnikom domene iz različnih gozdov

Izkazalo se je tudi, da je treba skripto izvajati tudi za registracijo skupin v drugih gozdovih (uporabljen je bil izraz Cross-domains), razmerje pa je lahko ne samo 1 proti ena, ampak tudi 1 proti več.

Obsežno dodeljevanje pravic uporabnikom domene iz različnih gozdov

To pomeni, da lahko skupine iz drugih navzkrižnih domen, vključno s sosednjim gozdom, zdaj zahtevajo dostop do virov katere koli domene. Da bi dosegli enotnost, je bilo odločeno ustvariti simetrično strukturo v OU ​​vseh servisiranih domen vseh gozdov (črni navpični ovali). Kot pravijo, mora biti v vojski vse grdo, a enotno:

Obsežno dodeljevanje pravic uporabnikom domene iz različnih gozdov

Tako se pri registraciji projekta 80XXX v domeni TG skript izvede:

1. ustvarjanje ustreznih OU (rdečih vodoravnih ovalov) v tej domeni in meddomenami, torej tistih domenah, katerih zaposleni morajo imeti dostop do tega vira.

2. polnjenje OU s skupinami z imeni, kot je -, kjer:

  • Domena SRC_ – meddomena, katere zaposleni bodo imeli dostop do virov domene DST
  • DST_domain – domena, do katere virov je pravzaprav treba zagotoviti dostop, torej zaradi katere se je vse začelo
  • — številka projekta
  • VLOGE – imena vlog, navedenih v matriki dostopa.

3. branje niza SID-jev vseh skupin vseh vključenih domen in shranjevanje za nadaljnji prenos podatkov v datoteko, ki določa pravice do določene podmape projekta

4. generiranje izvornih datotek (parameter /restore) z naborom pravic za uporabo s pripomočkom icacKC v načinu izvedljive datoteke “icacKC "as-nasNNKCProjects" /restore C:TempKCKC40XXKC40XX.txt"

5. ustvarjanje datoteke CMD, ki združuje vse zagnane icacl za vse mape projekta

Obsežno dodeljevanje pravic uporabnikom domene iz različnih gozdov

Kot je bilo že napisano, se zagon izvršljive datoteke izvede ročno in vrednotenje rezultatov izvajanja se prav tako izvede ročno.

Težave, s katerimi smo se morali soočiti na koncu:

  • če je mapa projekta že napolnjena z velikim številom datotek, lahko izvajanje ukaza icacls na obstoječih nosilcih traja precej časa in v nekaterih primerih povzroči napako (na primer, če so poti do datotek dolge);
  • poleg parametra /restore smo morali dodati vrstice s parametrom /reset v primeru, da mape niso bile ustvarjene, ampak so bile prenesene iz predhodno obstoječih map, pri čemer je bilo onemogočeno dedovanje korenskih pravic;
  • Del skripte za ustvarjanje skupin je bilo treba izvesti na poljubnem dc vsakega gozda, problem se nanaša na skrbniške račune za vsako drevo.

Splošni zaključek: zelo nenavadno je, da na trgu še ni pripomočkov s podobno funkcionalnostjo. Zdi se, da je mogoče izvesti podobno funkcionalnost na podlagi portala Sharepoint.
Prav tako je nerazumljivo, da na sinoloških napravah ni mogoče uporabiti pripomočkov PoSH za nastavitev pravic map.

Po želji sem pripravljen deliti skript tako, da ustvarim kakšen projekt na githubu, če koga zanima.

Vir: www.habr.com

Dodaj komentar