Cessió de drets a gran escala a usuaris de dominis de diferents boscos

Pel que sembla, el meu karma és aquest: implementar tasques estàndard de tota mena de maneres no trivials. Si algú té una visió diferent del problema, si us plau, discutiu-lo perquè es pugui resoldre el problema.

Un bon matí va sorgir una interessant tasca de repartir drets a grups d'usuaris per a diferents recursos compartits que contenien subcarpetes de projectes amb carpetes de documents. Tot anava bé i es va escriure un script per assignar drets a les carpetes. I després va resultar que els grups haurien de contenir usuaris de diferents dominis, de diferents boscos (per als que han oblidat què és). Suposem que la compartició en si es troba al suport Synology, registrat al domini FB del bosc PSI. Tasca: permetre als usuaris de dominis d'un altre bosc accedir als continguts d'aquesta compartició, i de manera molt selectiva.

Després d'un temps, les especificacions tècniques van prendre la forma següent:

  • 2 boscos: bosc PSI, bosc TG.

    Cessió de drets a gran escala a usuaris de dominis de diferents boscos

  • Cada bosc té 3 dominis: PSI (ZG, PSI, FB); TG (TG, HU, KC).
  • Hi ha una relació de confiança entre els boscos; Synology veu tots els grups de seguretat a tots els boscos.
  • Els recursos compartits i les carpetes/subcarpetes han de tenir comptes d'administrador de domini FB amb drets de control total
  • S'han de sistematitzar els noms de les carpetes. La direcció va coordinar els identificadors del projecte; vaig decidir enllaçar el nom dels grups de seguretat als identificadors del projecte.
  • Les carpetes del projecte dels recursos compartits del sistema han de contenir una estructura preparada per endavant en un fitxer .xlsx, amb privilegis d'accés adequats (R/RW/NA, on NA - sense accés)

    Cessió de drets a gran escala a usuaris de dominis de diferents boscos

  • Hauria de ser possible restringir els drets dels usuaris/membres del grup d'un projecte només a determinats directoris d'aquest projecte. És possible que l'usuari no tingui accés a altres directoris/projectes, depenent de la pertinença al grup.
  • Quan es crea una carpeta de projecte, els grups s'han de crear tan automàticament com sigui possible en els dominis adequats amb els noms corresponents als ID del projecte.

Notes a les especificacions tècniques

  • L'establiment de relacions de confiança no està inclòs en l'abast de les especificacions tècniques
  • L'identificador del projecte conté números i caràcters llatins
  • Els rols d'usuari del projecte per a tots els dominis tenen noms estàndard
  • Es prepara un fitxer .xlsx amb carpetes i drets d'accés (matriu d'accés) abans de l'inici de tot el projecte
  • En implementar projectes, és possible crear grups d'usuaris en els dominis corresponents
  • L'automatització s'aconsegueix utilitzant eines d'administració estàndard de MS Windows

Implementació de les especificacions tècniques

