Tags:
create new tag
, view all tags

Print Service Provisorium

Ausgangslage

Zur Zeit läuft einmal täglich (03:00) der cronjob students_only_exchange.pl und schreibt im Active Directory (AD) eine Gruppe namens prepaid_users. Die Gruppe enthält zwei weitere Untergruppen:

  • Studenten_ohne_andere_ETH_Beziehung
  • Hoerer_ohne_andere_ETH_Beziehung

Die Probleme der jetzigen Lösung sind vielfältig:

  • Gruppengrösse skaliert nicht (Limitierung in der LDAP-Schnittstelle bei ca. 16000 Members)
  • PaperCut kann mit verschachtelten Gruppen (nested groups) nicht umgehen
  • zusätzlich zum Import von Usern muss ein weiterer Job laufen, welcher die erlaubten (unrestricted) Benutzer wieder eruiert: PrepaidPatch
  • Namensgebung sehr verwirrend: Prepay heisst das Micropayment-System der ETH. Es hat nichts mit der genannten AD-Gruppe prepaid_users zu tun
  • wie diese User ermittelt werden, ist sehr undurchsichtig (sozusagen opak)
  • es handelt sich unvernünftigerweise nicht um eine Positiv-Liste (wer darf) sondern um eine Negativ-Liste (wer darf nicht)
  • Ausnahmen können nicht behandelt werden

Lösungsansatz

  • die Gruppe im AD heisst neu ID-PrintService-RestrictedUsers
  • sie wird zwar nach wie vor von einem SQL Statement generiert
  • ein neues Attribut printServiceRestrictedUser wird im AD gepflegt und kann folgende Werte enthalten
    • add Restricted User kommt hinzu
    • del Restricted User wird entfernt
    • ok es handelt sich um einen restricted User
  • die SQL-Menge wird täglich neu in nethz ermittelt und die Differenzen ins AD geschrieben (add, del)
  • ein neuer Job im AD arbeitet dieses Attribut printServiceRestrictedUser ab und fügt diese User der Gruppe prepaid_users hinzu (add) oder entfernt sie von ihr (del)
  • wenn ein User erfolgreich hinzugefügt wurde, wird das Attribut in den Wert ok umgewandelt
  • wenn ein User erfolgreich entfernt wurde, wird das Attribut gelöscht
  • ein neuer Service PrintService ermöglicht es Admins, einzelne User auf «unrestricted» zu setzen

warum diese Lösung ein Provisorium ist

  • PaperCut bietet eine sehr gute direkte Schnittstelle
  • der Umweg über das AD ist fehleranfällig
  • und eigentlich völlig unnötig
  • Pflege der Gäste und anderer Ausnahmen über die sog. «middleware» ist konzeptionell falsch
  • Berechtigungen sind konzeptionell Teil von IAM (respektive nethz)
  • Billing hat ebenfalls viele Mängel
  • Zur Zeit besteht keine Unterscheidung verschiedener Konti (Freibetrag, Prepay, Postpay)

Detailarbeiten

  • DONE AD-Attribut umbenennen in printServiceRestrictedUser
  • TODO nethz Service PrintService, welcher die Ausnahmen definiert
  • DONE Stored Procedure create_ngroup_dest_diffs, welcher für eine gegebene GRID die neue Usermenge ermittelt und diese in eine Tabelle schreibt. Die Differenzen zum letzten Durchlauf (add, del) sind direkt ersichtlich
  • DONE regelmässig ausgeführter cronjob refresh_ngroups_sql.pl, welcher alle auf SQL-Statements basierenden Ngroups aktualisiert (läuft täglich 23:00)
  • DONE regelmässig ausgeführter cronjob ad_refresh_print_service_restricted_group.pl, welcher die Differenzen (add, del) mit der oben genannten Stored Procedure feststellt und diese ins AD-Attribut printServiceRestrictedUser der betroffenen User-Objekte schreibt (läuft täglich 23:30).
  • DONE regelmässig ausgeführtes Powershell-Skript (Scheduled Task auf Windows-Seite), welches aufgrund der Werte add oder del im Attribut printServiceRestrictedUser die neuen User zur Gruppe hinzufügt und die alten entfernt

-- SwenVermeul - 2015-04-02

Topic revision: r6 - 2015-06-25 - vermeul
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2017 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback