Rechte und Rechte für sichere Objekte

Dieses Dokument stellt das objektbasierte Sicherheitsmodell des Servers vor: sichere Objekte, Berechtigungen, Flagmasken, Berechtigungen und Ablehnungen, Gruppen, interne Freigaben und während der Installation erteilte Berechtigungen.

1. Überblick

Das System beantwortet folgende Frage:

Hat ein bestimmter Benutzer eine bestimmte Berechtigung für ein bestimmtes Geschäftsobjekt?

Es verbindet vier Konzepte.

Konzept Hauptklasse Rolle
Begünstigter DomainSecurityObject Ein Benutzer, eine Gruppe oder ein anderer Sicherheitsprinzipal, dem ein Recht zugewiesen werden kann.
Ziel SecurizedObject Eine Sicherheitsreferenz auf das geschützte Geschäftsobjekt.
Genehmigung Permission Eine testbare Aktion für einen Objekttyp, dargestellt durch eine Bitmaske.
Recht Right Assoziation zwischen Empfänger und Ziel, wobei eine Maske erlaubt und eine Maske nicht genehmigt ist.

Ein Recht kann daher wie folgt gelesen werden:

Die Gruppe Operators erhält autorisierte Flaggen 0x13 und Flaggen abgelehnt 0x04 Auf Ausrüstung 42.

Der Server sucht nicht nur nach einem Recht, das direkt vom Nutzer besitzt. Er berücksichtigt auch seine Gruppenmitgliedschaften, einschließlich verschachtelter Gruppen. Eine anwendbare Ablehnung wird vor den Autorisierungen bewertet.

2. Das Prinzip von SecurizedObject

2.1 Eine Sicherheitsreferenz, nicht das Geschäftsobjekt

SecurizedObject ist ein leichtgewichtiger Eintrag im Sicherheitsmodell, der ein Ziel mit zwei Werten bezeichnet:

Eigentum Bedeutung
Identifier Die Kennung der Geschäftsinstanz.
ObjectType Eine stabile Identifikatorin ihres Typs, üblicherweise ein Wert von ImmersiveObjectType.

Der eigentliche Schlüssel ist das Drehmoment (Identifier, ObjectType). Zum Beispiel:

Geschäftsobjekt ObjectType Identifier Sicherheitsziel
Karte 48 Map, oder 15 48 (48, 15)
Überwachungsbereich 48 SupervisionScope, oder 48 48 (48, 48)

Die Zahl 48 kann daher gleichzeitig eine Instanzkennung und eine Typkennung sein. Diese beiden Informationen müssen immer separat angezeigt und übertragen werden.

Weitere Informationen finden Sie im ImmersiveObjectType Katalog.

2.2 Beziehung zum Geschäftsobjekt

Die SecurizedObject enthält weder Name, Beschreibung noch Geschäftseigenschaften. Es handelt sich um einen Zeiger auf ein sicheres Objekt, das anderswo gehostet wird. SecurizedObject trägt nur die Sammlung von Right anwendungsfähig für das Ziel. Das Geschäftsobjekt bleibt in seiner eigenen Datenbank.

Diese Trennung ermöglicht es der Sicherheits-Engine, mehrere Objektfamilien zu schützen, ohne auf deren konkrete Klassen angewiesen zu sein.

2.3 Wann gilt ein Typ als sicher?

Zentrales Rechnen umfasst die Permission von SecurizedObjectTypeWenn für einen Typ keine Berechtigungen existieren, betrachtet das Sicherheitssystem, dass dieser Typ keine Rechtefilterung benötigt. Objekte dieses Typs sind daher ohne Einschränkungen und Sicherheitskontrollen zugänglich.

Wenn mindestens eine Berechtigung konfiguriert ist, führt der Typ die Sicherheitsberechnung ein, die die Berechtigungen jedes erforderlichen Ziels in Bezug auf Berechtigungen und Verbote neben dem Begünstigten bewertet.

3. Das Prinzip der Erlaubnis

A Permission beschreibt eine bekannte Aktion für einen Objekttyp. Sie bietet keinen Zugriff von selbst. Sie liefert das Vokabular, das von Right und von den Controllern.

