xaero1982
Goto Top

Komplexe Berechtigungsmatrix auf dem Fileserver

Moin Zusammen,

ein Kunde von mir hat eine extrem verschachtelte Vorgabe bzgl. der Berechtigungen auf dem Fileserver. (Windows Server 2016)
-Hauptordner (Zugriff Team A, Team B, Team C)
-Unterordner 1 (Zugriff Team A, Team B, Team D)
-Unterordner 2 (Zugriff Team A, Team C, Team E)
-Unterunterordner 1 (Zugriff Team A, Team C, Team E, Team F)

usw usw. jedenfalls ist es alles extrem komplex und über die GUI einfach kathastrophal.

Was benutzt ihr dazu oder geht ihr einen ganz anderen Weg um Zugriffsberechtigungen zu verwalten und zu vergeben?

Beste Grüße
X

Content-ID: 425823

Url: https://administrator.de/contentid/425823

Ausgedruckt am: 22.11.2024 um 01:11 Uhr

Lochkartenstanzer
Lochkartenstanzer 07.03.2019 aktualisiert um 09:49:21 Uhr
Goto Top
Zitat von @Xaero1982:

usw usw. jedenfalls ist es alles extrem komplex und über die GUI einfach kathastrophal.

Deswegen nutzt man die Kommandozeile oder Skripte.

Was benutzt ihr dazu oder geht ihr einen ganz anderen Weg um Zugriffsberechtigungen zu verwalten und zu vergeben?


Ich benutze da meistens individuell angepaßte Skripte mit getcal/setacl.

lks
Xaero1982
Xaero1982 07.03.2019 um 10:12:22 Uhr
Goto Top
Das war auch mein Gedanke.

Ich glaube ich muss da einen ganz anderen Weg gehen, der nachvollziehbarer ist.

Derzeit sind die Nutzer in verschiedenen "Teams" - also AD-Gruppen, die unterschiedliche Berechtigungen haben.
In einem Artikel wird vorgeschlagen AD-Gruppen nach den vorhandenen Ordner zu benennen und dort entsprechend die Rechte zu vergeben. Das wäre aus meiner Sicht schon mal wesentlich nachvollziehbarer, sofern man die Ordnerstruktur nicht zu sehr verschachtelt.

VG
erikro
erikro 07.03.2019 um 10:17:16 Uhr
Goto Top
Moin,

Zitat von @Xaero1982:

Moin Zusammen,

ein Kunde von mir hat eine extrem verschachtelte Vorgabe bzgl. der Berechtigungen auf dem Fileserver. (Windows Server 2016)
-Hauptordner (Zugriff Team A, Team B, Team C)
-Unterordner 1 (Zugriff Team A, Team B, Team D)

Dat geiht so nich. Wenn TeamD keine mindestens lesenden Zugriff auf den Hauptordner hat, dann hat es auch keinen auf den Unterordner.

Was benutzt ihr dazu oder geht ihr einen ganz anderen Weg um Zugriffsberechtigungen zu verwalten und zu vergeben?

AGDPL ist der Weg, sowas zu lösen. Eine globale Gruppe für jedes Team, die bei Bedarf weiter veschachtelt werden. Dann eine lokale Gruppe pro Ressource für den lesenden und eine für den schreibenden Zugriff. Die globalen kommen dann in die lokalen und alles ist gut.
TripleB
TripleB 07.03.2019 um 10:24:03 Uhr
Goto Top
Hi,

falls es etwas kosten darf guck Dir ruhig mal 8Man an.

8Man bei Heise

Gruß
Eric
Xaero1982
Xaero1982 07.03.2019 um 10:32:16 Uhr
Goto Top
Das war nur ein Beispiel erikro und nicht die Realität. Wollte nur deutlich machen, dass es extrem verschachtelt ist face-smile
Klingt interessant dein Ansatz - muss ich mir mal durchdenken.

Mach ich TripleB. Danke

Grüße
erikro
erikro 07.03.2019 um 10:49:38 Uhr
Goto Top
Zitat von @Xaero1982:

Das war nur ein Beispiel erikro und nicht die Realität. Wollte nur deutlich machen, dass es extrem verschachtelt ist face-smile

Chefs kommen manchmal auf solche Ideen. face-wink

Klingt interessant dein Ansatz - muss ich mir mal durchdenken.

Das ist zu viel der Ehre. Das ist der Ansatz von Microsoft. Google einfach mal nach der Abkürzung und Du wirst eine Menge finden, wie man solche komplexen Strukturen auf einfache und überschaubare mit Hilfe dieser Technik herunterbricht.
Dani
Dani 07.03.2019 um 10:51:23 Uhr
Goto Top
Moin,
AGDPL ist der Weg, sowas zu lösen. Eine globale Gruppe für jedes Team, die bei Bedarf weiter veschachtelt werden. Dann eine lokale Gruppe pro Ressource für den lesenden und eine für den schreibenden Zugriff. Die globalen kommen dann in die lokalen und alles ist gut.
da bin ich voll und ganz bei Kollege @eriko. Somit kannst du über das Active Directory bequem die Benutzer in die jeweiligen Gruppe aufnehmen. An den NTFS-Berechtigungen ändert sich aus der Praxis nachträglich ab und zu etwas aber nicht täglich oder wöchentlich. Hängt natürlich von der Größe des Unternehmens ab.


