Hallo,
Ich habe hier und da einiges zum Thema 'Security' der CV im Forum gefunden, allerdings scheint das meiste relativ alt zu sein, und es wurden immer wieder auf schnelle, gepfuschte Loesungen zurueckgegriffen. Ich muss gestehen, zur Zeit nutze ich selber folgende Aufstellung:
- OpenHAB als backend, wobei nur der localhost zugriff auf Jetty hat
- Apache2 als Webserver der fuer Clients zugaenglich ist und /rest, /visu usw per mod_proxy zur Verfuegung stellt
- Diese Verzeichnisse werden vom Webserver geschuetzt und Benutzer werden ueber LDAP (Active Directory) authentifiziert (mitgleid einer bestimmten Gruppe)
- Clients werden erst mal auf eine CGI umgeleitet der den SAMAccountName ausliest, und browser zur entsprechenden Konfiguration weiterleitet (/visu/?config=meinaccount)
So kann ich eine Konfiguration fuer jeden Anwender anlegen. Nun koennte man die LDAP Authentifizierung von Apache2 auch fuer jede einzelne XML Konfigurationsdatei einrichten (also auch ausschliessen das User1 trotzdem ?config=User2 in der Adresszeile eingeben kann). Wie ChrisM bereits gesagt hat, gibt es immer Sicherheitsprobleme: wer Zugriff auf den KNX Bus hat, kann Telegramme senden wie er (oder sie) moechte, und die REST API von OpenHAB kann ich auch nicht 'trennen und sichern'. Zugriff ist entweder vorhanden oder nicht vorhanden (OK, es gibt sehr teuere Telegrammfilter fuer KNX, und auf TCP Ebene koennte man auch filtern aber...).
Vordem ich jetzt aber versuche das Rad neu zu erfinden, moechte ich gerne wissen was hier erwuenscht/sinnvoll waere. Ich denke an einer relativ einfachen ACL, mit Gruppen und darin Benutzer. In der visu_config.xml sollte man dann pro Widget/Schalter/usw ein Attribut wie
definieren koennen. Allerdings sollte man vielleicht auch bestimmen koennen ob ein Schalter read-only oder read-write Zugriff haben sollte (pro Gruppe). Beispiel: die Kinder duerfen ruhig sehen ob das Licht im Garten an ist, sollten es aber nicht stundenlang an und aus schalten koennen. Vielleicht waere ein eigenstaendiger XML Tag da besser;
Benutzer und Gruppen sollten erst mal in einer XML Datei konfiguriert werden, spaeter koennte man immer noch nach externe Authentifizierung gucken (fuer mich waere LDAP/AD natuerlich wichtig).
Hat jemand vielleicht schon mal so was angefangen, oder hat jemand Ideen dazu?
PelliX
Ich habe hier und da einiges zum Thema 'Security' der CV im Forum gefunden, allerdings scheint das meiste relativ alt zu sein, und es wurden immer wieder auf schnelle, gepfuschte Loesungen zurueckgegriffen. Ich muss gestehen, zur Zeit nutze ich selber folgende Aufstellung:
- OpenHAB als backend, wobei nur der localhost zugriff auf Jetty hat
- Apache2 als Webserver der fuer Clients zugaenglich ist und /rest, /visu usw per mod_proxy zur Verfuegung stellt
- Diese Verzeichnisse werden vom Webserver geschuetzt und Benutzer werden ueber LDAP (Active Directory) authentifiziert (mitgleid einer bestimmten Gruppe)
- Clients werden erst mal auf eine CGI umgeleitet der den SAMAccountName ausliest, und browser zur entsprechenden Konfiguration weiterleitet (/visu/?config=meinaccount)
So kann ich eine Konfiguration fuer jeden Anwender anlegen. Nun koennte man die LDAP Authentifizierung von Apache2 auch fuer jede einzelne XML Konfigurationsdatei einrichten (also auch ausschliessen das User1 trotzdem ?config=User2 in der Adresszeile eingeben kann). Wie ChrisM bereits gesagt hat, gibt es immer Sicherheitsprobleme: wer Zugriff auf den KNX Bus hat, kann Telegramme senden wie er (oder sie) moechte, und die REST API von OpenHAB kann ich auch nicht 'trennen und sichern'. Zugriff ist entweder vorhanden oder nicht vorhanden (OK, es gibt sehr teuere Telegrammfilter fuer KNX, und auf TCP Ebene koennte man auch filtern aber...).
Vordem ich jetzt aber versuche das Rad neu zu erfinden, moechte ich gerne wissen was hier erwuenscht/sinnvoll waere. Ich denke an einer relativ einfachen ACL, mit Gruppen und darin Benutzer. In der visu_config.xml sollte man dann pro Widget/Schalter/usw ein Attribut wie
Code:
<.... acl="Eltern,Kinder" .../>
Code:
<security aclread="Eltern,Kinder,Besucher" aclwrite="Eltern">
Hat jemand vielleicht schon mal so was angefangen, oder hat jemand Ideen dazu?
PelliX
Kommentar