Lokal databaseklient og privat RDS: kvifor tilkoplinga går ut på tid
Ein lokal klient når ikkje ein privat RDS-instans av tre separate grunnar. Sjekk delt DNS, ruta og bevisa frå tryggingsgruppa før du endrar noko.
Den berbare datamaskinen til ein utviklar går ut på tid når han koplar til det private RDS-endepunktet, medan dei same påloggingsdetaljane fungerer frå ein bastion-vert. Ingenting er nede. Vegen mellom den berbare datamaskinen og databasen manglar éin av tre ting: eit namn som blir løyst opp, ei rute som ber trafikken, eller ei regel i ei tryggingsgruppe som slepp inn kjelda databasen faktisk ser. Finn ut kva som manglar før du endrar dei to andre.
Les feilen på rett lag
Eit tidsavbrot er ikkje éin feil. Eit namn som ikkje blir løyst opp, feilar før ein pakke forlèt maskinen. Ei adresse utan rute sender pakkar i eit svart hol. Ein filtrert port gir ei ventetid som ser nøyaktig ut som ein feil vert. Køyr trinna i rekkjefølgje og stopp ved det første som feilar.
dig +short db.internal.example
nc -vz db.internal.example 5432
Viss namnet returnerer ei offentleg adresse, eller ingenting, er tunnelen enno ikkje problemet.
Viss namnet blir løyst opp og porttesten heng, samanlikn adressa du løyste opp med adressa databasen rapporterer. Eit administrert endepunkt kan bli løyst opp til ei privat adresse inne i VPC-en og til ingenting nyttig utanfor han, og ei adresse kopiert frå eit gammalt oppslag vil peike på ein vert som ikkje lenger svarar.
Skil tunnelen frå ruta
Å kople til ein klient-VPN ruter ikkje automatisk kvart privat område. Profilen ber rutene tenesta skyv, og klienten installerer kanskje berre nokre av dei. Sjå kva område klienten faktisk la til, og om databaseadressa fell innanfor eitt av dei.
ip route get 10.20.40.15
ip addr show tun0
Ei rute som peikar mot tunngrensesnittet er nødvendig; ho er ikkje tilstrekkeleg, fordi den andre sida framleis må godta trafikken.
Profilar med delt tunnel er den vanlege kjelda til denne halve feilen. Dei fungerer for programmet profilen vart laga for, og lèt databaseområdet liggje utanfor tunnelen, noko som gir nøyaktig det tidsavbrotet ein brannmur ville gitt.
Tilpass tryggingsgruppa til den verkelege kjelda
RDS-tryggingsgruppa slepp inn kjelder, ikkje personar. Avhengig av arkitekturen kan kjelda vere VPN-klientpoolen, den private adressa til ein bastion eller ei NAT-adresse trafikken blir omsett til. Les regelen og den faktiske pakkekjelda saman.
aws ec2 describe-security-groups --group-ids sg-0123456789abcdef0 \
--query 'SecurityGroups[].IpPermissions'
Ein regel for heimeadressa til éin berbar datamaskin er eit vedlikehaldsproblem snarare enn eit tilgangsdesign.
Når ein klient-VPN eller ein NAT-gateway sit i vegen, kan databasen sjå adressa til omsetjaren i staden for tunneladressa til utviklaren. Difor kan ein regel kopiert frå eit fungerande bastion-oppsett feile for ein berbar datamaskin: dei to vegane kjem frå ulike kjelder sjølv om begge ser interne ut.
Føretrekk ein smal veg framfor ein brei
Når éin utviklar treng éin database, er sesjonsbasert videresending ofte billegare å drive enn ein full nettverkstunnel. Den lokale klienten koplar til ein videresend port, og fjernkomponenten opprettar databasekoplinga frå innsida av nettverket.
ssh -N -L 5432:db.internal.example:5432 bastion.internal.example
Hald TLS-verifiseringa intakt i det designet. Klienten bør framleis validere servercertifikatet mot namnet han forventar; ein lokal videresend port er ikkje grunn til å slå av verifiseringa, og å slå henne av skjuler nøyaktig identitetsproblemet som er verdt å fange.
Valet mellom ein full tunnel og ei smal videresending er ei avgjerd om omfang, ikkje om tryggingsteater.
Etterlat ein veg som kan gjentakast
Dokumenter endepunktnamnet i staden for ei oppløyst adresse, kjeldeområdet tryggingsgruppa slepp inn, og databaserolla utviklaren brukar. Desse tre fakta forklarar dei fleste framtidige feil utan ein samtale. Legg òg til versjonen av klientprofilen, fordi ei profilendring kan fjerne ei rute den gamle bar.
Test deretter det negative tilfellet éin gong: ein klient utanfor den godkjende kjelda bør framleis bli avvist.
Ein privat database som berre fungerer for personen som sette han opp, er ikkje privat tilgang; det er eit udokumentert unntak som ventar på å bli gjenoppdaga. Skriv ned vegen, og den neste utviklaren arvar ein metode i staden for eit mysterium.