Das scheint eine offensichtliche Frage zu sein, aber ich habe hoch und niedrig geschaut und kann keine Antwort finden. Hier ist die Situation:
Das Problem ist, ich kann genau keine Informationen darüber finden, wie Sicherheit mit JNLP funktioniert. Wenn anonyme Leseberechtigungen erteilt werden, kann jeder auf der Welt slave.jar herunterladen und auf die (einfach zu erratenden) URLs auf meinem Server auf die jnlp-Datei zugreifen und sich als Slave verbinden.
Ich habe festgestellt, dass die jnlp-Datei blockiert ist, wenn ich alle anonymen Zugriffe zurückziehe, aber sklave.jar ist immer noch zugänglich.
Es scheint nichts besonders Sicheres in der jnlp-Datei zu geben, außer einer langen Hex-Zahl. Ist dieses Setup sicher oder muss ich etwas anderes tun?
Es wäre schön, wenn die Besucher die letzten Builds sehen könnten, ohne sich einzuloggen, aber wenn ich Leseberechtigungen für anonyme Benutzer bewillige, kann jeder auf die jnlp-Datei zugreifen.
Wenn anonyme Leseberechtigungen erteilt werden, kann jeder auf der Welt slave.jar herunterladen und auf die (einfach zu erratenden) URLs auf meinem Server auf die jnlp-Datei zugreifen und sich als Slave verbinden.
Es stellt sich heraus, dass dies eine kritische Sicherheitslücke in Jenkins war:
Als Antwort auf meine Frage scheint der beste Ansatz darin zu bestehen, den gesamten anonymen Lesezugriff zu deaktivieren.
Aus den Kommentaren zu diesem jenkins-Fehler scheint dieses Verhalten (das erlaubt jedem mit Leseberechtigungen) siehe die jnlp-Datei) wurde im Zuge der Korrektur der Sicherheitslücke
Ich konnte auch keine Dokumentation über das aktuelle Verhalten finden, aber es ist möglich, einige Hinweise durch
zu erhaltenSchritt 2. wird eine Antwort "403 verboten" geben, die etwas wie
enthält %Vor%Die Antwort enthält auch eine JavaScript-Umleitung, daher müssen Sie wget oder eine andere nicht Javascript-fähige Methode verwenden, um sie sehen zu können.
Nach Versuch und Irrtum habe ich festgestellt, dass "hudson.model.Computer.Connect" anscheinend der Berechtigung "Slave Connect" in der Jenkins-Benutzeroberfläche zugeordnet ist.