Dodjeljivanje prava velikih razmjera korisnicima domene iz različitih šuma

Očigledno je moja karma sljedeća: provoditi standardne zadatke na sve vrste netrivijalnih načina. Ako netko ima drugačiju viziju problema, neka se raspravi kako bi se problem riješio.

Jednog lijepog jutra pojavila se zanimljiva zadaća raspodjele prava grupama korisnika za različite dijeljenje koje sadrže podmape projekata s mapama dokumenata. Sve je bilo u redu i napisana je skripta za dodjelu prava mapama. A onda se pokazalo da grupe trebaju sadržavati korisnike s različitih domena, iz različitih šuma (za one koji su zaboravili što je to). Recimo da se sam share nalazi na Synology mediju, registriranom u FB domeni PSI šume. Zadatak: omogućiti korisnicima domena u drugoj šumi pristup sadržaju ovog dijeljenja, i to vrlo selektivno.

Nakon nekog vremena tehničke specifikacije su imale sljedeći oblik:

  • 2 šume: PSI šuma, TG šuma.

    Dodjeljivanje prava velikih razmjera korisnicima domene iz različitih šuma

  • Svaka šuma ima 3 domene: PSI (ZG, PSI, FB); TG (TG, HU, KC).
  • Između šuma postoji odnos povjerenja; Synology vidi sve sigurnosne grupe u svim šumama.
  • Dijeljenja i mape/podmape moraju imati administratorske račune FB domene s pravima FullControl
  • Nazive mapa treba sistematizirati. Uprava je koordinirala ID-ove projekta; odlučio sam povezati naziv Sigurnosne grupe s ID-ovima projekta.
  • Projektne mape u dionicama sustava moraju sadržavati unaprijed pripremljenu strukturu u .xlsx datoteci, s odgovarajućim privilegijama pristupa (R/RW/NA, gdje NA – nema pristupa)

    Dodjeljivanje prava velikih razmjera korisnicima domene iz različitih šuma

  • Trebalo bi biti moguće ograničiti prava korisnika/članova grupe jednog projekta samo na određene direktorije tog projekta. Korisnik možda neće imati pristup drugim imenicima/projektima, ovisno o članstvu u grupi.
  • Prilikom stvaranja mape projekta, grupe bi se trebale stvarati što je moguće automatski u odgovarajućim domenama s nazivima koji odgovaraju ID-ovima projekta.

Napomene uz tehničke specifikacije

  • Uspostavljanje odnosa povjerenja nije uključeno u opseg tehničkih specifikacija
  • ID projekta sadrži brojeve i latinična slova
  • Korisničke uloge projekta za sve domene imaju standardna imena
  • Prije početka cijelog projekta priprema se .xlsx datoteka s mapama i pravima pristupa (access matrix).
  • Prilikom realizacije projekata moguće je kreirati korisničke grupe u pripadajućim domenama
  • Automatizacija se postiže korištenjem standardnih MS Windows administrativnih alata

Provedba tehničkih specifikacija

Nakon formaliziranja ovih zahtjeva, napravljena je taktička stanka za testiranje metoda za stvaranje imenika i dodjeljivanje prava na njih. Namjera je bila koristiti samo PowerShell, kako se projekt ne bi komplicirao. Kao što sam ranije napisao, algoritam skripte se činio prilično jednostavnim:

  • registriramo grupe s imenom izvedenim iz ID-a projekta (na primjer KC40587) i odgovarajućih uloga navedenih u pristupnoj matrici: KC40587-EN- za inženjera; KC40587-PM – za voditelja proizvoda itd.
  • dobivamo SID-ove kreiranih grupa
  • registrirajte mapu projekta i pripadajući skup direktorija (popis podmapa ovisi o dijeljenju u kojem je kreiran i definiran u pristupnoj matrici)
  • dodijeliti prava grupama za nove poddirektorije projekta prema matrici pristupa.