Eigentum Rolle
Identifier Die Kennung der Berechtigung in ihrem Objekttyp. Der vollständige EF-Schlüssel ist (Identifier, SecurizedObjectType).
SecurizedObjectType Die Art des Objekts, auf den die Erlaubnis gilt. Eine Kartenberechtigung darf nicht auf Ausrüstung verwendet werden.
Name Der Name wurde angezeigt und verwendet, um die Handlung zu verstehen.
Description Funktionale Erklärung der Erlaubnis.
Flag Maske, die vorhanden sein muss AuthorizedFlags um die Erlaubnis zu erteilen.
DeniedFlag Maske gesucht in DeniedFlags. Wenn er weg ist, nutzt der Server Flag.

Name und Beschreibung einer bestehenden Genehmigung können sich ändern. Ton Flag und seine DeniedFlag sind in der täglichen Verwaltung freiwillig unveränderlich.

4. Verstehen Sie Flaggen

4.1 Eine Bit-Maske

Ein Flag ist eine ganze Zahl, in der jedes Bit eine elementare Fähigkeit darstellt. Der binäre Operator OU, geschrieben |, kombiniert mehrere Werte.

Ausdruck Dezimal Hexadezimal Positionierte Bits
1 1 0x1 Bit 0
0x3 3 0x3 Bits 0 und 1
1 | 5 5 0x5 Bits 0 und 2
0x3 | 65 67 0x43 Bits 0, 1 und 6

Der Berechtigungsmodaltester akzeptiert alle vier dieser Formulare.

4.2 Überprüfung einer autorisierten Genehmigung

Eine Erlaubnis ist erlaubt, wenn alle Schallstücke Flag sind vorhanden in AuthorizedFlags :

(authorizedFlags & permission.Flag) == permission.Flag

Beispiele mit Kartenberechtigungen:

AuthorizedFlags des Begünstigten Erlaubnisprüfung Flag Erforderlich Ergebnis
0x3 See Map 0x3 Erlaubt.
0x3 Modify Map 0x5 Abgelehnt: der Teil 0x4 vermisst.
0x43 See Map 0x3 Erlaubt.
0x43 Edit All 0x40 Erlaubt.
0x43 Modify Map 0x5 Abgelehnt: der Teil 0x4 vermisst.

4.3 Einzel- und Zusammengesetzte Flaggen

Nicht alle Katalogwerte sind unabhängige Zweierpotens. Mehrere Berechtigungen verwenden eine zusammengesetzte Maske, die ein Lesepad enthält:

  • 3, oder 1 | 2 ;
  • 5, oder 1 | 4 ;
  • 11, oder 1 | 2 | 8 ;
  • 19, oder 1 | 2 | 16 ;
  • 35, oder 1 | 2 | 32.

Somit wird die Genehmigung See Map mit der Maske 3 außerdem erlaubt die Read Map mit der Maske 1. Andererseits, Modify Map mit der Maske 5 schließt das nicht mit 2 von See Map.

Beispiel

Wie man dieses Bild liest

Eine Binärzahl wird nur mit geschrieben 0 und 1 :

  • 0 Das bedeutet, dass die Kapazität der Spalte deaktiviert ist.
  • 1 bedeutet, dass die Kapazität der Spalte aktiviert ist.

Von rechts aus ist jede Spalte doppelt so viel wert wie die vorherige:

Binäre Position 128 64 32 16 8 4 2 1
Wert, wenn das Bit aktiv ist 128 64 32 16 8 4 2 1

Um den Dezimalwert zu ermitteln, addiert man einfach die Spalten, die enthalten 1.

Detailliertes Beispiel: warum 35 ist es wert 100011

Die Zahl 35 Aktiviert Spalten 32, 2 und 1 :

Spaltenwert 128 64 32 16 8 4 2 1
Ein bisschen 35 0 0 1 0 0 0 1 1

Wir erhalten daher:

35 = 32 + 2 + 1
35 = 00100011 en binaire

Die gleiche Berechnung kann als einfache Assemblierung von Flaggen mit dem Operator präsentiert werden | :

32  = 00100000
 2  = 00000010
 1  = 00000001
----------------  OU binaire
35  = 00100011

Der Operator | daher bleibt jedes aktive Bit erhalten. Es verkettet keine Zahlen: Es erstellt eine Maske, die alle ausgewählten Kapazitäten enthält.

Die anderen Zeilen lesen

Dezimal Zerlegung 8-Bit-Binärschreib
3 2 + 1 00000011
5 4 + 1 00000101
11 8 + 2 + 1 00001011
19 16 + 2 + 1 00010011
35 32 + 2 + 1 00100011

Zum Beispiel Testberechtigung 35 ist dasselbe wie zu überprüfen, dass die Rechte die Bits enthalten 32, 2 und 1 :

