Jenkins hanterar många filer som potentiellt skapas av opålitliga användare, t.ex. filer i projektarbetsytor eller arkiverade artefakter. När ingen rotwebbadress till en resurs är definierad kommer Jenkins att hantera dessa filer med HTTP-huvudet Content-Security-Policy ("CSP"). Som standard är det konfigurerat till ett värde som inaktiverar många moderna webbfunktioner för att förhindra cross-site scripting (XSS) och andra attacker på Jenkins-användare som har åtkomst till dessa filer. Även om det specifika värdet för CSP-huvudet kan konfigureras av användare (och t.o.m. kan inaktiveras) är det en avvägning mellan säkerhet och funktionalitet.

Om rotwebbadressen till en resurs är definierad kommer Jenkins istället att omdirigera förfrågningar om användarskapade resursfiler till webbadresser som börjar med den webbadress som konfigurerats här. Dessa webbadresser kommer inte att konfigurera CSP-huvudet vilket gör att JavaScript och liknande funktioner fungerar. För att det här alternativet ska fungera som förväntat gäller följande begränsningar och överväganden:

När denna webbadress har konfigurerats ordentligt kommer Jenkins att omdirigera förfrågningar till arbetsytor, arkiverade artefakter och liknande samlingar av vanligtvis användargenererat innehåll till webbadresser som börjar med rotwebbadressen till en resurs. Istället för en sökväg som job/namn/ws kommer resurswebbadresser att innehålla en token som kodar sökvägen, användaren som webbadressen skapades för och när den skapades. Dessa resurswebbadreser får åtkomst till statiska filer som om användaren som de skapades för skulle komma åt dem: Om användarens behörighet att komma åt dessa filer tas bort kommer motsvarande resurswebbadress inte heller att fungera längre. Dessa webbadresser är tillgängliga för alla utan autentisering tills de löper ut, så att dela dessa webbadresser är som att dela filerna direkt.

Säkerhetsaspekter

Autentisering

Resurswebbadresser kräver inte autentisering (användare kommer inte att ha en giltig session för rotwebbadressen till en resurs). Att dela en resurswebbadress med en annan användare, även en som saknar övergripande behörighet eller läsbehörighet för Jenkins, kommer att bevilja åtkomst till dessa filer tills webbadresserna löper ut.

Utgångsdatum

Resurswebbadresser löper ut som standard efter 30 minuter. Utgångna resurswebbadresser omdirigerar användare till motsvarande Jenkins-webbadresser så att användaren kan vid behov autentisera och sedan omdirigeras tillbaka till en ny resurswebbadress som kommer att vara giltig i ytterligare 30 minuter. Detta kommer i allmänhet att vara transparent för användaren om de har en giltig Jenkins-session. Annars måste de autentisera sig igen med Jenkins. Men när man besöker sidor med HTML-frames, t.ex. Javadoc-webbplatser, kan inloggningsformuläret inte visas i en frame. I dessa fall kommer användare behöva ladda om den frame som är överst för att inloggningsformuläret ska visas.

Konfigurera systemegenskapen jenkins.security.ResourceDomainRootAction.validForMinutes till önskat värde i minuter för att ändra hur snabbt resurswebbadresser löper ut. Tidigare utgångstid kan göra det svårare att använda dessa webbadresser, medan senare utgångstid ökar sannolikheten för att obehöriga användare får åtkomst via webbadresser som delas med dem av behöriga användare.

Autenticitet

Resurswebbadresser kodar webbadressen, användaren som de skapades för och tidsstämpeln när de skapades. Dessutom innehåller denna sträng en HMAC för att säkerställa webbadressens autenticitet. Detta förhindrar angripare från att förfalska webbadresser som skulle ge dem åtkomst till resursfiler som om de vore en annan användare.