Umfangreiche Berechtigungsvergabe an Benutzer von DomÀnen aus verschiedenen WÀldern

Offensichtlich habe ich so etwas wie Karma: Standardaufgaben auf verschiedene, unkonventionelle Weisen zu lösen. Wenn jemand eine andere Sichtweise auf das Problem hat, bitte ich um Diskussion, um die Angelegenheit zu klÀren.

Eines schönen Morgens tauchte eine interessante Aufgabe auf: Benutzergruppen die Berechtigungen fĂŒr verschiedene Shares zuzuweisen, die Unterordner von Projekten mit Dokumentenordnern enthalten. Alles war gut und es wurde ein Skript geschrieben, das Berechtigungen fĂŒr die Ordner zuwies. Dann stellte sich heraus, dass die Gruppen Benutzer aus verschiedenen DomĂ€nen, aus verschiedenen Foresten enthalten mĂŒssen (fĂŒr diejenigen, die vergessen haben, was das ist). Angenommen, das Share selbst befindet sich auf einem Synology-GerĂ€t, das in der DomĂ€ne FB, im Forest PSI registriert ist. Aufgabe: Benutzer des Domains anderen Forests den Zugriff auf den Inhalt dieses Shares zu gewĂ€hren, und zwar sehr selektiv.

Das Lastenheft kristallisierte sich nach einiger Zeit wie folgt heraus:

  • 2 Forests: Forest PSI, Forest TG.

    Umfangreiche Berechtigungsvergabe an Benutzer von DomÀnen aus verschiedenen WÀldern

  • In jedem Forest gibt es 3 DomĂ€nen: PSI (ZG, PSI, FB); TG (TG, HU, KC).
  • Zwischen den Forests bestehen VertrauensverhĂ€ltnisse, Synology sieht alle Security-Gruppen in allen Forests.
  • Auf den Shares und Ordnern/Unterordnern mĂŒssen unbedingt Konten von Domain-Admins aus der DomĂ€ne FB mit FullControl-Rechten vorhanden sein.
  • Die Namen der Ordner im Share mĂŒssen systematisch organisiert sein. Die Genehmigung der Projekt-IDs erfolgte durch die Leitung, ich entschied, die Namen der Security-Gruppen an die Projekt-IDs zu koppeln.
  • Die Projektordner in den systemisierten Shares mĂŒssen eine im .xlsx-Dokument vorbereitete Struktur mit den entsprechenden Zugriffsprivilegien (R/RW/NA, wobei NA – kein Zugriff) enthalten.

    Umfangreiche Berechtigungsvergabe an Benutzer von DomÀnen aus verschiedenen WÀldern

  • Es muss möglich sein, die Rechte der Benutzer/Gruppenmitglieder eines Projekts nur auf bestimmte Verzeichnisse dieses Projekts zu beschrĂ€nken. Auf andere Verzeichnisse/Projekte kann der Benutzer keinen Zugriff haben, abhĂ€ngig von der Mitgliedschaft in den Gruppen.
  • Beim Erstellen eines Projektordners sollten in den entsprechenden DomĂ€nen automatisch Gruppen mit Namen, die den Projekt-IDs entsprechen, erstellt werden.

Anmerkungen zum Lastenheft

  • Die Einrichtung von VertrauensverhĂ€ltnissen ist nicht Teil des Lastenhefts.
  • Die Projekt-ID enthĂ€lt Ziffern und lateinische Buchstaben.
  • Die Rollen der Projektbenutzer fĂŒr alle DomĂ€nen haben standardisierte Namen.
  • Die .xlsx-Datei mit Ordnern und Zugriffsrechten (Zugriffs-Matrix) wird vor Beginn der gesamten Projektumsetzung vorbereitet.
  • Bei der Umsetzung von Projekten kann die Erstellung von Benutzergruppen in den entsprechenden DomĂ€nen erfolgen.
  • Automatisierung erfolgt durch die Nutzung der Standardverwaltungsmittel von MS Windows

Umsetzung der Anforderungen

Nach der Formalisierung dieser Anforderungen gab es eine taktische Pause zur Erprobung der Methoden zur Erstellung von Verzeichnissen und der Vergabe von Rechten auf diese. Es sollte nur PowerShell verwendet werden, um das Projekt nicht zu komplizieren. Wie bereits erwÀhnt, stellte sich der Algorithmus des Skripts als recht einfach dar:

  • Wir registrieren Gruppen mit einem Namen, der sich von der Projekt-ID ableitet (zum Beispiel KC40587) und den entsprechenden Rollen, die in der Zugriffsmatrix angegeben sind: KC40587-EN- fĂŒr Ingenieure; KC40587-PM – fĂŒr Produktmanager usw.
  • wir erhalten die SID der erstellten Gruppen
  • wir registrieren den Projektordner und das entsprechende Set von Verzeichnissen (die Liste der Unterordner hĂ€ngt vom Share ab, in dem er erstellt wird, und ist in der Zugriffsmatrix definiert)
  • wir vergeben Rechte an den neuen Unterverzeichnissen des Projekts an Gruppen gemĂ€ĂŸ der Zugriffsmatrix.