(droits & 35) == 35

Wenn nur eines dieser drei Bits fehlt, gilt die 35 wird nicht gewährt.

Die Werte 32, 2 und 1 entsprechen drei Berechtigungen, also aktiviert 35 sie alle.

Einige Berechtigungen, die standardmäßig in Immersive enthalten sind, decken alle geringgewichtigen Teile ab, die benötigt werden, um alle Berechtigungen zu targeten.

Maske Wert Gebräuchliche Verwendung
0xF 15 Workspace, Folder und SupervisionScope. Es deckt die vier geringgewichtigen Teile ab.
0xFFFFFF 16777215 Karte, WorldView und Ausrüstung. Es umfasst die vierundzwanzig leichtgewichtigen Teile.

FullControl kein spezielles Engine-Schlüsselwort ist. Es handelt sich um eine gewöhnliche Berechtigung, deren Maske die vorgesehenen Fähigkeiten für den Typ enthält. Wenn eine zukünftige Berechtigung ein Bit außerhalb der Maske verwendet FullControl, wird es nicht automatisch einbezogen.

5. AuthorizedFlags, DeniedFlags und Vorrang der Ablehnung

5.1 Inhalt einer Right

A Right Verbindet einen Begünstigten mit einem Ziel:

Eigentum Bedeutung
DomainSecurityObjectIdentifier Benutzer- oder Begünstigtengruppe.
SecurizedObjectIdentifier Die Kennung der geschützten Instanz.
SecurizedObjectType Die Art der geschützten Instanz.
AuthorizedFlags Maske der gewährten Fähigkeiten.
DeniedFlags Verbirgt ausdrücklich verweigerte Fähigkeiten.

Mehrere Berechtigungen werden zu einem einzigen Recht mit dem Betreiber zusammengefasst |.

right.AuthorizedFlags = existingAuthorizedFlags | permission.Flag;
right.DeniedFlags = existingDeniedFlags | deniedFlag;

Ein fehlender Wert wird behandelt als 0.

5.2 Rolle von DeniedFlag

Um eine Ablehnung zu testen, verwendet der Server:

int deniedFlag = permission.DeniedFlag ?? permission.Flag;
bool denied = (deniedFlags & deniedFlag) == deniedFlag;

Auf Karten haben zusammengesetzte Berechtigungen typischerweise ein DeniedFlag elementar. Zum Beispiel Modify Map Anwendung Flag = 5, oder die 1 + 4, lehnt aber ab mit DeniedFlag = 4. Das gemeinsame Lesebit muss daher nicht in der Deny-Maske wiederholt werden.

5.3 Entscheidungsanordnung

Die zentrale Berechnung folgt folgender Reihenfolge:

  1. Cerebrate ist ohne weitere Berechnung erlaubt.
  2. Der Server löst das Ziel anhand seiner ID und seines Typs auf.
  3. Es sucht nach einer Ablehnung, die direkt auf den Nutzer oder eine seiner Gruppen zutrifft.
  4. Wenn eine Ablehnung gefunden wird, ist das Ergebnis sofort abgelehnt.
  5. Ohne Ablehnung sucht er eine direkte Genehmigung oder eine von einer Gruppe geerbte Genehmigung.
  6. Eine aktive interne Freigabe kann Berechtigungen hinzufügen, aber niemals eine explizite Ablehnung umgehen.
  7. Ohne Genehmigung explizit, das Ergebnis ist Standardmäßig abgelehnt.

Die Verwaltung verhindert außerdem, dass eine gleichzeitig erlaubte und verweigerte Berechtigung in derselben Mutation gespeichert wird. Negative Flags und unbekannte Bits für den Objekttyp werden abgelehnt.

6. Direkte Rechte, Gruppen, automatische Rechte und Teilen

6.1 Direktes Recht

Die DomainSecurityObjectIdentifier von einem Right kann direkt einen Nutzer benennen. Das Recht kommt dann nur diesem Nutzer zugute.

6.2 Gruppenanspruch

Die DomainSecurityObjectIdentifier von einem Right kann auch eine Gruppe sein. Das Sicherheitssystem durchläuft Mitgliedschaften rekursiv: Ein Nutzer, der Mitglied einer Gruppe und einer anderen Gruppe ist, erbt die Rechte der Elterngruppe. Zuvor besuchte Zugangsdaten werden gespeichert, um eine Endlosschleife im Zusammensein eines Gruppenzyklus zu vermeiden.

6.3 Automatischer Anspruch

