Een Labo-Server, dräi Vertrauensrollen, eng Feelerdomän
En VPN-Agang, privat Servicer an CI-Aarbechten brauchen och op engem eenzegen Server getrennt Rechter. Trennt d'Rollen, isoléiert d'Netzwierker an erhaltert d'Konsol-Erhuelung.
Alles funktionéiert bis de Build-Runner deeselwechte Host-Socket brauch wéi de VPN-Gaascht, an da kann keen erklären firwat eng Aarbecht d'Schlëssele vum Gateway liese kann. Alles gouf op enger Maschinn installéiert well et gepasst huet, an all Gaascht krut breeden Zougrëff well dat de séierste Wee war fir et funktionéieren ze loossen. D'Resultat ass en Host deem seng Vertrauensgrenz de Stroumkabel ass. D'Rollen ze trennen ass manner Aarbecht wéi et kléngt, an et fänkt domat un, si ze nennen.
Dräi Rollen déi am Moment alles deelen
En VPN-Agang, eng Rei privat Servicer an e Build-Runner wëllen verschidde Saachen. Dee firsten brauch en ëffentlechen Port an en schmuelen Netzwierk op der privater Säit. Den zweeten brauch permanent Späicher an Uwendungsgeheimnisser. Den drëtten ausféiert Code deen een aneren geschriwwen huet.
Et ass just déi gläich Zougrëff fir all dräi, déi d'Symptom verwirrend mécht, well duerno kann all eenzeg vun hinnen déi aner beaflossen. Eng Build-Aarbecht déi de Socket vum Hypervisor erreecht ass eng Aarbecht déi de VPN kann ophalen. E Service-Gaascht mat enger Route an d'Verwaltungsnetzwierk kann d'Switch-Konfiguratioun änneren. D'Rechter sinn de Problem, an d'Prozesslëscht ass just d'Plaz wou et sech weist. D'Rollen als éischt ze nennen gëtt all Recht eng Plaz wou et liewen kann.
De Skizz hei drënner ass en Ausgangspunkt fir dës Opdeelung, keen Verspriechen vun héijer Disponibilitéit. Behandelt en als Hypothese ze verifizéieren, net als fäerdegen Design.
Trennt dräi Rollen, net dräi Prozesser
Dräi Gäscht op engem Host ginn dräi Rechter-Sätz an dräi Netzwierkspositiounen. Si ginn net dräi Feelerdomänen, an den Design sollt dat haart soen.
D'Opdeelung hëlleft nëmme wann eng Kompromittéierung an engem Gaascht den aneren net automatesch Rechter gëtt, an dat ass eng Hypervisor-Astellung, keng Nummkonventioun. Eng VM Gateway nennen hält keen anere Gaascht dovun of, den Host z'erreechen. Liest d'Konfiguratioun vum virtuelle Switch amplaz vum Hostnumm, a bestätegt dann datt all Gaascht do sëtzt wou Dir mengt.
host
├─ vpn-gw 10.60.10.2/24 public 51820/udp only
├─ services 10.60.0.10/24 no route to the management network
└─ ci-runner 10.60.20.2/24 outbound only, no host socket
Schreift d'Topologie op a verifizéiert se dann mat den Tools déi se besëtzen. E Gaascht deen op der falscher Bréck erschéngt ass eng Entdeckung, keen Detail. Korrigéiert den Netzwierk ier Dir eng Service-Konfiguratioun ännert.
Loosst de VPN-Gaascht nëmmen déi Dieren opmaachen déi hien huet
Publizéiert den Tunnel-Port um Router an näischt anescht. Gäscht-Verwaltungsports gehéieren op e Verwaltungswee, net op den Internet, an d'Interface vum Hypervisor selwer gehéiert och dohinner.
Den Netzwierk op der privater Säit soll d'Servicer erreechen déi Fernbenotzer brauchen an do ophalen. D'Uwendungsauthentifikatioun bleift un, well en Tunnel Transport ass an net en Login. Hält d'Routingtabell vum VPN-Gaascht kleng genuch fir se an engem Saz ze beschreiwen. Wann Dir se net esou einfach beschreiwe kënnt, ass d'Grenz schonn verschwommen.
virsh net-list --all
virsh net-dumpxml lab-private
sudo nft list ruleset | grep -n -E '51820|10.60'
Alles wat um Host lauschtert an net fir d'Verwaltung gebraucht gëtt, sollt guer net lauschteren. Dat ëmfaasst d'API vum Hypervisor, déi een einfach op enger ëffentlecher Interface oppe léisst.
Build-Aarbechten brauchen eng aner Aart Grenz
Eng CI-Aarbecht féiert Kommandoen aus déi de Repository kontrolléiert, also hänkt hir Vertrauen dovun of wien Code kann pushen. En Shell-Executer féiert déi Kommandoen als Benotzer vum Runner um Host aus, an dat ass déi breedst Grenz déi et gëtt.
Container-Executeren si méi schmuel, an e privilegiéierte Container ass net vun de schmuelen. Hält de Runner a sengem eegenen Gaascht mat sengem eegene Netzwierkberäich, a gitt him nëmmen deenen Artefakt- an Deployementszougrëff deen d'Aarbechte brauchen. Eemol benotzt Aarbechter reduzéieren de behalen Zoustand; si reduzéieren net d'Erreechbarkeet oder d'Expositioun vu Geheimnisser. Béides brauch nach ëmmer explizit Limiten.
De Service-Gaascht besëtzt d'Daten, also ass säi Backup-Plang dee dee muss funktionéieren. Hält d'Repositoryen, d'Uploaden an d'Datebank am selwechten Zäitplang. Test eng Restauratioun amplaz de Status vun der Aarbecht ze liesen.
Plangt fir de Feeler deen all dräi deelen
Een Host ass eng Feelerdomän. En Neistart hëlt den Tunnel an all privat Service am selwechte Moment ewech, an dat ass genau wéini en Wee eran am meeschte bedeit.
Hält Konsolzougrëff deen net vum VPN-Gaascht ofhänkt, sief et eng physesch Konsol, eng Out-of-Band-Verwaltungsinterface oder eng Provider-Konsol. En Snapshot deen op der selwechter Disk gespäichert ass ass keng onofhängeg Kopie, an engem Backup deen am Gaascht leeft deen e schützt och net. Test dann de kale Start als Sequenz an net als Checkliste: Host, virtuell Netzwierker, Tunnelswee an eng benannt Uwendung ënner engem normale Kont.
virsh list --all
systemctl is-active libvirtd
curl -sS -m 5 -o /dev/null -w '%{http_code}\n' https://10.60.0.10/
ss -ltnp | grep -E ':51820|:443'
D'Reiefolleg vum Prozessstart beweist näischt iwwer Routen an DNS, also test de Wee an net d'Zoustänn vun den Unitéiten. De Wee ass dat wat e Fernbenotzer wierklech brauch.