Arendaja sülearvuti aegub privaatse RDS-i lõpp-punktiga ühenduse loomisel, samal ajal kui samad volitused töötavad bastion-hostist. Miski ei ole maas. Sülearvuti ja andmebaasi vahelisel teel puudub üks kolmest: nimi, mis laheneb, marsruut, mis kannab liiklust, või turbegrupi reegel, mis lubab allikat, mida andmebaas tegelikult näeb. Tehke kindlaks, milline puudub, enne kui muudate ülejäänud kaks.

Lugege nurjumist õigel kihil

Aegumine ei ole üks viga. Nimi, mis ei lahene, nurjub enne, kui pakett masinast lahkub. Marsruudita aadress saadab paketid musta auku. Filtreeritud port tekitab ootamise, mis näeb täpselt välja nagu vale host. Käivitage sammud järjekorras ja peatuge esimese juures, mis nurjub.

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

Kui nimi tagastab avaliku aadressi või ei tagasta midagi, ei ole tunnel veel probleem.

Kui nimi laheneb ja porditest jääb rippuma, võrrelge lahendatud aadressi aadressiga, mida andmebaas teatab. Hallatav lõpp-punkt võib laheneda privaatseks aadressiks VPC sees ja mitte millekski kasulikuks sellest väljas, ning vanast päringust kopeeritud aadress osutab hostile, mis enam ei vasta.

Eraldage tunnel marsruudist

Kliendi VPN-i ühendamine ei marsruudi automaatselt iga privaatset vahemikku. Profiil kannab marsruute, mida teenus lükkab, ja klient võib paigaldada neist ainult mõned. Vaadake, millised vahemikud klient tegelikult lisas ja kas andmebaasi aadress jääb mõne sisse.

ip route get 10.20.40.15
ip addr show tun0

Tunneli liidesele osutav marsruut on vajalik; sellest ei piisa, sest vastaspool peab liikluse ikkagi vastu võtma.

Jagatud tunneli profiilid on selle pooliku nurjumise tavaline allikas. Need töötavad rakenduse jaoks, mille jaoks profiil loodi, ja jätavad andmebaasi vahemiku tunnelist välja, mis tekitab täpselt sellise aegumise, nagu tekitaks tulemüür.

Sobitage turbegrupp tegeliku allikaga

RDS-i turbegrupp lubab allikaid, mitte inimesi. Sõltuvalt arhitektuurist võib allikas olla VPN-i kliendipool, bastioni privaatne aadress või NAT-aadress, milleks liiklus tõlgitakse. Lugege reeglit ja tegelikku paketi allikat koos.

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

Ühe sülearvuti koduaadressi reegel on hooldusprobleem, mitte juurdepääsu disain.

Kui teel on kliendi VPN või NAT-lüüs, võib andmebaas näha tõlkija aadressi arendaja tunneli aadressi asemel. Seetõttu võib töötavast bastioni seadistusest kopeeritud reegel sülearvuti jaoks nurjuda: kaks teed tulevad erinevatest allikatest, kuigi mõlemad näivad sisemised.

Eelistage kitsast teed laiale

Kui ühel arendajal on vaja ühte andmebaasi, on seansipõhine edastamine sageli odavam käitada kui täielik võrgu tunnel. Kohalik klient ühendub edastatud pordiga ja kaugkomponent loob andmebaasiühenduse võrgu seest.

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

Hoidke TLS-i kontroll selles disainis puutumatuna. Klient peaks ikkagi valideerima serveri sertifikaati vastu nime, mida ta ootab; kohalik edastatud port ei ole põhjus kontrolli välja lülitada, ja selle väljalülitamine varjab täpselt seda identiteediprobleemi, mida tasub tabada.

Valik täieliku tunneli ja kitsa edastamise vahel on otsus ulatuse, mitte turvateatri kohta.

Jätke maha korratav tee

Dokumenteerige lõpp-punkti nimi, mitte lahendatud aadress, allikavahemik, mida turbegrupp lubab, ja andmebaasi roll, mida arendaja kasutab. Need kolm fakti selgitavad enamikku tulevasi nurjumisi ilma kõneta. Lisage ka kliendiprofiili versioon, sest profiili muutus võib eemaldada marsruudi, mida vana kandis.

Seejärel testige negatiivset juhtumit üks kord: väljaspool kinnitatud allikat asuv klient peaks ikkagi tagasi lükatama.

Privaatne andmebaas, mis töötab ainult selle inimese jaoks, kes selle seadistas, ei ole privaatne juurdepääs; see on dokumenteerimata erand, mis ootab uuesti avastamist. Kirjutage tee üles, ja järgmine arendaja pärib meetodi, mitte mõistatuse.

Seotud artiklid