Eine automatische Rechtsregel stellt keinen zweiten Autorisierungsmechanismus dar. Wenn ein Objekt erstellt oder regularisiert wird, löst es seinen Begünstigten auf und erstellt oder vervollständigt dann ein Right gewöhnlich.

Die derzeit in den ausgezeichneten Namen angegebenen Variablen sind:

  • {CurrentUserDistinguishedName} ;
  • {SubDomainName} ;
  • {SubDomainDistinguishedName}.

Eine Autorisierungsregel fügt die folgende hinzu Flag seiner Erlaubnis zu AuthorizedFlags. Eine Ablehnungsregel fügt seine DeniedFlag, oder seine Flag Falls das nicht möglich ist, DeniedFlags.

6.4 Interne Freigabe

Eine Freigabe an einen internen Benutzer oder eine Gruppe kann die von ihm übertragenen Flags in die zentrale Berechnung übertragen, wenn sie aktiv ist, nicht widerrufen, gestartet und nicht abgelaufen ist.

Teilen erlaubt nicht:

  • eine ausdrückliche Weigerung zu umgehen;
  • wiederum die Rechte des Objekts zu verwalten;
  • um eine Maske einzuführen, die im Katalog des Typs nicht existiert.

Externe Sharing-Links nehmen nicht an der Autorisierungsberechnung eines authentifizierten Benutzers teil.

7. Grundlegende Geschäftsberechtigungen

Dieser Abschnitt beschreibt die Berechtigungen, die bei Installationsmigrationen erhalten bleiben. Die von einer Instanz präsentierten Labels können dann in geändert werden /Security/Configuration.

7.1 Karten — Map, Typ 15

Grundlegende Genehmigung Flagge erlaubt Weigerungsflagge Rolle
Read Map 1 / 0x1 1 Lies die Karteneigenschaften.
See Map 3 / 0x3 2 / 0x2 Sehen Sie sich den Inhalt der Karte an.
Modify Map 5 / 0x5 4 / 0x4 Bearbeite die Karteneigenschaften.
Edit Topography 11 / 0xB 8 / 0x8 Ändere die Topographie.
Edit Points of interest 19 / 0x13 16 / 0x10 Verwalten Sie interessante Punkte.
Edit equipments 35 / 0x23 32 / 0x20 Verwalte die Ausrüstung, die auf der Karte platziert ist.
Edit All 64 / 0x40 64 / 0x40 Verwalten Sie global die Inhalte, die mit der Karte verbunden sind.
Full control on map 16777215 / 0xFFFFFF Gleiche Maske Volle Kontrolle über die Fähigkeiten in den ersten vierundzwanzig Bits.

7.2 Weltanschauungen — WorldView, Typ 25

Grundlegende Genehmigung Flagge erlaubt Weigerungsflagge Rolle
Read WorldView 1 / 0x1 1 Lesen Sie die Eigenschaften der Weltanschauung.
See WorldView 3 / 0x3 2 / 0x2 Sehen Sie sich den Inhalt der Weltanschauung an.
Modify WorldView 5 / 0x5 4 / 0x4 Bearbeiten Sie seine Eigenschaften.
Edit WorldView 11 / 0xB 8 / 0x8 Bearbeiten Sie die Inhalte, die mit der Weltanschauung verbunden sind.
Full control on WorldView 16777215 / 0xFFFFFF Gleiche Maske Totale Kontrolle.

7.3 Ausrüstung — Equipment, Typ 18

Grundlegende Genehmigung Flagge erlaubt Weigerungsflagge Rolle
Read Equipment 1 / 0x1 1 Lesen Sie die Eigenschaften der Ausrüstung.
See Equipment instances 3 / 0x3 2 / 0x2 Sehen Sie sich die Exemplare der Ausrüstung an.
Modify Equipment 5 / 0x5 4 / 0x4 Bearbeiten Sie die Eigenschaften der Ausrüstung.
Edit Equipment instances 11 / 0xB 8 / 0x8 Instanzen modifizieren.
ControlInstanceHandles 19 / 0x13 16 / 0x10 Ändere die Werte der Instanz-Handles.
Full control on Equipment 16777215 / 0xFFFFFF Gleiche Maske Totale Kontrolle.

7.4 Arbeitsbereiche — Workspace, Typ 37

