Nameserver und Access Rights
Nameserver
Der GSI-eigene Nameserver soll den CORBA-Nameservice ersetzen. Folgende Punkte sind dabei besonders relevant:
- identische Funktionalität
- Verwaltung der CORBA-IORs (transient und persistent)
- Erweiterung um Mitverwaltung der Access Pattern
- Einfaches Entfernen von Geräten bei Aufruf des Destruktors am Programmende .
Client-Anfrage
Beim Aufruf der Funktion createDeviceReference(const char* nomen) wird in allen verfuegbaren Nameservices nachgesehen, ob das Geraet vorhanden ist. Wird ein Gerät im ersten Nameservice nicht gefunden, wird im nächsten Nameservice nachgesehen. Ist es dort vorhanden, wird die entsprechende Objektreferenz zurück geliefert. Diese enthält die IOR sowie das Access Pattern. Anderenfalls wird eine Exception geworfen und ein Fehler ausgegeben.
- startet ein Client eine Anfrage, wird ein Thread gestartet, in dem die Anfrage beantwortet wird.
- hier wird zunächst der "Kopf" des empfangenen Paketes ausgewertet. Anhand der Kodierung im angenommenen Paket wird entschieden, was zu tun ist.
- im Falle eines Serverkommando's wird das entsprechende ausgeführt (Informationen liefern, Rechte neu laden oder LogLevel ändern).
- des Weiteren kann man Geräte einfügen oder entfernen und die Rechte für einzelne Geräte oder Gruppen abfragen.
Implementierung
Mit Doxygen erzeugte Dokumentation:
http://www.acc.gsi.de/dav/documentation/nameserver/
Access Rights
Um im Beschleuniger-Kontrollsystem auf Geräte zugreifen zu können, muss dem jeweiligen Benutzer ein entsprechendes Zugriffsrecht eingeräumt worden sein. Zugriffsrechte werden Nutzern eingeräumt, basierend auf den jeweiligen Login-Namen.
Zugriffsrechte werden geräte-spezifisch vergeben. Zur Vereinfachung können Zugriffsrechte für Gerätegruppen (z.B. alle Geräte eines Gerätemodells) vergeben werden.
Zugriffsrechte sind nach Kritikalität gestuft:
READ |
Lese-Zugriffe, die den Gerätezustand nicht verändern. |
MODIFY |
Schreib-Zugriffe, die den Gerätezustand verändern |
LOCALSYSTEM |
Räumt dem Benutzer Systemrechte für Systemkomponenten ein, die die jeweiligen Geräte bedienen (z.B. für SEs) |
SYSTEM |
Zugriff auf Kontrollsystem-Eigenschaften |
ADMINISTRATOR |
Freier Zugriff auf alle Komponenten |
Jeder Property aller Geräte im Beschleuniger-Kontrollsytem ist eine der Kritikalitätsstufen READ, MODIFY, LOCALSYSTEM, SYSTEM, ADMINISTRATOR zugeordnet. Diese Einstufung gilt einheitlich für alle Geräte eines Gerätemodelles. Um auf eine Property zugreifen zu können, muss der Benutzer für das jeweilige Gerät mindestens das Zugriffsrecht für die Kritikalitätsstufe der Property haben.
Demgegenüber stehen die Zugriffsbeschränkungen der Properties, die ein bestimmtes Zugriffsrecht des Benutzers erfordern, damit dieser zugreifen kann.
FREE |
Keine Zugriffsbeschränkung |
DEVICE |
Der Benutzer braucht mindestens das Zugriffsrecht MODIFY, um auf die Property des Gerätes zugreifen zu können |
SYSTEM |
Der Benutzer braucht mindestens das Zugriffsrecht SYSTEM bzw. LOCALSYSTEM, um auf die Property des Gerätes zugreifen zu können |
CRITICAL |
Der Benutzer braucht das Zugriffsrecht ADMINISTRATOR, um auf die Property des Gerätes zugreifen zu können |
Zur Verdeutlichung von LOCALSYSTEM: Hat ein Benutzer dieses Zugriffsrecht z.B. für das Gerätemodell DGX, dann darf er auch auf die Property INIT aller SEs, die DGX-EQMs enthalten, zugreifen. Die INIT-Property des Gerätemodells EC hat die Zugriffsbeschränkung SYSTEM.
Weitergehende Informationen sind erhältlich zu
Zugriffsrechte im Kontrollsystem sowie zur
Spezifikation der Zugriffsrechte in der Rechte-Datei.