Schwierigkeiten, mit denen wir in der ersten Phase konfrontiert waren:

  • UnverstĂ€ndnis ĂŒber die Art und Weise, wie die Zugriffsmatrix im Skript angegeben wird (momentan wird ein mehrdimensionales Array implementiert, aber es wird nach einem Weg gesucht, um es basierend auf dem Inhalt einer .xlsx-Datei/Zugriffsmatrix zu fĂŒllen)

    Umfangreiche Berechtigungsvergabe an Benutzer von DomÀnen aus verschiedenen WÀldern

  • UnfĂ€higkeit, Zugriffsrechte in SMB-Shares auf Synology-Speichern mit Hilfe von PowerShell festzulegen (https://social.technet.microsoft.com/Forums/en-US/3f1a949f-0919-46f1-9e10-89256cf07e65/error-using-setacl-on-nas-share?forum=winserverpowershell), wodurch viel Zeit verloren ging und alles an Skripte unter Verwendung des Tools zur Bearbeitung von Zugriffsrechten icacls angepasst werden musste, was die Erstellung eines temporĂ€ren Speichers fĂŒr Text- und CMD-Dateien erforderte.

Im aktuellen Modus wird die AusfĂŒhrung von CMD-Dateien manuell kontrolliert, falls es notwendig ist, den Ordner fĂŒr das Projekt zu registrieren.

Umfangreiche Berechtigungsvergabe an Benutzer von DomÀnen aus verschiedenen WÀldern

Es stellte sich auch heraus, dass das Skript auch zur Registrierung von Gruppen in anderen WĂ€ldern (wir verwendeten den Begriff Cross-Domains) ausgefĂŒhrt werden muss, wobei das VerhĂ€ltnis nicht nur 1 zu 1, sondern auch 1 zu vielen betragen kann.

Umfangreiche Berechtigungsvergabe an Benutzer von DomÀnen aus verschiedenen WÀldern

Das bedeutet, dass auf den Zugriff auf Ressourcen eines bestimmten Dominis nun Gruppen aus anderen Cross-Domains, einschließlich des benachbarten Waldes, Anspruch erheben können. Um Einheitlichkeit zu gewĂ€hrleisten, wurde beschlossen, eine symmetrische Struktur in den OU aller verwalteten Domains aller WĂ€lder zu schaffen (schwarze vertikale Ovale). Wie man sagt, sollte in der Armee alles unordentlich, aber einheitlich sein:

Umfangreiche Berechtigungsvergabe an Benutzer von DomÀnen aus verschiedenen WÀldern

Daher wird bei der Registrierung des Projekts 80XXX in der DomĂ€ne TG durch das Skript folgendes durchgefĂŒhrt:

1. Erstellung der entsprechenden OU (rote horizontale Ovale) in dieser DomĂ€ne und in Cross-DomĂ€nen, das heißt in denen, deren Mitarbeiter Zugang zu dieser Ressource haben sollen.

2. BefĂŒllung der OU mit Gruppen mit Bezeichnungen wie -, wobei:

  • SRC_domain – Cross-DomĂ€ne, deren Mitarbeiter Zugriff auf die Ressourcen der DST-DomĂ€ne haben werden.
  • DST_domain – DomĂ€ne, auf deren Ressourcen tatsĂ€chlich Zugriff gewĂ€hrt werden soll, sprich der Grund, warum alles umgesetzt wird.
  • — Projektnummer.
  • ROLES – Bezeichnungen der in der Zugangsmatrix aufgefĂŒhrten Rollen.

3. Auslesen des Arrays SID aller Gruppen aller beteiligten DomĂ€nen und Speicherung dessen zur spĂ€teren Übertragung der Daten in eine Datei, die die Berechtigungen fĂŒr einen bestimmten Unterordner des Projekts definiert.

4. Generierung von Quelldateien (Parameter /restore) mit einem Berechtigungsset zur Verwendung des Dienstprogramms icacKC im Modus der ausfĂŒhrbaren Datei "icacKC \"as-nasNNKCProjects\" /restore C:TempKCKC40XXKC40XX.txt".

5. Erstellung einer CMD-Datei, die alle ausfĂŒhrbaren icacls fĂŒr alle Ordner des Projekts kombiniert.

Umfangreiche Berechtigungsvergabe an Benutzer von DomÀnen aus verschiedenen WÀldern

Wie bereits erwĂ€hnt, erfolgt die AusfĂŒhrung der ausfĂŒhrbaren Datei manuell, und die Auswertung der Ergebnisse erfolgt ebenfalls manuell.

Die Schwierigkeiten, mit denen wir letztendlich konfrontiert waren:

  • Wenn der Projektordner bereits mit einer großen Anzahl von Dateien gefĂŒllt ist, kann die Bearbeitung des icacls-Befehls auf dem vorhandenen Volumen erheblich Zeit in Anspruch nehmen und in einigen FĂ€llen zu einem Fehler fĂŒhren (z.B. bei langen Dateipfaden);
  • Neben dem Parameter /restore mussten Zeilen mit dem Parameter /reset hinzugefĂŒgt werden, falls Ordner nicht erstellt, sondern aus bereits existierenden Ordnern mit deaktivierten Vererbungseinstellungen vom Stamm verschoben wurden;
  • Einen Teil des Skripts zur Erstellung von Gruppen musste ich auf willkĂŒrlichen DCs jeder Baumstruktur ausfĂŒhren, das Problem betrifft die administrativen Konten fĂŒr jeden Baum.

Insgesamt ist es sehr seltsam, dass es auf dem Markt bisher keine Dienstprogramme mit einer Àhnlichen FunktionalitÀt gibt. Eine Umsetzung einer solchen FunktionalitÀt auf der Basis des SharePoint-Portals erscheint möglich.
Es ist ebenfalls unverstĂ€ndlich, warum es keine Möglichkeit gibt, PoSH-Dienstprogramme zur Festlegung von Berechtigungen fĂŒr Ordner auf Synology-GerĂ€ten zu verwenden.

Auf Wunsch bin ich bereit, das Skript zu teilen, indem ich ein Projekt auf GitHub erstelle, falls es jemanden interessiert.

Quelle: habr.com

60GB SSD 8Gb DDR4