O bază de date care funcționează înainte de conectarea VPN-ului și eșuează după aceea este rareori o problemă de date de autentificare. Firewall-urile cloud compară adrese sursă, iar un tunel complet o înlocuiește exact pe cea pe care o comparau. Diferența dintre ce crezi că trimite laptopul tău și ce primește serverul este întreaga eroare, și se poate măsura într-un singur pas.

În ce se transformă adresa sursă

Într-un tunel complet, fiecare pachet pleacă prin gateway-ul VPN, așa că serverul vede adresa de ieșire a gateway-ului, nu conexiunea ta de acasă. Dacă pe traseu există un proxy de redirecționare, sosește adresa acestuia. Ambele sunt surse legitime, și niciuna nu este adresa din regula ta inițială.

Regulile de firewall Azure SQL la nivel de server și de bază de date compară adresa clientului care ajunge la serverul logic, iar după un tunel complet aceasta este adresa de ieșire. Un grup de securitate AWS care permite o singură adresă se comportă la fel. Pachetul este aruncat înainte de autentificare, așa că eroarea primită arată ca o defecțiune de rețea, nu ca o problemă de permisiuni. Exact de aceea oamenii încep să reseteze parole.

Unde se decide lista de permisiuni

Citește regula care corespunde traseului care eșuează, nu regula pe care îți amintești că ai creat-o. Notează domeniul ei de aplicare, portul, protocolul și dacă este evaluată înainte de orice verificare a identității.

Apoi decide ce strat deține în mod legitim decizia. O regulă de adresă răspunde de unde vine traficul. Un endpoint privat răspunde dacă serviciul este accesibil prin cale privată deloc. O excepție de tunel divizat răspunde care destinații ocolesc tunelul. Nu sunt interschimbabile, și fiecare eșuează diferit când tunelul se schimbă.

Trei reparații, trei straturi

Fiecare opțiune de mai jos repară fluxul dintr-un motiv diferit, iar alegerea celei greșite produce o conexiune care funcționează până la următoarea schimbare de gateway.

RepairLayer it changesWhat it does not fix
Add the egress address to the ruleSource address matchingNothing about routing, and it breaks when the egress moves
Use a private endpointWhether the service is reached privatelyA client that still resolves the public name
Add a split-tunnel exceptionWhich flows bypass the tunnelAn expired credential or a wrong password

Adăugarea adresei de ieșire este cea mai mică schimbare și cea mai fragilă, pentru că un gateway nou sau o altă regiune o invalidează în tăcere. Documentează adresa lângă definiția tunelului, ca ambele să se miște împreună. Un interval larg temporar este un diagnostic, nu o reparație; a-l lăsa pe loc este felul în care serviciile interne ajung expuse.

De ce o platformă administrată nu se poate alătura tunelului

Platforme de aplicații precum Heroku, AppHarbor sau CloudBees rulează codul tău într-un mediu fără dispozitiv tun sau tap și fără privilegii de a crea unul. Modelul lor de intrare este HTTP, nu un socket de ascultare arbitrar. Un buildpack care livrează un binar VPN tot nu are unde să pună interfața. Modelele viabile sunt o adresă de ieșire statică pe care baza de date o poate permite, un produs de conexiune privată oferit de platformă sau un proxy într-o DMZ accesat prin HTTPS.

Acest proxy este o cale de acces cu propria autentificare și înregistrare. Nu face platforma membră a VPN-ului tău, iar descrierea ei astfel produce reguli pe care nimeni nu le poate audita.

Verifică de la clientul care a eșuat

Reconectează-te și repetă traseul exact al clientului. Verifică adresa sursă pe care o înregistrează serviciul, ruta pe care clientul o alege pentru numele bazei de date și rezultatul interogării reale, în această ordine. Un test de la gateway dovedește că gateway-ul funcționează, ceea ce nu a fost niciodată pus la îndoială. Dacă conexiunea acum se autentifică și interogarea tot eșuează, problema rămasă este permisiunea bazei de date.

Revizuiește aceste reguli de fiecare dată când tunelul se schimbă. Un gateway înlocuit sau un interval de ieșire nou rup traseul fără nicio modificare în configurația aplicației.

Articole similare