Gruß,
Dani
erikro
erikro 07.03.2019 um 10:55:35 Uhr
Goto Top
Moin,

Zitat von @Dani:

Moin,
AGDPL ist der Weg, sowas zu lösen. Eine globale Gruppe für jedes Team, die bei Bedarf weiter veschachtelt werden. Dann eine lokale Gruppe pro Ressource für den lesenden und eine für den schreibenden Zugriff. Die globalen kommen dann in die lokalen und alles ist gut.
da bin ich voll und ganz bei Kollege @eriko. Somit kannst du über das Active Directory bequem die Benutzer in die jeweiligen Gruppe aufnehmen. An den NTFS-Berechtigungen ändert sich aus der Praxis nachträglich ab und zu etwas aber nicht täglich oder wöchentlich. Hängt natürlich von der Größe des Unternehmens ab.

Vor allem ist das Schöne, dass die Änderungen immer nur die lokalen Gruppen bzw. die Mitgliedschaft der globalen Gruppen in den lokalen oder anderen globalen betrifft. Man kann keinen User mehr vergessen oder gar einen zu viel berechtigen. Die bleiben in ihrer globalen Gruppe. Entweder stimmt es für alle oder für keinen.

Liebe Grüße

Erik
Xaero1982
Xaero1982 07.03.2019 um 10:59:57 Uhr
Goto Top
Bei dem Kunden ändert sich das leider wirklich fast wöchentlich ... das ist ja das Schlimme.

Ich habe jetzt einen Artikel gefunden in dem steht:

"Konten (Accounts) werden Globalen Gruppen zugewiesen, diese (bei Bedarf/Praktikabilität) Universalen Gruppen. Die globalen Gruppen sind wiederum in domänenLokalen Gruppen enthalten, die domänenlokalen Gruppen werden in den Rechten (Permissions) verwendet."

Wenn ich eine Globale Gruppe einer Universalen Gruppe zuordne und die Globale Gruppe einer domänenlokalen dann haut das doch nicht hin?

Wir haben in der Tat zwei Domänen mit Vertrauensstellung, für die ich dann ja Universale Gruppen brauche.

Also erstelle ich Globale Gruppen in die nur die Nutzer der lokalen Domäne kommen.

Also Nutzer A aus Domäne A und Nutzer B aus Domäne A kommen in die Globale Gruppe - Gruppe G_A
Gruppe A kommt nun wiederum in die Universale Gruppe U_A
Und laut Text soll nun Gruppe G_A wiederum in die domänenlokale Gruppe DL_A

-> Dann wäre G_A in U_A und DL_A, aber die Nutzer A und Nutzer B aus Domäne B wären in der Unversalen Gruppe U_A, die ja wiederum nicht Mitglied der DL_A ist über die die Berechtigungen laufen?

???
Xaero1982
Xaero1982 07.03.2019 um 11:05:57 Uhr
Goto Top
Hat sich erledigt.

Die Nutzer aus Domäne B kommen ja auch in die Gruppe DL_A.

Aber wozu brauche ich dann Universale Gruppen oder brauche ich sie überhaupt?

Grüße
jsysde
jsysde 07.03.2019 aktualisiert um 11:27:03 Uhr
Goto Top
Moin.

Ich nehm' da die Access Based Enumeration (ABE) zu Hilfe:
Auf den Root-Ordner und nur auf den haben Domain Users lesenden Zugriff, somit ist sichergestellt, dass das Laufwerksmapping/der Zugriff für wirklich jeden User funktioniert.

Auf den Unterordnern werden dann entsprechende NTFS-Rechte gesetzt, sodaß auch nur die Ordner sichtbar werden, auf die ein User tatsächlich zugreifen kann. Mittels Traverse Folder kann so auch der Zugriff auf Unterordner realisiert werden - wobei ich da vorsichtig wäre, Zugriff auf den siebzehnten Unterordner in einem Share und solche Konstrukte machen das ganze doch sehr unübersichtlich, daher muss es gut dokumentiert sein.

Cheers,
jsysde
Dani
Dani 07.03.2019 um 11:28:52 Uhr
Goto Top
Moin,
wobei ich da vorsichtig wäre, Zugriff auf den siebzehnten Unterordner in einem Share und solche Konstrukte machen das ganze doch sehr unübersichtlich, daher muss es gut dokumentiert sein.
nicht nur das... man denke auch an die 255 Zeichen Problematik. face-confused


Gruß,
Dani
fireblade09
fireblade09 07.03.2019 um 11:34:11 Uhr
Goto Top
ein Kunde von mir hat eine extrem verschachtelte Vorgabe bzgl. der Berechtigungen auf dem Fileserver. (Windows Server 2016)
-Hauptordner (Zugriff Team A, Team B, Team C)
-Unterordner 1 (Zugriff Team A, Team B, Team D)

