Umfassende Rechtevergabe für Benutzer von Domains aus verschiedenen Wäldern.

Offensichtlich habe ich so eine Karma: Standardaufgaben auf allerlei unkonventionelle Weise umzusetzen. Wenn jemand eine andere Sichtweise auf das Problem hat, lade ich zur Diskussion ein, um die Frage gemeinsam zu erarbeiten.

Eines schönen Morgens tauchte eine interessante Aufgabe auf: Berechtigungen für Benutzergruppen auf verschiedene Freigaben zu vergeben, die Unterordner von Projekten mit Dokumenten enthalten. Alles lief gut und es wurde ein Skript zur Vergabe von Rechten für die Ordner geschrieben. Dann stellte sich heraus, dass die Gruppen Benutzer aus verschiedenen Domänen, also aus unterschiedlichen Gesamtstrukturen beinhalten sollten (für diejenigen, die vergessen haben, was das ist). Angenommen, die Freigabe selbst befindet sich auf einem Synology-Gerät, das in der Domäne FB, Gesamtstruktur PSI, registriert ist. Aufgabe: Den Benutzern Domänen einer anderen Gesamtstruktur den Zugriff auf den Inhalt dieser Freigabe zu gewähren, und zwar sehr selektiv.

Die Anforderungen entwickelten sich im Laufe der Zeit wie folgt:

  • 2 Gesamtstrukturen: PSI und TG.

    Umfassende Rechtevergabe für Benutzer von Domains aus verschiedenen Wäldern.

  • In jeder Gesamtstruktur gibt es 3 Domänen: PSI (ZG, PSI, FB); TG (TG, HU, KC).
  • Zwischen den Gesamtstrukturen bestehen Vertrauensverhältnisse; Synology sieht alle Sicherheitsgruppen in allen Gesamtstrukturen.
  • Auf den Freigaben und Ordnern/Sousordnern müssen unbedingt Kontoanmeldungen der Administratoren der Domäne FB mit Vollzugriffsrechten vorhanden sein.
  • Die Namen der Share-Ordner müssen systematisch organisiert sein. Die Abstimmung der Projekt-IDs wurde von der Leitung durchgeführt, ich habe entschieden, die Namen der Gruppen Security an die Projekt-IDs zu koppeln.
  • Die Projektordner in den System-Shares müssen eine im .xlsx-Dokument vorbereitete Struktur enthalten, mit entsprechenden Zugriffsprivilegien (R/RW/NA, wobei NA keinen Zugriff bedeutet).

    Umfassende Rechtevergabe für Benutzer von Domains aus verschiedenen Wäldern.

  • Es muss möglich sein, die Rechte der Benutzer/Gruppenmitglieder eines Projekts auf bestimmte Verzeichnisse dieses Projekts zu beschränken. Auf andere Verzeichnisse/Projekte darf der Benutzer gemäß seiner Gruppenmitglieder keine Zugriffsrechte haben.
  • Bei der Anlage eines Projektordners sollen möglichst automatisch Gruppen in den entsprechenden Domänen mit den Namen, die den Projekt-IDs entsprechen, erstellt werden.

Anmerkungen zum Lastenheft

  • Die Einrichtung von Vertrauensstellungen fällt nicht in den Rahmen des Lastenhefts.
  • Die Projekt-ID enthält Zahlen und lateinische Buchstaben.
  • Die Benutzerrollen der Projekte für alle Domänen haben standardisierte Namen.
  • Die .xlsx-Datei mit den Ordnern und Zugriffsrechten (Zugriffs-Matrix) wird vor Beginn der gesamten Projektdurchführung erstellt.
  • Bei der Umsetzung von Projekten kann die Erstellung von Benutzergruppen in den entsprechenden Domänen erfolgen.
  • Automatisierung erfolgt durch den Einsatz der integrierten Administrationsmittel von MS Windows

Umsetzung der Anforderungen

Nach der Formalisierung dieser Anforderungen wurde eine taktische Pause eingelegt, um die Methoden zur Erstellung von Katalogen und deren Berechtigungen zu testen. Es war nur vorgesehen, PowerShell zu verwenden, um das Projekt nicht zu komplizieren. Wie ich bereits erwähnt habe, war der Algorithmus des Skripts ziemlich einfach:

  • Wir registrieren Gruppen mit Namen, die von der Projekt-ID abgeleitet sind (z. B. KC40587) und den entsprechenden Rollen, die in der Zugriffsmatrix angegeben sind: KC40587-EN für den Ingenieur; KC40587-PM für den Produktmanager usw.
  • Wir erhalten die SID der erstellten Gruppen
  • Wir registrieren den Projektordner und das entsprechende Set an Katalogen (die Liste der Unterordner hängt von der Freigabe ab, in der er erstellt wird, und ist in der Zugriffsmatrix definiert)
  • Wir weisen die Berechtigungen für die neuen Unterkataloge des Projekts den Gruppen gemäß der Zugriffsmatrix zu.

