Hvilken adresse en cloud-firewall ser, når din VPN er tændt
En fuld tunnel ændrer den kildeadresse, din database ser. Flyt tilladelseslisten, den private vej eller den delte tunnel, ikke legitimationsoplysningerne.
En database, der virker før VPN forbinder og fejler bagefter, er sjældent et legitimationsproblem. Cloud-firewalls matcher kildeadresser, og en fuld tunnel erstatter den, de matchede. Forskellen mellem det, du tror din bærbare sender, og det, serveren modtager, er hele fejlen, og den kan måles i ét trin.
Hvad kildeadressen bliver til
I en fuld tunnel forlader hver pakke netværket gennem VPN-gatewayen, så serveren ser gatewayens udgående adresse i stedet for din hjemmeforbindelse. Hvis en forward-proxy sidder på vejen, er det dens adresse, der ankommer. Begge er legitime kilder, og ingen af dem er adressen i din oprindelige regel.
Azure SQL's firewallregler på server- og databaseniveau matcher den klientadresse, der når den logiske server, som efter en fuld tunnel er den udgående adresse. En AWS-sikkerhedsgruppe, der tillader én adresse, opfører sig på samme måde. Pakken droppes før godkendelse, så den fejl, du får, ligner en netværksfejl snarere end et tilladelsesproblem. Det er præcis derfor, folk begynder at nulstille adgangskoder.
Hvor tilladelseslisten afgøres
Læs den regel, der matcher den fejlende vej, ikke den regel, du husker at have oprettet. Noter dens omfang, dens port, dens protokol og om den vurderes før nogen identitetskontrol.
Beslut derefter, hvilket lag der legitimt ejer beslutningen. En adresseregel svarer på, hvor trafikken kommer fra. Et privat endepunkt svarer på, om tjenesten overhovedet kan nås via en privat vej. En undtagelse for delt tunnel svarer på, hvilke destinationer der omgår tunnelen. De er ikke udskiftelige, og hver især fejler forskelligt, når tunnelen ændres.
Tre reparationer, tre lag
Hver mulighed nedenfor retter flowet af en anden grund, og vælger man den forkerte, får man en forbindelse, der virker indtil næste gatewayændring.
| Repair | Layer it changes | What it does not fix |
|---|---|---|
| Add the egress address to the rule | Source address matching | Nothing about routing, and it breaks when the egress moves |
| Use a private endpoint | Whether the service is reached privately | A client that still resolves the public name |
| Add a split-tunnel exception | Which flows bypass the tunnel | An expired credential or a wrong password |
At tilføje den udgående adresse er den mindste ændring og den skrøbeligste, fordi en ny gateway eller en anden region ugyldiggør den lydløst. Dokumentér adressen ved siden af tunneldefinitionen, så de to flytter sammen. Et midlertidigt bredt interval er en diagnostik, ikke en reparation; at lade det blive stående er måden, hvorpå interne tjenester ender med at være eksponeret.
Hvorfor en administreret platform ikke kan tilslutte sig tunnelen
Applikationsplatforme som Heroku, AppHarbor eller CloudBees kører din kode i et miljø uden tun- eller tap-enhed og uden rettigheder til at oprette en. Deres indgående model er HTTP og ikke en vilkårlig lyttende socket. En buildpack, der leverer en VPN-binær, har stadig intet sted at placere interfacet. De brugbare mønstre er en statisk udgående adresse, databasen kan tillade, et privat forbindelsesprodukt, platformen tilbyder, eller en proxy i en DMZ, der nås over HTTPS.
Den proxy er en adgangsvej med sin egen godkendelse og logning. Det gør ikke platformen til medlem af din VPN, og at beskrive det sådan skaber regler, ingen kan revidere.
Kontrollér fra den klient, der fejlede
Genopret forbindelsen, og gentag klientens nøjagtige vej. Kontrollér den kildeadresse, tjenesten logger, den rute, klienten vælger til databasenavnet, og resultatet af den faktiske forespørgsel, i den rækkefølge. En test fra gatewayen beviser, at gatewayen virker, hvilket aldrig var i tvivl. Hvis forbindelsen nu godkendes, og forespørgslen stadig fejler, er det resterende problem databasetilladelse.
Gennemgå disse regler, hver gang tunnelen ændres. En udskiftet gateway eller et nyt udgående interval bryder vejen uden nogen ændring i applikationens konfiguration overhovedet.