Rechte und Rechte für sichere Objekte
- Nicht definierter Typ
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
Operatorserhält autorisierte Flaggen0x13und Flaggen abgelehnt0x04Auf 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.
Der Cerebrate-Nutzer hat grundlegenden vollen Zugriff.
Eine Business-Klasse ist nicht automatisch gesichert. Man muss die Sicherheit ihres Typs aktivieren und deren Berechtigungen konfigurieren sowie die Rechte auf deren Instanzen erstellen oder anwenden.
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.
Registrierte Rechte speichern nicht die Identifikatorin jeder ausgewählten Berechtigung. Sie speichern nur numerische Masken. Das Ändern der Maske einer bestehenden Berechtigung würde rückwirkend die Bedeutung aller bereits registrierten Rechte ändern. Um eine Maske zu entwickeln, muss man eine neue Berechtigung erstellen, die Rechte migrieren und dann die alte Berechtigung entfernen, wenn keine Rechte sie mehr verwenden.
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, oder1 | 2;5, oder1 | 4;11, oder1 | 2 | 8;19, oder1 | 2 | 16;35, oder1 | 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 :
0Das bedeutet, dass die Kapazität der Spalte deaktiviert ist.1bedeutet, 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 |
Im Bild entspricht jedes farbige Feld einem 1. Ein graues Feld entspricht einem 0. Eine zusammengesetzte Berechtigung verlangt, dass auch alle farbigen Felder in den Benutzerberechtigungen aktiv sind.
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:
- Cerebrate ist ohne weitere Berechnung erlaubt.
- Der Server löst das Ziel anhand seiner ID und seines Typs auf.
- Es sucht nach einer Ablehnung, die direkt auf den Nutzer oder eine seiner Gruppen zutrifft.
- Wenn eine Ablehnung gefunden wird, ist das Ergebnis sofort abgelehnt.
- Ohne Ablehnung sucht er eine direkte Genehmigung oder eine von einer Gruppe geerbte Genehmigung.
- Eine aktive interne Freigabe kann Berechtigungen hinzufügen, aber niemals eine explizite Ablehnung umgehen.
- Ohne Genehmigung explizit, das Ergebnis ist Standardmäßig abgelehnt.
Eine von einer Gruppe übertragene Erlaubnis gleicht eine von einer anderen Gruppe vorgenommene Ablehnung nicht aus. Wenn der Benutzer beiden Gruppen angehört, gewinnt die Ablehnung.
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.
Die C-Konstanten # GraphicStream.Immersive.Business.Security.Permissions bietet bequeme Objekte für Controller. Die Datenbank bleibt jedoch die Quelle der Wahrheit für den Katalog, der in das Domain. Du solltest immer eine Berechtigung mit ihrem Objekttyp und ihrer Maske auswählen, nicht nur mit ihrer numerischen ID.
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
MapEditorshatAuthorizedFlags = 0x5: seine Mitglieder habenRead MapundModify Map. - Die Gruppe
MapViewershatAuthorizedFlags = 0x3: seine Mitglieder habenRead MapundSee Map. - Die Gruppe
RestrictedMapshatDeniedFlags = 0x4: seine Mitglieder werden abgelehntModify Map, dessenDeniedFlagist es wert4. - 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
Permissionbeschreibt eine Handlung; aRightgewährt oder lehnt es bei einem Ziel ab. - A
SecurizedObjectwird 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. DeniedFlagEs kann anders sein alsFlagum 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
RightGewö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.