Grundlegende Genehmigung Flagge erlaubt Weigerungsflagge Rolle
See Workspace 1 / 0x1 Gleiche Maske Machen Sie den Arbeitsbereich sichtbar.
Read Workspace 3 / 0x3 Gleiche Maske Lesen Sie den Arbeitsbereich.
Modify Workspace 5 / 0x5 Gleiche Maske Bearbeite den Arbeitsbereich.
Execute Workspace 11 / 0xB Gleiche Maske Führe den Arbeitsplatz aus.
Full control on Workspace 15 / 0xF Gleiche Maske Volle Kontrolle über den Arbeitsplatz.

7.5 Rekorde — Folder, Typ 38

Grundlegende Genehmigung Flagge erlaubt Weigerungsflagge Rolle
See folder 1 / 0x1 Gleiche Maske Siehe das Dossier.
See folder content 3 / 0x3 Gleiche Maske Konsultieren Sie den Inhalt.
Modify folder 5 / 0x5 Gleiche Maske Ändere den Ordnernamen und die Eigenschaften.
Modify folder content 11 / 0xB Gleiche Maske Fügen Sie den Inhalt hinzu oder bearbeiten Sie.
Full control on folder 15 / 0xF Gleiche Maske Lesen, bearbeiten, füllen und den Ordner löschen.

7.6 Aufsichtsbereiche — SupervisionScope, Typ 48

Grundlegende Genehmigung Flagge erlaubt Weigerungsflagge Rolle
See supervision scope 1 / 0x1 Gleiche Maske Siehe den Umfang der Aufsicht.
Read supervision scope 3 / 0x3 Gleiche Maske Lies den Inhalt.
Modify supervision scope 7 / 0x7 Gleiche Maske Ändere den Umfang.
Oversee supervision scope 11 / 0xB Gleiche Maske Überwachen Sie die am Teleskop befestigten Elemente.
Full control on supervision scope 15 / 0xF Gleiche Maske Totale Kontrolle.

7.7 OrganizationalUnit, Typ 12

Genehmigung Flagge Vom Samen beschriebene Rolle
Read 1 Lesen Sie Immobilien und Mitglieder.
Modify 3 Bearbeiten Sie Eigenschaften oder Metadaten.
Manage 5 Mitglieder hinzufügen oder entfernen.
FullControl 16777215 / 0xFFFFFF Totale Kontrolle.

8. Vollständiges Beispiel der Berechnung

Betrachten wir die Abbildung Identifier = 42, also das Ziel (42, Map).

  • Die Gruppe MapEditors hat AuthorizedFlags = 0x5 : seine Mitglieder haben Read Map und Modify Map.
  • Die Gruppe MapViewers hat AuthorizedFlags = 0x3 : seine Mitglieder haben Read Map und See Map.
  • Die Gruppe RestrictedMaps hat DeniedFlags = 0x4 : seine Mitglieder werden abgelehnt Modify Map, dessen DeniedFlag ist es wert 4.
  • Alice gehört allen drei Gruppen an.

Ergebnis:

Erlaubnisprüfung Ergebnis Erklärung
Read Map Erlaubt Gruppen MapEditors und MapViewers die erforderliche Flagge enthalten 1.
See Map Erlaubt MapViewers enthält die autorisierte Maske 3 und keine Ablehnungen 2 trifft nicht zu.
Modify Map Abgelehnt MapEditors erlaubt Masken 5, aber RestrictedMaps Lehnt das Biss ab 4. Weigerung hat Vorrang.
Edit Topography Standardmäßig abgelehnt Keine geltende Abgabe enthält die genehmigte Maske 11.

9. Regeln zum Erinnern

  • A Permission beschreibt eine Handlung; a Right gewährt oder lehnt es bei einem Ziel ab.
  • A SecurizedObject wird durch das Typ- und Identifikationspaar identifiziert.
  • Flaggen können kombiniert werden mit | und sich selbst testen mit &.
  • Eine zusammengesetzte Genehmigung erfordert alle Schallstücke Flag.
  • DeniedFlag Es kann anders sein als Flag um den Teil zu isolieren, der tatsächlich verweigert wird.
  • Jegliche direkte oder vererbte Verweigerung bringt Vorteile gegenüber Erlaubnissen.
  • Ohne entsprechende Genehmigung wird der Zugang verweigert.
  • Verschachtelte Gruppen übertragen Rechte.
  • Automatische Abgaben erzeugen Right Gewöhnliche.
  • Eine interne Freigabe kann Zugang hinzufügen, aber niemals eine Deny überschreiben.
  • Die Maske einer bestehenden Genehmigung darf nach der Nutzung nicht geändert werden.