Lokal databaseklient og privat RDS: hvorfor tilkoblingen går ut på tid
En lokal klient når ikke en privat RDS-instans av tre separate grunner. Sjekk delt DNS, ruten og bevisene fra sikkerhetsgruppen før du endrer noe.
En utviklers bærbare datamaskin går ut på tid når den kobler til det private RDS-endepunktet, mens de samme påloggingsdetaljene fungerer fra en bastion-vert. Ingenting er nede. Veien mellom den bærbare datamaskinen og databasen mangler én av tre ting: et navn som løses opp, en rute som bærer trafikken, eller en regel i en sikkerhetsgruppe som slipper inn kilden databasen faktisk ser. Finn ut hvilken som mangler før du endrer de to andre.
Les feilen på riktig lag
En tidsavbrudd er ikke én feil. Et navn som ikke løses opp, feiler før en pakke forlater maskinen. En adresse uten rute sender pakker i et svart hull. En filtrert port gir en ventetid som ser nøyaktig ut som en feil vert. Kjør trinnene i rekkefølge og stopp ved det første som feiler.
dig +short db.internal.example
nc -vz db.internal.example 5432
Hvis navnet returnerer en offentlig adresse, eller ingenting, er tunnelen ennå ikke problemet.
Hvis navnet løses opp og porttesten henger, sammenlign adressen du løste opp med adressen databasen rapporterer. Et administrert endepunkt kan løses opp til en privat adresse inne i VPC-en og til ingenting nyttig utenfor den, og en adresse kopiert fra et gammelt oppslag vil peke på en vert som ikke lenger svarer.
Skill tunnelen fra ruten
Å koble til en klient-VPN ruter ikke automatisk hvert privat område. Profilen bærer rutene tjenesten skyver, og klienten installerer kanskje bare noen av dem. Se hvilke områder klienten faktisk la til, og om databaseadressen faller innenfor ett av dem.
ip route get 10.20.40.15
ip addr show tun0
En rute som peker mot tunnelgrensesnittet er nødvendig; den er ikke tilstrekkelig, fordi den andre siden fortsatt må godta trafikken.
Profiler med delt tunnel er den vanlige kilden til denne halve feilen. De fungerer for programmet profilen ble laget for, og lar databaseområdet ligge utenfor tunnelen, noe som gir nøyaktig den tidsavbruddet en brannmur ville gitt.
Tilpass sikkerhetsgruppen til den virkelige kilden
RDS-sikkerhetsgruppen slipper inn kilder, ikke personer. Avhengig av arkitekturen kan kilden være VPN-klientpoolen, den private adressen til en bastion eller en NAT-adresse trafikken oversettes til. Les regelen og den faktiske pakkekilden sammen.
aws ec2 describe-security-groups --group-ids sg-0123456789abcdef0 \
--query 'SecurityGroups[].IpPermissions'
En regel for hjemmeadressen til én bærbar datamaskin er et vedlikeholdsproblem snarere enn et tilgangsdesign.
Når en klient-VPN eller en NAT-gateway sitter i veien, kan databasen se adressen til oversetteren i stedet for tunneladressen til utvikleren. Derfor kan en regel kopiert fra et fungerende bastion-oppsett feile for en bærbar datamaskin: de to veiene kommer fra forskjellige kilder selv om begge ser interne ut.
Foretrekk en smal vei fremfor en bred
Når én utvikler trenger én database, er sesjonsbasert videresending ofte billigere å drifte enn en full nettverkstunnel. Den lokale klienten kobler til en videresendt port, og fjernkomponenten oppretter databaseforbindelsen fra innsiden av nettverket.
ssh -N -L 5432:db.internal.example:5432 bastion.internal.example
Hold TLS-verifiseringen intakt i det designet. Klienten bør fortsatt validere servercertifikatet mot navnet den forventer; en lokal videresendt port er ikke en grunn til å slå av verifiseringen, og å slå den av skjuler nøyaktig identitetsproblemet som er verdt å fange.
Valget mellom en full tunnel og en smal videresending er en beslutning om omfang, ikke om sikkerhetsteater.
Etterlat en vei som kan gjentas
Dokumenter endepunktnavnet i stedet for en oppløst adresse, kildeområdet sikkerhetsgruppen slipper inn, og databaserollen utvikleren bruker. Disse tre fakta forklarer de fleste fremtidige feil uten en samtale. Legg også til versjonen av klientprofilen, fordi en profilendring kan fjerne en rute den gamle bar.
Test deretter det negative tilfellet én gang: en klient utenfor den godkjente kilden bør fortsatt avvises.
En privat database som bare fungerer for personen som satte den opp, er ikke privat tilgang; det er et udokumentert unntak som venter på å bli gjenoppdaget. Skriv ned veien, og den neste utvikleren arver en metode i stedet for et mysterium.