[{"data":1,"prerenderedAt":217},["ShallowReactive",2],{"blog:de:contractor-separation":3},{"id":4,"title":5,"author":6,"body":7,"date":203,"description":204,"extension":205,"meta":206,"navigation":207,"path":208,"seo":209,"stem":210,"tags":211,"__hash__":216},"blog_de/blog/contractor-separation/de.md","Trennung der Auftragnehmer: Zwei Ebenen statt einer","Aptli",{"type":8,"value":9,"toc":192},"minimark",[10,15,19,22,26,29,36,42,48,54,57,61,64,70,76,79,83,86,102,105,109,112,119,136,143,146,149,153,156,159,163],[11,12,14],"h2",{"id":13},"die-situation","Die Situation",[16,17,18],"p",{},"Immer mehr der Organisationen, mit denen wir zusammenarbeiten, nutzen gemeinsame Plattformen, auf denen mehrere Parteien mit denselben zugrunde liegenden Anlagendaten arbeiten. Ein Versorgungsunternehmen kann beispielsweise interne Teams, einen Hauptbauunternehmer und zwei oder drei Subunternehmer haben, die alle auf dasselbe Netzwerk zugreifen. Eine Kommune kann über eigenes Personal sowie externe Ingenieurbüros verfügen. Es ist üblich – und zunehmend unvermeidlich –, dass Parteien, die miteinander im Wettbewerb stehen, letztendlich in derselben Anwendung zusammenarbeiten.",[16,20,21],{},"Die naheliegende Frage ist, wie man verhindert, dass diese Parteien die Arbeit der anderen einsehen können. Die naheliegende erste Antwort lautet: „Geben Sie jedem von ihnen einen Login.“ Damit ist die Authentifizierung gewährleistet, was zwar notwendig, aber nicht ausreichend ist. Die Authentifizierung teilt dem System mit, wer Sie sind. Sie teilt dem System jedoch nicht mit, was Sie sehen dürfen. Ohne eine zweite Sicherheitsstufe sieht jeder, der sich einloggt, alles.",[11,23,25],{"id":24},"ansätze-die-nicht-ganz-überzeugen","Ansätze, die nicht ganz überzeugen",[16,27,28],{},"Es gibt vier gängige Ansätze, und jeder hat seine Berechtigung. Sie haben jedoch auch jeweils ihre Grenzen, über die man offen sprechen sollte.",[16,30,31,35],{},[32,33,34],"strong",{},"Separate Mandantenbereitstellungen."," Geben Sie jedem Auftragnehmer eine eigene Kopie der Anwendung, eine eigene Datenbank und eine eigene Umgebung. Das ist echte Isolation, und es gibt Fälle, in denen dies die richtige Lösung ist – in der Regel dann, wenn die Parteien nichts miteinander teilen und niemals zusammenarbeiten werden. Das wird schnell teuer und widerspricht dem Sinn der Plattform, wenn der eigentliche Zweck in der Zusammenarbeit, der Rollup-Berichterstattung oder einer einzigen „Map of Truth“ besteht. Wenn der Großteil der Daten gemeinsam genutzt wird und nur ein kleiner Teil sensibel ist, sind separate Mandanten übertrieben.",[16,37,38,41],{},[32,39,40],{},"Nur über die Benutzeroberfläche ausblenden."," Die gängigste Abkürzung. Die Schaltfläche ausblenden, den Menüpunkt überspringen, die Listenansicht filtern. Das ist reine Augenwischerei. Jeder, der über Browser-Entwicklertools, eine direkte API-Anfrage oder einen gezielten Export verfügt, kann die „versteckten“ Daten abrufen. Der Datensatz existiert weiterhin, wird weiterhin über das Netzwerk übertragen und erscheint weiterhin in Massenexporten. Es verhindert, dass ehrliche Nutzer zufällig darauf stoßen; es hält jedoch niemanden davon ab, der tatsächlich danach sucht.",[16,43,44,47],{},[32,45,46],{},"Filterung auf Anwendungsebene, Endpunkt für Endpunkt."," Ein echter Fortschritt: Der Filter wird im Code überall dort durchgesetzt, wo Daten abgefragt werden. Das funktioniert – bis es nicht mehr funktioniert. Die Sicherheit ist nun auf Dutzende von Abfragepunkten verteilt. Jede neue Funktion ist eine potenzielle Sicherheitslücke. Bei jeder Codeüberarbeitung besteht die Gefahr, eine davon zu übersehen. Dieser Ansatz ist in der Regel zum Zeitpunkt der Veröffentlichung korrekt, driftet jedoch mit zunehmendem Umfang der Codebasis von der Korrektheit ab.",[16,49,50,53],{},[32,51,52],{},"Exportieren in separate Arbeitsbereiche."," Kopieren Sie die Daten, die der jeweilige Auftragnehmer benötigt, in einen Arbeitsbereich, den nur dieser einsehen kann. Dieser ist zwar vollständig isoliert, doch die Kopie ist bereits im Moment der Erstellung veraltet. Nun haben Sie statt eines Sichtbarkeitsproblems ein Synchronisationsproblem, und die Außendienstmitarbeiter sehen letztendlich die gestrige Ansicht der heutigen Arbeit.",[16,55,56],{},"Keine dieser Lösungen ist in jeder Situation falsch. Sie sind jedoch als allgemeine Lösung für den Zugriff mehrerer Parteien auf einer gemeinsamen Plattform ungeeignet.",[11,58,60],{"id":59},"das-zweischichtenmodell","Das Zweischichtenmodell",[16,62,63],{},"Unser Ansatz unterteilt die Autorisierung in zwei unabhängige Ebenen, die sich zusammensetzen.",[16,65,66,69],{},[32,67,68],{},"Administratorrechte sind berechtigungsbasiert."," Sie legen fest, was ein Benutzer tun darf – einen Arbeitsauftrag erstellen, einen Bericht bearbeiten, einen Lagerartikel löschen. Ohne ein Administratorrecht können Sie standardmäßig Daten anzeigen, aber nicht ändern.",[16,71,72,75],{},[32,73,74],{},"Rolleneinschränkungen sind restriktiv."," Sie legen fest, was ein Benutzer überhaupt nicht sehen oder bearbeiten darf. Jede Einschränkung umfasst ein Modell (Punkte, Berichte, Aufgaben), ein Feld in diesem Modell (Eigentümer, Status, Kategorie), einen Vergleich und einen Wert. Entsprechende Datensätze werden für Mitglieder der Rolle bei den angegebenen Vorgängen – Lesen, Bearbeiten, Erstellen, Löschen – unabhängig voneinander ausgeblendet.",[16,77,78],{},"Diese Ebenen beeinträchtigen sich nicht gegenseitig. Ein Außendienstmitarbeiter kann das Recht haben, Berichte zu bearbeiten, während eine Rollenbeschränkung alle Berichte ausblendet, die nicht von ihm verfasst wurden – er kann also Berichte bearbeiten, aber nur seine eigenen. Das Administratorrecht gewährt die Befugnis; die Rollenbeschränkung schränkt den Umfang ein. Keine der beiden Ebenen muss von der anderen wissen, und diese Unabhängigkeit ist der Hauptgrund dafür, dass sich das Modell bewährt hat.",[11,80,82],{"id":81},"warum-die-serverseitige-durchsetzung-auf-feldebene-wichtig-ist","Warum die serverseitige Durchsetzung auf Feldebene wichtig ist",[16,84,85],{},"Rollenbeschränkungen werden auf dem Server angewendet, bevor die Daten die Datenbank verlassen. Das ist der Punkt, auf den es in der Praxis ankommt:",[87,88,89,93,96,99],"ul",{},[90,91,92],"li",{},"Der Filter gilt für jeden Abfragepfad – Detailseiten, Listenansichten, API-Aufrufe, Massenexporte, Kartenkacheln.",[90,94,95],{},"Ein Benutzer, der eine ihm zufällig bekannte Datensatz-ID in die URL eingibt, erhält einen 404 Not Found-Fehler, da der Datensatz für ihn tatsächlich nicht existiert.",[90,97,98],{},"Ein Screenshot vom Bildschirm eines anderen Benutzers ist nutzlos; die Daten werden nicht geladen, wenn der Benutzer mit eingeschränkten Rechten versucht, darauf zuzugreifen.",[90,100,101],{},"Neue Funktionen übernehmen die Einschränkungen automatisch, da sie dieselbe Server-Datenschicht durchlaufen.",[16,103,104],{},"Das Ausblenden auf UI-Ebene scheitert bei jedem dieser Tests. Die Filterung auf Anwendungsebene besteht diese Tests nur, wenn der Entwickler daran denkt, den Filter an jeder neuen Abfrage-Stelle anzuwenden. Durch auf Serverebene durchgesetzte Einschränkungen auf Feldebene verwandelt sich die Frage von „Haben wir daran gedacht?“ in „Entsprachen die Daten der Regel?“ – und genau diese Frage soll das System eigentlich beantworten.",[11,106,108],{"id":107},"ein-beispiel","Ein Beispiel",[16,110,111],{},"Zwei Auftragnehmer arbeiten am selben Glasfaserausbau. Beide nutzen dieselbe Karte, beide greifen auf dieselben gemeinsamen Basis-Ebenen zurück, und beide erstellen Berichte über ihre eigenen Arbeiten.",[16,113,114,115,118],{},"Erstellen Sie eine Rolle mit dem Namen ",[32,116,117],{},"Auftragnehmer A"," mit einer einzigen Einschränkung:",[87,120,121,124,127,130,133],{},[90,122,123],{},"Modell: Point",[90,125,126],{},"Feld: owner",[90,128,129],{},"Vergleich: =",[90,131,132],{},"Filterwert: Auftragnehmer B",[90,134,135],{},"Gesperrte Berechtigungen: Lesen, Bearbeiten, Anlegen, Löschen",[16,137,138,139,142],{},"Fügen Sie die Benutzer von Auftragnehmer A als Mitglieder hinzu. Führen Sie denselben Vorgang für ",[32,140,141],{},"Auftragnehmer B"," durch. Das ist die gesamte Konfiguration.",[16,144,145],{},"Die Teams von Auftragnehmer A sehen nun ihre eigenen Punkte und die gemeinsamen Ebenen, aber nichts von Auftragnehmer B. Wenn sie eine Liste der Punkte öffnen, sind die Datensätze von Auftragnehmer B nicht darin enthalten. Wenn sie in CSV exportieren, wird der Export gefiltert. Wenn sie die numerische ID eines Punktes von Auftragnehmer B erraten und in die URL einfügen, erhalten sie einen 404 Not Found-Fehler. Bei Auftragnehmer B ist es genau umgekehrt. Keine der beiden Seiten weiß, wie viel Arbeit die andere geleistet hat, wo sich diese befindet oder wann sie aktualisiert wurde.",[16,147,148],{},"Die gemeinsamen Basisinfrastrukturen – Kabeltrassen, Masten, Leitungskanäle – bleiben für beide Seiten sichtbar, da für sie keine Einschränkungen gelten. Die Zusammenarbeit wird dort gewahrt, wo sie gewünscht ist; Isolation wird dort durchgesetzt, wo sie erforderlich ist. Die Plattform muss sich nicht zwischen beiden entscheiden.",[11,150,152],{"id":151},"wann-getrennte-mandanten-immer-noch-die-richtige-lösung-sind","Wann getrennte Mandanten immer noch die richtige Lösung sind",[16,154,155],{},"Das Zweischichtenmodell ist keine Patentlösung. Wenn zwei Parteien nichts gemeinsam nutzen, niemals zusammenarbeiten, niemals einen gemeinsamen Bericht erstellen und aus regulatorischen Gründen auf physisch getrennten Infrastrukturen betrieben werden müssen, dann sind getrennte Mandanten die richtige Wahl. Das Zweischichtenmodell ersetzt jedoch den weitaus häufigeren Fall, in dem die Parteien den Großteil der Plattform gemeinsam nutzen und nur einen bestimmten Teil verbergen müssen. In diesem Fall führt die Trennung der Mandanten zu unnötigen Kosten, beeinträchtigt die Berichterstattung und verlangsamt die Arbeit, während bei einer reinen Verbergung auf UI-Ebene Informationen nach außen dringen.",[16,157,158],{},"Unser Kriterium ist einfach: Wenn es für die Beteiligten von Vorteil wäre, dieselben Basiskarten zu sehen, dieselben Berichte zu erstellen und auf derselben Karte zu arbeiten, gehören sie auf dieselbe Plattform – wobei eine echte Trennung auf der Ebene gewährleistet sein muss, auf der sie tatsächlich funktioniert.",[11,160,162],{"id":161},"zusammenfassung","Zusammenfassung",[87,164,165,168,171,174,177,180,183,186,189],{},[90,166,167],{},"Die Zusammenarbeit mehrerer Parteien auf gemeinsamen Plattformen wird in den Bereichen Versorgungswirtschaft, Telekommunikation und Kommunalverwaltung immer häufiger und umfasst zunehmend auch Wettbewerber.",[90,169,170],{},"Die Authentifizierung allein isoliert die Nutzer nicht; sie identifiziert sie lediglich. Jeder, der sich anmeldet, hat weiterhin Zugriff auf alle Daten, sofern keine zweite Sicherheitsebene hinzugefügt wird.",[90,172,173],{},"Separate Mandantenbereitstellungen bieten zwar echte Isolation, machen aber den Sinn einer gemeinsamen Plattform zunichte, wenn die Beteiligten bei den meisten Daten zusammenarbeiten müssen.",[90,175,176],{},"Das Ausblenden nur auf UI-Ebene ist reine Augenwischerei – die Daten sind immer noch vorhanden und können über Entwicklertools, die API oder Exporte abgerufen werden.",[90,178,179],{},"Filterung auf Anwendungsebene ist besser, neigt jedoch dazu, mit wachsendem Codeumfang und neuen Funktionen an Genauigkeit zu verlieren.",[90,181,182],{},"Das zweischichtige Modell trennt die Autorisierung in freizügige Administratorrechte (was man tun darf) und restriktive Rollenbeschränkungen (was man nicht sehen darf), die auf dem Server feldweise durchgesetzt werden.",[90,184,185],{},"Die serverseitige Durchsetzung auf Feldebene bedeutet, dass eingeschränkte Daten aus der Perspektive des eingeschränkten Benutzers tatsächlich nicht existieren – weder in der Benutzeroberfläche, noch in der API, noch in Exporten, noch unter einer erratenen URL.",[90,187,188],{},"Die bewährte Konfiguration sieht eine einzige Rolle pro Auftragnehmer vor, was zu Isolation dort führt, wo sie erforderlich ist, während gemeinsame Ebenen dort erhalten bleiben, wo Zusammenarbeit gewünscht ist.",[90,190,191],{},"Separate Mandanten haben nach wie vor ihre Berechtigung, wenn die Parteien nichts miteinander teilen; das zweischichtige Modell ist jedoch die bessere Lösung für den weitaus häufigeren Fall, in dem die Parteien die meisten Dinge teilen und nur einen Teil davon verbergen müssen.",{"title":193,"searchDepth":194,"depth":194,"links":195},"",2,[196,197,198,199,200,201,202],{"id":13,"depth":194,"text":14},{"id":24,"depth":194,"text":25},{"id":59,"depth":194,"text":60},{"id":81,"depth":194,"text":82},{"id":107,"depth":194,"text":108},{"id":151,"depth":194,"text":152},{"id":161,"depth":194,"text":162},"2026-04-16","Wenn sich mehrere Parteien eine Plattform teilen – Mitarbeiter, Subunternehmer, ja sogar konkurrierende Auftragnehmer –, reicht eine reine Authentifizierung nicht aus, um sie voneinander zu trennen. Hier erfahren Sie, wie wir diese Trennung auf eine Weise umsetzen, die tatsächlich funktioniert.","md",{},true,"/blog/contractor-separation/de",{"title":5,"description":204},"blog/contractor-separation/de",[212,213,214,215],"authorization","multi-tenant","contractor-separation","security","GBgOPcEzxD1MHt15I83jh9I-N3w3w7cFAvGtpU0dzGE",1780338688387]