Dat geiht so nich. Wenn TeamD keine mindestens lesenden Zugriff auf den Hauptordner hat, dann hat es auch keinen auf den Unterordner.

Mittels List Recht von Team D auf den Hauptorder sollte das schon gehen.
erikro
erikro 07.03.2019 um 11:48:44 Uhr
Goto Top
Zitat von @Xaero1982:

Hat sich erledigt.

Die Nutzer aus Domäne B kommen ja auch in die Gruppe DL_A.

Aber wozu brauche ich dann Universale Gruppen oder brauche ich sie überhaupt?

Du brauchst dann universale Gruppen, wenn Du einen Forest hast und von einem Baum im anderen Baum Zugriffe erlauben willst. Das geht dann so:

Lokale Gruppe -> Rechte zuweisen
Globale Gruppe (gleiche Domain) -> aufnehmen in lokale Gruppe
Globale Gruppe (andere Domain) -> aufnehmen in universale Gruppe
universale Gruppe -> aufnehmen in lokale Gruppe

NIEMALS User in eine universale Gruppe aufnehmen. Das ist zwar theoretisch möglich, macht aber keinen Spaß, da jede Änderung an der universalen Gruppe über den gesamten Forest repliziert wird. Gerade in Umgebungen, in denen sich Zugriffsrechte häufig ändern, führt das zu unnötigem Traffic zwischen den Bäumen des Forest.

hth

Erik
vBurak
vBurak 07.03.2019 um 14:26:52 Uhr
Goto Top
Ohne groß auf die anderen Beiträge einzugehen, ich habe vor kurzem RBAC beim Kunden eingerichtet.
In diesem Video (ist zwar sehr alt, aber das Prinzip ist immer noch das gleiche) wird die Idee und die Umsetzung erklärt:
https://youtu.be/IKzokBgCp60
Lohnt sich auf jeden Fall anzuschauen, auch wenn es knapp eine Stunde geht.
Wenn ich es richtig verstehe, ist AGDLP analog dazu oder im Prinzip das selbe.

Für das Anlegen der Gruppen, habe ich mir ein kleines Skript geschrieben, nichts großartiges, aber einfacher als alle Gruppen per Hand anzulegen:

####################################################
#
# Title: CreateACL-Groups
# Author : Burak S
#
####################################################

param(
[Parameter(Mandatory=$True)][String[]]$FolderName,
[Parameter(Mandatory=$True)][String[]]$ServerName,
[Parameter(Mandatory=$False)][String[]]$SubFolderOf,
[Parameter(Mandatory=$False)][String]$OrganizationUnit="OU=ACL,OU=Gruppen,DC=contoso,DC=local"  
)

$ServerNameUpper = $ServerName.ToUpper()
$ServerName = $ServerName.ToLower()


$Name = "ACL_$($ServerNameUpper)_$($FolderName)"  
$Description = "\\$($ServerName)\$FolderName"  
if($SubFolderOf) {
    
    if( ($SubFolderOf.EndsWith("\")) ) {  
        $SubFolderOf = $SubFolderOf.substring(0,($($SubFolderOf).Length-1))
    }
    $Description = "\\$($ServerName)\$($SubFolderOf)\$($FolderName)"  
}

New-ADGroup –Name "$($Name)_Read" -Description "$($Description) [Read Only]" –groupscope DomainLocal –path $OrganizationUnit  
New-ADGroup –Name "$($Name)_Modify" -Description "$($Description) [Modify]" –groupscope DomainLocal –path $OrganizationUnit  
New-ADGroup –Name "$($Name)_Full" -Description "$($Description) [FullControl]" –groupscope DomainLocal –path $OrganizationUnit  
New-ADGroup –Name "$($Name)_List" -Description "$($Description) [List Only]" –groupscope DomainLocal –path $OrganizationUnit  

Add-ADGroupMember -Identity "$($Name)_Full" -Members "Administrator"  

Aufruf ist dann z.B.:
CreateACL-Groups.ps1 -FolderName "Vertrieb" -ServerName "FileServer01"  
CreateACL-Groups.ps1 -FolderName "Unterordner-Vertrieb" -ServerName "FileServer01" -SubFolderOf "Vertrieb"  
CreateACL-Groups.ps1 -FolderName "Vertrieb" -ServerName "FileServer01" -OrganizationUnit "OU=FileServer01,OU=ACL,OU=Gruppen,DC=contoso,DC=local"  

Ich wollte das schon seit langem erweitern, dass der Ordner automatisch erstellt wird und die ACL Berechtigung gleich mit den Gruppen gesetzt wird. Kam leider noch nicht dazu.

Im Prinzip kriegt dann der jeweilige Ordner 6 Berechtigungseinträge:

  • SYSTEM Full Control
  • Administrator Full Control
  • Group_Read Read-Only
  • Group_Modify Modify-Only
  • Group_Full Full Control
  • Group_List List-Only, This Folder Only

Unterordner erben dann davon, wenn ein Unterordner eine weitere Unterteilung braucht, wird das ganze wiederholt und die Vererbung ausgeschaltet.