Mund të hapni Jenkins përmes VPN-së dhe njëkohësisht të shihni GitHub duke raportuar një webhook të dështuar, sepse këto janë dy lidhje të ndryshme me dy pronarë të ndryshëm. Shfletuesi udhëton në një tunel që laptopi juaj negocioi; shërbimi i dorëzimit të GitHub nis nga interneti publik dhe nuk ka rrugë drejt rrjetit privat. Qasja në depo nuk e ndryshon këtë, edhe pse vetë Jenkins mund të marrë nga e njëjta depo pa problem. Zgjidhni një pikë hyrëse, një rele ose sondazhin, më pas provoni rrugën që ngjarja ndjek në të vërtetë.

Një sesion shfletuesi provon vetëm një drejtim

Një lidhje VPN përgjigjet një pyetjeje: a mund të arrijë ky laptop te hosti i brendshëm. Dorëzimi i webhook-ut pyet diçka tjetër: a mund të hapë një shërbim i jashtëm një lidhje drejt atij hosti. Fakti që Jenkins merr nga një depo është trafik dalës dhe nuk thotë asgjë për arritshmërinë hyrëse. Mbani të dy drejtimet në rreshta të veçantë të diagramit, duke përfshirë cilën anë nis secili.

Lexoni regjistrin e dorëzimit përpara se të ndryshoni gjë. Një skadim kohe, një rivendosje lidhjeje dhe një kërkesë e pranuar që nuk përputhej me asnjë punë kanë tre pronarë të ndryshëm: rrjetin, proxy-n dhe konfigurimin e shkaktuesit.

Opsioni A: ekspozoni një pikë hyrëse të ngushtë

Nëse organizata tashmë publikon një hyrje të miratuar, ekspozoni rrugën e webhook-ut në vend të panelit. Zakonisht kjo nënkupton një rregull proxy të kundërt që pranon POST në URL-në e grep-it dhe ia përcillet Jenkins-it, ndërsa ndërfaqja administrative mbetet e paarritshme nga jashtë.

curl -sS -o /dev/null -w "%{http_code}\n" -X POST https://jenkins.example.com/github-webhook/

Kryeni atë provë nga një rrjet pa qasje VPN, sepse një sukses nga brenda tunelit nuk provon gjë. Pika hyrëse duhet të refuzojë kërkesat pa sekretin e përbashkët, të cilin GitHub e dërgon si titull nënshkrimi, dhe të pranojë vetëm atë rrugë dhe metodë të vetme që keni publikuar. Një konsolë publike e Jenkins nuk është rregullim i webhook-ut; është një incident që pret skanerin e radhës. Kufizoni rregullin mjaftueshëm sa pjesa tjetër e aplikacionit të mbajë kontrollet e qasjes që kishte.

Opsioni B: përmbysni drejtimin me një rele

Aty ku ekspozimi hyrës nuk do të miratohet, një klient i vogël brenda rrjetit mund të mbajë një lidhje dalëse drejt një releje dhe të marrë ngjarjet e përcjella. Releja bëhet atëherë pjesë e rrugës së dorëzimit, prandaj disponueshmëria dhe autentikimi i saj janë po aq të rëndësishme sa puna e ndërtimit.

ssh -N -R 9000:localhost:8080 relay.example.net

Udhëzimet e Jenkins për webhook-ët pas mureve të zjarrit përshkruajnë këtë formë, dhe ia vlen t'i lexoni përpara se të shkruani përcjellësin tuaj. Përfundoni TLS në rele, verifikoni nënshkrimin përpara se ngjarja të arrijë punën dhe monitoroni lidhjen dalëse, sepse një tunel i rënë duket saktësisht si një ngjarje që nuk u dërgua kurrë. Konfirmoni gjithashtu se releja ruan trupin e kërkesës bajt pas bajti, pasi kontrollet e nënshkrimit dështojnë në JSON që është analizuar dhe rikoduar rrugës.

Opsioni C: sondoni depon

Sondazhi shkëmben vonesën me thjeshtësinë dhe nuk ka nevojë fare për rrugë hyrëse. Jenkins mund të sondojë sipas një orari, ose një punë e vogël mund të pyesë API-n dhe të nisë një ndërtim kur sheh një rishikim të panjohur.

curl -sS -u "$USER:$TOKEN" "https://api.github.com/repos/OWNER/REPO/commits?per_page=1"

Çdo sondazh shpenzon thirrje API dhe shton një vonesë midis push dhe ndërtimit, e cila bëhet e dukshme në depo të zëna dhe kufij të përbashkët shpejtësie. Kërkon gjithashtu kredenciale të ruajtura kudo që ekzekutohet sondazhi, prandaj kufizoni tokenin vetëm në qasje leximi ndaj depos dhe rrotullojeni si çdo sekret tjetër. Zgjidhni këtë kur vëllimi i ngjarjeve është i ulët ose kur një pikë hyrëse nuk do të miratohet kurrë, dhe shkruajeni në përshkrimin e punës që askush më vonë të mos pyesë pse ndërtimet mbeten pas.

Pranoni një dorëzim të vërtetë, jo një ngarkim faqeje

Cilindo opsion që zgjidhët, testi i pranimit është një ngjarje e dërguar nga platforma burimore, jo një skedë shfletuesi e hapur nga një laptop i privilegjuar. Bëni push një commit bosh në një degë provë dhe lexoni kodin e përgjigjes së dorëzimit, regjistrin e relesë ose daljen e punës së sondazhit, në atë rend. Një 200 nga pika hyrëse pa ndërtim do të thotë që filtri i shkaktuesit është i gabuar; një skadim kohe do të thotë që rruga është ende e mbyllur. Shënoni cili nga tre modelet përdoret, përndryshe personi tjetër që do të korrigjojë do të përsërisë provën në shfletues dhe do të arrijë në të njëjtën rrugë pa krye.

Zbatojeni të njëjtin arsyetim te kthimet e pagesave dhe njoftimet e tjera të jashtme: secili ka nevojë për rrugën e vet drejt aplikacionit privat, edhe kur çdo njeri tashmë ka një sesion VPN. Rruga e dorëzimit i përket dizajnit të aplikacionit, jo një fusnote për rrjetet.

Artikuj të ngjashëm