Haal jou Terraform-toestand van die publieke internet af (sonder om 'n VPN op te stel)
Jou Terraform-toestandlêer is die enkele mees sensitiewe artefak in jou wolk. Dit is 'n volledige kaart van elke hulpbron wat jy laat loop, en afhangende van jou providers hou dit ook geheime in gewone teks: verbindingstringe, gegenereerde wagwoorde, sleutels. By verstek leef daardie lêer in 'n wolk-bergingsrekening met 'n publieke eindpunt, vasgemaak met niks meer as 'n toegangsleutel nie. As daardie sleutel uitlek, hoef die aanvaller nie jou infrastruktuur op te som nie. Jy het vir hulle die diagram aangegee.
Ons verkoop verifikasie. 'n Verifikasieverskaffer wat die sleutels tot sy eie koninkryk op die oop internet laat lê, het geen reg om joune te hou nie. Daarom het ons produksie-toestandrekening glad geen publieke oppervlak nie. Om daar te kom het drie strikke, en ons het by elkeen se vorm ingeloop voordat ons dit reg gekry het.
Strik een: die hoender en die eier
Afgeleë toestand het 'n backend nodig wat reeds bestaan voordat Terraform kan loop. Maar die backend is self infrastruktuur, en jy wil hê Terraform moet dit bestuur. Jy kan nie die bergingsrekening gebruik om die toestand te stoor van die bergingsrekening wat nog nie bestaan nie.
Die uitweg is 'n doelbewuste tweefase-bootstrap. Fase een loop met plaaslike toestand en skep presies die fondament: die toestand-bergingsrekening, die netwerk waarin dit sal leef, en die toegangspad. Fase twee skakel die backend-blok van plaaslik na afgeleë om en migreer die nou-bestaande toestandlêer op in die rekening wat dit pas geskep het. Van daardie punt af bestuur daardie bootstrap-laag homself afgeleë soos alles anders. Dit is 'n paar minute waarin dit voel of jy op 'n leer staan wat jy steeds besig is om te bou, en dan is dit vir altyd klaar.
Strik twee: die bereikprobleem, en die VPN-gateway-belasting
Om die rekening privaat te maak is een reël: skakel publieke netwerktoegang af en plaas 'n privaat eindpunt voor dit. Nou is die bergingsrekening net van binne jou virtuele netwerk bereikbaar. Wat presies die probleem is, want die ding wat dit die meeste moet bereik, jou CI-pyplyn, is nie binne jou virtuele netwerk nie. Jy ook nie.
Die handboek-antwoord is om 'n verskaffer-VPN op te stel. 'n Bestuurde VPN-gateway, of 'n bastion-gasheer, of point-to-site met kliëntsertifikate. Enigeen wat dit al gedoen het, ken die belasting: die gateway is duur en stadig om te voorsien, point-to-site beteken die skep en roteer van kliëntsertifikate, elke nuwe operateur is 'n opstelritueel, en 'n bastion is nog een boks om te lap en voor te betaal. Dit is 'n klomp staande infrastruktuur waarvan die hele taak is om "vertroude mense 'n privaat ding te laat bereik".
Ons het dit alles oorgeslaan. In plaas van 'n VPN-gateway loop 'n klein zero-trust-koppelaar as 'n houer binne die VNet, die kategorie wat Tailscale, Twingate en Cloudflare Access beklee. Dit sluit by 'n identiteitsbewuste maas aan. Gemagtigde mense en die CI-pyplyn bereik die privaat eindpunt deur daardie maas, per identiteit geverifieer, met toegang afgebaken tot presies die een hulpbron wat dit nodig het. Geen gateway, geen publieke IP, geen sertifikate om te roteer, geen jump box nie. CI bring sy verbinding op vir die duur van 'n lopie en breek dit daarna af. Die bereikprobleem verdwyn sonder die rekening vir staande infrastruktuur.
Strik drie: die afsluiting wat jy nie in een stap kan doen nie
Die voor die hand liggende instink is om die rekening van die begin af privaat te verklaar, in dieselfde Terraform-apply wat dit skep. Doen dit en jy sny die koord voordat die privaat pad bestaan: die apply moet toestand deur die publieke eindpunt skryf, die privaat eindpunt en DNS is nog nie gekoppel nie, en jy sluit Terraform, en jouself, uit die presiese rekening wat jy besig is om te skep. Ons het hierdeur geredeneer voordat ons dit afgetrap het, wat die een keer is dat die droë lopie in jou kop leef in plaas van die terminaal.
Daarom is die afsluiting 'n doelbewuste aparte stap, wat eers uitgevoer word nadat die netwerk, die privaat eindpunt en die koppelaar almal op en bewys is. Een opdrag skakel publieke netwerktoegang na gedeaktiveer om. Die oomblik wat dit land, is die publieke eindpunt weg, word die ou IP-toelaatlys irrelevant omdat daar geen publieke oppervlak oor is om enigiets op toe te laat nie, en bereik elke toekomstige lopie toestand oor die maas. Ons het dit op die enigste manier wat tel geverifieer: deur na te gaan dat die rekening nou vanaf die privaat pad antwoord en die publieke een weier.
Die ander helfte: geen wagwoord om te steel nie
Om die publieke eindpunt dood te maak verwyder die netwerkdeur. Die passende stap is om seker te maak daar is ook geen staande sleutel daaragter nie. Ons pyplyn hou geen wolk-geloofsbrief nie. Dit verifieer met workload identity federation: die CI-stelsel bied 'n kortlewende OIDC-token aan, die wolk vertrou daardie token vir een spesifieke repository, en gee toegang terug wat oor minute verval. Daar is geen service principal-geheim wat in 'n kluis wag om uit te lek nie, want daar is om mee te begin geen geheim nie.
Toestandtoegang volg dieselfde reël. Terraform lees en skryf die toestand-blob met 'n kortlewende directory-token wat aan daardie identiteit gekoppel is, nie die bergingsrekening se toegangsleutel nie. So die twee dinge wat 'n aanvaller die graagste wil hê, 'n manier in en 'n geloofsbrief om dit te gebruik, kom uit as 'n privaat-alleen eindpunt en 'n token wat reeds besig was om te verval terwyl hulle dit gelees het. Niks staties om te lig nie.
Hoekom die moeite doen
Toestandlêers lek gewoonlik nie omdat iemand enkripsie gebreek het nie. Hulle lek omdat die rekening publiek was, 'n sleutel in 'n log of 'n fork of 'n skootrekenaar beland het, en niks anders in die pad gestaan het nie. Om die publieke eindpunt weg te neem verwyder die hele klas van "die sleutel het gelek" uit die dreigingsmodel. Die sleutel word nutteloos sonder om ook op die maas te wees.
Dit is dieselfde beginsel waarop ons die produk bou: moenie sekuriteit agter moeite of vlak versper nie, doen dit net, want die alternatief is die ding waaroor jy om 2vm spyt is. Elke sekuriteitskenmerk wat ons aan kliënte lewer, SSO en SAML, SCIM, MFA, afgedwonge webhooks, oudituitvoer, is op elke plan aan, nie teruggehou vir 'n enterprise-opverkoop nie. Sien wat ingesluit is.