Poteškoće koje se javljaju u fazi 1:

  • nerazumijevanje načina određivanja pristupne matrice u skripti (sada je implementiran višedimenzionalni niz, ali se put do njegovog popunjavanja traži na temelju sadržaja .xlsx datoteke/pristupne matrice)

    Dodjeljivanje prava velikih razmjera korisnicima domene iz različitih šuma

  • nemogućnost postavljanja prava pristupa u SMB dionicama na synology pogonima pomoću PoSH-a (https://social.technet.microsoft.com/Forums/en-US/3f1a949f-0919-46f1-9e10-89256cf07e65/error-using-setacl-on- nas -share?forum=winserverpowershell), zbog čega je izgubljeno dosta vremena i sve se moralo prilagoditi skriptama pomoću icacls uslužnog programa za uređivanje prava pristupa, što je zahtijevalo izradu međurepozitorija tekstualnih i cmd datoteka.

U trenutnom načinu rada, izvršavanje cmd datoteka kontrolira se ručno, ovisno o potrebi registracije mape za projekt.

Dodjeljivanje prava velikih razmjera korisnicima domene iz različitih šuma

Također se pokazalo da skriptu treba izvršiti i za registraciju grupa u drugim šumama (korišten je termin Cross-domains), a omjer može biti ne samo 1 prema jedan, već i 1 prema više.

Dodjeljivanje prava velikih razmjera korisnicima domene iz različitih šuma

To znači da grupe iz drugih međudomena, uključujući susjednu šumu, sada mogu tražiti pristup resursima bilo koje domene. Kako bi se postigla ujednačenost, odlučeno je stvoriti simetričnu strukturu u OU svih servisiranih domena svih šuma (crni okomiti ovali). Kako kažu, u vojsci sve treba biti ružno, ali uniformno:

Dodjeljivanje prava velikih razmjera korisnicima domene iz različitih šuma

Dakle, prilikom registracije projekta 80XXX u TG domeni, skripta izvršava:

1. stvaranje odgovarajuće OU (crveni vodoravni ovali) u ovoj domeni i međudomenama, odnosno onim domenama čiji zaposlenici moraju imati pristup ovom resursu.

2. popunjavanje OU grupama s imenima poput -, gdje:

  • SRC_ domena – međudomena čiji će zaposlenici imati pristup resursima DST domene
  • DST_domena – domena čijim resursima, zapravo, treba omogućiti pristup, odnosno radi koje je sve pokrenuto
  • — broj projekta
  • ULOGE – nazivi uloga navedenih u matrici pristupa.

3. čitanje niza SID-ova svih grupa svih uključenih domena i spremanje za kasniji prijenos podataka u datoteku koja definira prava na specifičnu podmapu projekta

4. generiranje izvornih datoteka (parametar /restore) sa skupom prava za korištenje pomoću uslužnog programa icacKC u modu izvršne datoteke “icacKC "as-nasNNKCProjects" /restore C:TempKCKC40XXKC40XX.txt"

5. stvaranje CMD datoteke koja kombinira sve pokrenute icacl-ove za sve mape projekta

Dodjeljivanje prava velikih razmjera korisnicima domene iz različitih šuma

Kao što je ranije napisano, pokretanje izvršne datoteke vrši se ručno, a procjena rezultata izvršenja također se vrši ručno.

Poteškoće s kojima smo se na kraju morali suočiti:

  • ako je mapa projekta već ispunjena velikim brojem datoteka, tada izvođenje naredbe icacls na postojećim volumenima može potrajati dosta vremena, au nekim slučajevima dovesti do kvara (na primjer, kada postoje dugačke staze datoteka);
  • osim parametra /restore, morali smo dodati retke s parametrom /reset u slučaju da mape nisu kreirane, već su prenesene iz prethodno postojećih mapa, s isključenim pravima nasljeđivanja iz korijena;
  • Dio skripte za stvaranje grupa morao se izvršiti na proizvoljnom dc-u svake šume, problem se odnosi na administrativne račune za svako stablo.

Opći zaključak: vrlo je čudno da na tržištu još nema uslužnih programa sa sličnim funkcijama. Čini se da je moguće implementirati sličnu funkcionalnost temeljenu na portalu Sharepoint.
Također je neshvatljivo da nije moguće koristiti PoSH pomoćne programe za postavljanje prava mape na sinološkim uređajima.

Po želji, spreman sam podijeliti skriptu kreiranjem nekog projekta na githubu ako je netko zainteresiran.

Izvor: www.habr.com

Dodajte komentar