Kehittäjän kannettavan yhteydet aikakatkeavat yksityiseen RDS-päätepisteeseen, vaikka samat tunnistetiedot toimivat bastion-isäntäkoneesta. Mikään ei ole alhaalla. Kannettavan ja tietokannan väliseltä reitiltä puuttuu yksi kolmesta: nimi, joka ratkeaa, reitti, joka kantaa liikenteen, tai turvaryhmän sääntö, joka päästää läpi sen lähteen, jonka tietokanta todella näkee. Selvitä, mikä puuttuu, ennen kuin muutat kahta muuta.

Lue epäonnistuminen oikealta kerrokselta

Aikakatkaisu ei ole yksi virhe. Nimi, joka ei ratkea, epäonnistuu ennen kuin paketti lähtee koneesta. Reititön osoite lähettää paketit mustaan aukkoon. Suodatettu portti tuottaa odotuksen, joka näyttää täsmälleen väärältä isännältä. Suorita vaiheet järjestyksessä ja pysähdy ensimmäiseen, joka epäonnistuu.

dig +short db.internal.example
nc -vz db.internal.example 5432

Jos nimi palauttaa julkisen osoitteen tai ei mitään, tunneli ei ole vielä ongelma.

Jos nimi ratkeaa ja porttitesti jumittuu, vertaa ratkaisemaasi osoitetta osoitteeseen, jonka tietokanta ilmoittaa. Hallinnoitu päätepiste voi ratketa yksityiseksi osoitteeksi VPC:n sisällä ja ei mihinkään hyödylliseen sen ulkopuolella, ja vanhasta hautuloksesta kopioitu osoite osoittaa isäntään, joka ei enää vastaa.

Erota tunneli reitistä

Asiakasohjelman VPN:n yhdistäminen ei reititä automaattisesti jokaista yksityistä aluetta. Profiili kantaa reitit, joita palvelu työntää, ja asiakasohjelma saattaa asentaa niistä vain osan. Katso, mitkä alueet asiakasohjelma todella lisäsi ja osuuko tietokannan osoite johonkin niistä.

ip route get 10.20.40.15
ip addr show tun0

Tunnelin rajapintaan osoittava reitti on välttämätön; se ei ole riittävä, koska vastapuolen on yhä hyväksyttävä liikenne.

Jaetun tunnelin profiilit ovat tämän puolittaisen epäonnistumisen tavallinen lähde. Ne toimivat sovelluksessa, jota varten profiili suunniteltiin, ja jättävät tietokannan alueen tunnelin ulkopuolelle, mikä tuottaa täsmälleen sen aikakatkaisun, jonka palomuuri tuottaisi.

Sovita turvaryhmä todelliseen lähteeseen

RDS:n turvaryhmä päästää läpi lähteitä, ei ihmisiä. Arkkitehtuurista riippuen lähde voi olla VPN:n asiakaspooli, bastionin yksityinen osoite tai NAT-osoite, johon liikenne käännetään. Lue sääntö ja paketin todellinen lähde yhdessä.

aws ec2 describe-security-groups --group-ids sg-0123456789abcdef0 \
  --query 'SecurityGroups[].IpPermissions'

Yhden kannettavan kotiosoitteen sääntö on ylläpito-ongelma, ei käyttöoikeussuunnittelu.

Kun polulla on asiakasohjelman VPN tai NAT-yhdyskäytävä, tietokanta saattaa nähdä kääntäjän osoitteen kehittäjän tunneliosoitteen sijaan. Siksi toimivasta bastion-asennuksesta kopioitu sääntö voi epäonnistua kannettavalla: kaksi polkua saapuvat eri lähteistä, vaikka molemmat näyttävät sisäisiltä.

Suosi kapeaa polkua leveän sijaan

Kun yksi kehittäjä tarvitsee yhden tietokannan, istuntopohjainen edelleenohjaus on usein halvempaa ylläpitää kuin täysi verkkotunneli. Paikallinen asiakasohjelma yhdistää edelleenohjattuun porttiin, ja etäkomponentti tekee tietokantayhteyden verkon sisältä.

ssh -N -L 5432:db.internal.example:5432 bastion.internal.example

Pidä TLS-varmennus ehjänä tässä suunnittelussa. Asiakasohjelman pitäisi yhä vahvistaa palvelimen varmenne sitä nimeä vasten, jota se odottaa; paikallinen edelleenohjattu portti ei ole syy poistaa varmennusta käytöstä, ja sen poistaminen kätkee täsmälleen sen identiteettiongelman, joka kannattaa napata.

Valinta täyden tunnelin ja kapean edelleenohjauksen välillä on päätös laajuudesta, ei turvateatterista.

Jätä jälkeesi toistettava polku

Dokumentoi päätepisteen nimi ratkaistun osoitteen sijaan, lähteiden alue, jonka turvaryhmä päästää läpi, ja tietokantarooli, jota kehittäjä käyttää. Nämä kolme tosiasiaa selittävät useimmat tulevat epäonnistumiset ilman puhelua. Lisää myös asiakasprofiilin versio, koska profiilin muutos voi poistaa reitin, jota vanha kantoi.

Testaa sitten negatiivinen tapaus kerran: hyväksytyn lähteen ulkopuolella oleva asiakasohjelma pitäisi yhä hylätä.

Yksityinen tietokanta, joka toimii vain sen henkilön kohdalla, joka sen asensi, ei ole yksityinen käyttöoikeus; se on dokumentoimaton poikkeus, joka odottaa uudelleen löytämistä. Kirjoita polku muistiin, ja seuraava kehittäjä perii menetelmän arvoituksen sijaan.

Aiheeseen liittyvät artikkelit