Plaaslike databaskliënt, private RDS: waarom die verbinding uittyd
’n Plaaslike kliënt bereik om drie afsonderlike redes nie ’n private RDS-instansie nie. Ondersoek eers split-DNS, die roete en die sekuriteitsgroep voordat jy iets verander.
’n Ontwikkelaar se skootrekenaar tyd uit wanneer dit aan die private RDS-eindpunt koppel, terwyl dieselfde geloofsbriewe vanaf ’n bastion-gasheer werk. Niks is af nie. Die pad tussen daardie skootrekenaar en die databasis kort een van drie dinge: ’n naam wat oplos, ’n roete wat die verkeer dra, of ’n sekuriteitsgroepreël wat die bron toelaat wat die databasis werklik sien. Vind uit watter een ontbreek voordat jy die ander twee verander.
Lees die mislukking op die regte laag
’n Tydverstryking is nie een fout nie. ’n Naam wat nie oplos nie, misluk voordat ’n pakkie die masjien verlaat. ’n Adres waarvoor daar geen roete is nie, stuur pakkies in ’n swart gat in. ’n Gefiltreerde poort veroorsaak ’n wag wat presies soos ’n verkeerde gasheer lyk. Voer die stappe in volgorde uit en stop by die eerste een wat misluk.
dig +short db.internal.example
nc -vz db.internal.example 5432
As die naam ’n publieke adres teruggee, of niks teruggee nie, is die tonnel nog nie die probleem nie.
As die naam oplos en die poorttoets hang, vergelyk die adres wat jy opgelos het met die adres wat die databasis rapporteer. ’n Bestuurde eindpunt kan na ’n private adres binne die VPC oplos en na niks bruikbaar buite dit nie, en ’n adres wat uit ’n ou opsoek gekopieer is, sal na ’n gasheer wys wat nie meer antwoord nie.
Skei die tonnel van die roete
Om ’n kliënt-VPN te koppel, roeteer nie outomaties elke private reeks nie. Die profiel dra die roetes wat die diens stoot, en die kliënt mag net sommige daarvan installeer. Kyk watter reekse die kliënt werklik bygevoeg het en of die databasisadres binne een daarvan val.
ip route get 10.20.40.15
ip addr show tun0
’n Roete wat na die tonnelkoppelvlak wys, is nodig; dit is nie voldoende nie, want die oorkant moet die verkeer steeds aanvaar.
Split-tonnelprofiele is die gewone bron van hierdie halwe mislukking. Hulle werk vir die toepassing waarvoor die profiel ontwerp is en laat die databasisreeks buite die tonnel, wat presies die tydverstryking lewer wat ’n firewall sou lewer.
Pas die sekuriteitsgroep by die werklike bron aan
Die RDS-sekuriteitsgroep laat bronne toe, nie mense nie. Afhangende van die argitektuur kan die bron die VPN-kliëntpoel wees, die private adres van ’n bastion, of ’n NAT-adres waarna die verkeer vertaal word. Lees die reël en die werklike pakkiebron saam.
aws ec2 describe-security-groups --group-ids sg-0123456789abcdef0 \
--query 'SecurityGroups[].IpPermissions'
’n Reël vir een skootrekenaar se tuisadres is ’n onderhoudsprobleem eerder as ’n toegangsontwerp.
Wanneer ’n kliënt-VPN of ’n NAT-gateway in die pad sit, kan die databasis die vertaler se adres sien in plaas van die ontwikkelaar se tonneladres. Dit is waarom ’n reël wat uit ’n werkende bastion-opstelling gekopieer is, vir ’n skootrekenaar kan misluk: die twee paaie kom van verskillende bronne, al lyk albei intern.
Verkies ’n smal pad bo ’n wye een
Wanneer een ontwikkelaar een databasis nodig het, is sessiegebaseerde aansturing dikwels goedkoper om te bedryf as ’n volledige netwerktonnel. Die plaaslike kliënt koppel aan ’n aangestuurde poort, en die afgeleë komponent maak die databasisverbinding van binne die netwerk.
ssh -N -L 5432:db.internal.example:5432 bastion.internal.example
Hou TLS-verifikasie in daardie ontwerp ongeskonde. Die kliënt moet steeds die bediener-sertifikaat teen die naam wat dit verwag valideer; ’n plaaslike aangestuurde poort is nie ’n rede om verifikasie af te skakel nie, en om dit af te skakel verberg presies die identiteitsprobleem wat die moeite werd is om te vang.
Die keuse tussen ’n volledige tonnel en ’n smal aansturing is ’n besluit oor omvang, nie oor sekuriteitsteater nie.
Laat ’n herhaalbare pad agter
Dokumenteer die eindpuntnaam eerder as ’n opgeloste adres, die bronreeks wat die sekuriteitsgroep toelaat, en die databasisrol wat die ontwikkelaar gebruik. Daardie drie feite verduidelik die meeste toekomstige mislukkings sonder ’n oproep. Voeg ook die kliëntprofielweergawe by, want ’n profielverandering kan ’n roete verwyder wat die ou een gedra het.
Toets dan die negatiewe geval een keer: ’n kliënt buite die goedgekeurde bron moet steeds geweier word.
’n Private databasis wat net vir die persoon werk wat dit opgestel het, is nie private toegang nie; dit is ’n ongedokumenteerde uitsondering wat wag om herontdek te word. Skryf die pad neer, en die volgende ontwikkelaar erf ’n metode in plaas van ’n raaisel.