Herausforderungen, denen wir in der ersten Phase begegnet sind:

  • Unverständnis über die Art und Weise, wie die Zugriffsmatrix im Skript festgelegt wird (derzeit wird ein mehrdimensionales Array implementiert, aber es wird nach einem Weg gesucht, es auf Grundlage des Inhalts einer .xlsx-Datei/Zugriffsmatrix zu füllen)

    Umfassende Rechtevergabe für Benutzer von Domains aus verschiedenen Wäldern.

  • Die Unmöglichkeit, Berechtigungen in SMB-Freigaben auf Synology-Speicher mit PoSH festzulegen (https://social.technet.microsoft.com/Forums/en-US/3f1a949f-0919-46f1-9e10-89256cf07e65/error-using-setacl-on-nas-share?forum=winserverpowershell), hat eine Menge Zeit gekostet und erforderte die Anpassung alles an Skripte unter Verwendung des Dienstprogramms icacls zur Bearbeitung von Berechtigungen, was die Erstellung eines Zwischenablagespeichers für Text- und CMD-Dateien erforderte.

Derzeit wird die Ausführung von CMD-Dateien manuell kontrolliert, abhängig von der Notwendigkeit, einen Ordner für das Projekt zu registrieren.

Umfassende Rechtevergabe für Benutzer von Domains aus verschiedenen Wäldern.

Es stellte sich auch heraus, dass das Skript unter anderem für die Registrierung von Gruppen in anderen Forests (wir verwendeten den Begriff Cross-Domains) ausgeführt werden muss, wobei das Verhältnis nicht nur 1 zu 1, sondern auch 1 zu vielen sein kann.

Umfassende Rechtevergabe für Benutzer von Domains aus verschiedenen Wäldern.

Das bedeutet, dass auf den Zugang zu Ressourcen eines bestimmten Domänes jetzt auch Gruppen aus anderen Cross-Domains, einschließlich des benachbarten Forests, Anspruch erheben können. Um Einheitlichkeit zu gewährleisten, wurde beschlossen, eine symmetrische Struktur in den OUs aller verwalteten Domänen sämtlicher Forests (schwarze vertikale Ovale) zu schaffen. Wie man sagt, im Militär muss alles chaotisch, aber einheitlich sein:

Umfassende Rechtevergabe für Benutzer von Domains aus verschiedenen Wäldern.

Bei der Registrierung des Projekts 80XXX in der Domain TG führt das Skript die folgenden Schritte aus:

1. Erstellung der entsprechenden OU (rote horizontale Ovale) in dieser Domain und in den Cross-Domains, also in denen Domains, zu denen Mitarbeitende Zugriff auf diese Ressource haben müssen.

2. Befüllung der OU mit Gruppen, deren Namen der Struktur <SRC_domain><DST_domain><ID_project>- entsprechen, wobei:

  • SRC_domain – die Cross-Domain, deren Mitarbeitende Zugang zu den Ressourcen der DST-Domain haben werden
  • DST_domain – die Domain, zu deren Ressourcen, die tatsächlich bereitgestellt werden sollen, also warum dies alles gestartet wurde
  • <ID_project> — die Projektnummer
  • ROLES – die Bezeichnungen der in der Zugriffsmatrix aufgeführten Rollen.

3. Auslesen des Arrays von SID aller Gruppen aller beteiligten Domains und Speichern dieser Daten zur späteren Übergabe an eine Datei, die die Berechtigungen für einen bestimmten Unterordner des Projekts definiert.

4. Generierung von Quell-Dateien (Parameter /restore) mit einem Satz von Rechten zur Verwendung im Dienstprogramm icacKC im Modus der ausführbaren Datei "icacKC \"as-nasNNKCProjects\" /restore C:TempKCKC40XXKC40XX.txt"

5. Erstellung einer CMD-Datei, die alle auszuführenden icacls-Befehle für alle Projektordner vereint.

Umfassende Rechtevergabe für Benutzer von Domains aus verschiedenen Wäldern.

Wie bereits erwähnt, erfolgt der Start der ausführbaren Datei manuell und die Auswertung der Ergebnisse wird ebenfalls manuell durchgeführt.

Die Schwierigkeiten, mit denen wir konfrontiert wurden, sind:

  • Wenn der Projektordner bereits mit einer großen Anzahl von Dateien gefüllt ist, kann die Ausführung des Befehls icacls auf den vorhandenen Volumen bedeutende Zeit in Anspruch nehmen und in einigen Fällen zu einem Fehler führen (z. B. bei langen Dateipfaden).
  • Zusätzlich zum Parameter /restore musste ich Zeilen mit dem Parameter /reset hinzufügen, falls die Ordner nicht neu erstellt, sondern aus bereits bestehenden Ordnern mit deaktivierten Vererbungsrechten vom Stamm verschoben wurden.
  • Einen Teil des Skripts zur Erstellung von Gruppen musste ich auf einem beliebigen DC jedes Forests ausführen; das Problem betrifft die administrativen Benutzerkonten für jeden Baum.

Fazit: Es ist sehr seltsam, dass es auf dem Markt bisher keine Tools mit einer solchen Funktionalität gibt. Es wäre möglich, eine ähnliche Funktionalität auf der Basis des SharePoint-Portals zu realisieren.
Es ist auch unverständlich, dass es keine Möglichkeit gibt, PoSH-Tools zur Zuweisung von Rechten auf Ordnern auf Sinology-Geräten zu verwenden.

Ich teile gerne das Skript, wenn jemand Interesse hat, und erstelle ein Projekt auf GitHub.

Quelle: habr.com

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster