Hvorfor en VPN ikke gør din udviklerforhåndsvisning sikker at dele
En VPN giver testere en rute til din prototype; den gør ikke forhåndsvisningen sikker. Afgræns publikum, kørselsmiljø, data og bivirkninger, før du deler den.
At sætte en prototype bag en VPN føles privat, så det eneste tilbageværende spørgsmål ser ud til at være, hvem der får profilen. Den antagelse fejler på en bestemt måde: en tunnel styrer, hvem der kan nå en vært, ikke hvad værten udstiller, når de først er der. Forhåndsvisningen kører stadig et runtime, holder data og kalder integrationer, der kan sende rigtig e-mail eller skrive til en rigtig database. Behandl VPN’en som hoveddøren, og design derefter rummet bag den.
En rute er ikke et publikum
At tilmelde en tester til VPN’en besvarer præcis ét spørgsmål: kan denne enhed nå adressen? Det siger intet om, hvilke sider, API’er eller konsoller enheden må bruge. Det er separate tilladelser, og en gateway, der kun kender adresser, kan ikke håndhæve dem.
Skriv forhåndsvisningens kontrakt som en kort liste: værtsnavn, lytter, tilladte handlinger og hvem der har hver rolle. Kontroller derefter, at listen svarer til det, der faktisk er udstillet.
En tester, der kan åbne prototypen, har ikke brug for udrulningskonsollen, databasens admin-side eller udviklerens hjemmemappe. Hvis gatewayen giver en undernetrute, er alt dette tilgængeligt som standard. Foretræk en rute pr. destination, eller sæt de ekstra tjenester bag deres egen godkendelse. Begge valg indsnævrer, hvad en stjålet profil kan gøre.
Det runtime, du deler, er en del af kontrakten
En udviklingsserver med debugger og automatisk genindlæsning er et værktøj til én person på én maskine. Frameworkdokumentation er direkte om det: Flask’s udrulningsguide siger, at dens udviklingsserver og debugger ikke er til produktion, og den regner private eller enkeltbruger-tjenester som produktion. Den samme ræsonnement gælder for ethvert framework med en genindlæser og en interaktiv fejlside. Bekvemmelighedsfunktioner er designet til at forkorte løkken mellem at gemme en fil og se en ændring, ikke til at møde en tester, du ikke kontrollerer.
En interaktiv stacktrace er en informationslækage og, i nogle debuggere, en overflade for kodekørsel. Hold den væk fra forhåndsvisningen, eller begræns forhåndsvisningen til et build, der ikke kan aktivere den. Hvis testere har brug for diagnostik, så giv dem logs i stedet for en konsol.
En lytter med jokertegn er den anden halvdel af denne fejl. Binding til alle netværksgrænseflader udstiller tjenesten på netværk, du ikke havde tænkt på, inklusive Wi-Fi’et på caféen.
Brug engangskonti og data uden rigtige bivirkninger
Brug konti oprettet til test og data, der ikke kan gøre nogen forlegne. Den farlige del er sjældent databaserækken; det er integrationen bag knappen. E-mail, betalinger, SMS, webhooks og fileksport når alle uden for forhåndsvisningen.
List hver udgående effekt, prototypen kan udløse, og peg derefter hver enkelt mod en sandkasse, eller slå den fra. En privat rute gør ikke et live betalingsendepunkt harmløst.
Produktionsoplysninger er det samme problem i en anden form. En forhåndsvisning, der arver produktions-API-nøglen for at spare opsætningstid, er et produktionssystem med en debug-UI. Opret afgrænsede legitimationsoplysninger med de mindste nyttige tilladelser. Roter dem, når forhåndsvisningen slutter, fordi en tilbagekaldt forhåndsvisning med levende nøgler stadig er levende.
Kontroller siden, aktiverne og soklen
En side, der renderer, er ikke en forhåndsvisning, der virker. HTML’en kan indlæses, mens en aktivvært, en API eller en WebSocket stadig peger på en URL, som testeren ikke kan nå. Hver af dem er en separat post i kontrakten.
Fra en godkendt enhed: anmod om siden og den største aktiv separat:
curl -sS -o /dev/null -w "%{http_code}" https://preview.staging.example/
curl -sS -o /dev/null -w "%{http_code}" https://preview.staging.example/assets/app.js
Kig derefter på browserkonsollen under en rigtig interaktion, og bekræft, at soklen til live-genindlæsning forbinder. Hvis ikke, er rettelsen en bevidst rute til det endepunkt, ikke en regel, der udvider sig, indtil siden ser komplet ud.
Nedlæg forhåndsvisningen på en dato, ikke på hukommelse
Giv forhåndsvisningen en ejer og en slutdato i det øjeblik, du opretter den. Når datoen kommer, skal du fjerne posten, testeridentiteterne og de midlertidige legitimationsoplysninger gennem den konfiguration, der ejer dem. En glemt forhåndsvisning er, hvordan en privat prototype bliver en permanent offentlig.
Verificér nedlægningen udefra: værtsnavnet bør holde op med at slå op eller holde op med at svare ikke-godkendte klienter.
Behold kilden og gendannelsesnoterne, men ikke fallbacken. Testen af en god forhåndsvisningsgrænse er kedelig: en godkendt enhed kan udføre de krævede handlinger, og en ikke-godkendt identitet kan ikke. Det samme skal gælde, efter tunnelen er slukket. Det resultat er mere værd end et VPN-ikon ved siden af en prototype, der kører med alle udviklingsfunktioner slået til.