Després de formalitzar aquests requisits, es va fer una pausa tàctica per provar mètodes per crear directoris i assignar-hi drets. Es pretenia utilitzar només PowerShell, per no complicar el projecte. Com he escrit abans, l'algoritme de script semblava bastant simple:

  • registrem grups amb un nom derivat de l'ID del projecte (per exemple KC40587) i els rols corresponents especificats a la matriu d'accés: KC40587-EN- per a enginyer; KC40587-PM: per a gestor de producte, etc.
  • obtenim els SID dels grups creats
  • registre la carpeta del projecte i el conjunt de directoris corresponent (la llista de subcarpetes depèn de la compartició en què es crei i es defineixi a la matriu d'accés)
  • assignar drets als grups per als nous subdirectoris del projecte segons la matriu d'accés.

Dificultats trobades a l'etapa 1:

  • malentès del mètode per especificar la matriu d'accés a l'script (ara s'ha implementat una matriu multidimensional, però s'està buscant el camí per omplir-la en funció del contingut del fitxer .xlsx/matriu d'accés)

    Cessió de drets a gran escala a usuaris de dominis de diferents boscos

  • impossibilitat d'establir drets d'accés a les accions de SMB en unitats de sinologia mitjançant PoSH (https://social.technet.microsoft.com/Forums/en-US/3f1a949f-0919-46f1-9e10-89256cf07e65/error-using-setacl-on- nas -share?forum=winserverpowershell), per la qual cosa es va perdre molt de temps i tot es va haver d'adaptar als scripts mitjançant la utilitat d'edició de drets d'accés icacls, que requeria la creació d'un repositori intermedi de fitxers de text i cmd.

En el mode actual, l'execució dels fitxers cmd es controla manualment, depenent de la necessitat de registrar una carpeta per al projecte.

Cessió de drets a gran escala a usuaris de dominis de diferents boscos

També va resultar que l'script també s'hauria d'executar per registrar grups en altres boscos (es va utilitzar el terme Cross-domains) i la proporció no només pot ser d'1 a un, sinó també d'1 a molts.

Cessió de drets a gran escala a usuaris de dominis de diferents boscos

Això vol dir que els grups d'altres dominis creuats, inclòs un bosc veí, ara poden reclamar l'accés als recursos de qualsevol domini. Per aconseguir la uniformitat, es va decidir crear una estructura simètrica a l'OU de tots els dominis servits de tots els boscos (òvals verticals negres). Com diuen, a l'exèrcit tot hauria de ser lleig, però uniforme:

Cessió de drets a gran escala a usuaris de dominis de diferents boscos

Així, quan es registra el projecte 80XXX al domini TG, l'script executa:

1. creació de les corresponents OU (ovals horitzontals vermells) en aquest domini i entre dominis, és a dir, aquells dominis els empleats dels quals han de tenir accés a aquest recurs.

2. omplint OU amb grups amb noms com -, on:

  • SRC_ domain: entre dominis els empleats del qual tindran accés als recursos del domini DST
  • DST_domain: el domini als recursos del qual, de fet, s'ha de proporcionar l'accés, és a dir, pel que es va iniciar tot
  • — número del projecte
  • ROLES: noms dels rols enumerats a la matriu d'accés.

3. llegir la matriu de SID de tots els grups de tots els dominis implicats i desar-lo per a la transferència de dades posterior a un fitxer que defineix els drets d'una subcarpeta específica del projecte

4. generació de fitxers font (paràmetre /restore) amb un conjunt de drets per a l'ús de la utilitat icacKC en mode de fitxer executable "icacKC "as-nasNNKCProjects" /restore C:TempKCKC40XXKC40XX.txt"

5. crear un fitxer CMD que combini tots els icacls llançats per a totes les carpetes del projecte

Cessió de drets a gran escala a usuaris de dominis de diferents boscos

Com s'ha escrit anteriorment, el llançament del fitxer executable es fa manualment i l'avaluació dels resultats de l'execució també es fa manualment.

Dificultats que hem hagut d'afrontar al final:

  • si la carpeta del projecte ja està plena d'un gran nombre de fitxers, l'execució de l'ordre icacls als volums existents pot trigar un temps considerable i, en alguns casos, provocar un error (per exemple, quan hi ha rutes de fitxer llargues);
  • a més del paràmetre /restore, hem hagut d'afegir línies amb el paràmetre /reset en cas que les carpetes no s'hagin creat, sinó que s'hagin transferit de carpetes anteriors, amb els drets d'herència de l'arrel desactivats;
  • Part de l'script per crear grups s'havia d'executar en un dc arbitrari de cada bosc, el problema es refereix als comptes administratius de cada arbre.

Conclusió general: és molt estrany que encara no hi hagi utilitats amb una funcionalitat similar al mercat. Sembla possible implementar una funcionalitat similar basada en el portal de Sharepoint.
També és incomprensible que no sigui possible utilitzar les utilitats PoSH per establir els drets de carpetes en dispositius de sinologia.

Si ho desitja, estic preparat per compartir l'script creant algun projecte a github si algú està interessat.

Font: www.habr.com

Afegeix comentari