Локален клиент на база на податоци и приватен RDS: зошто врската истекува
Локален клиент не може да стигне до приватна RDS инстанца поради три одделни причини. Пред да промените нешто, проверете го поделениот DNS, рутата и доказите од безбедносната група.
Лаптопот на еден развивач истекува при поврзување со приватната RDS крајна точка, додека истите акредитиви работат од бастион хост. Ништо не паднало. На патеката меѓу тој лаптоп и базата на податоци ѝ недостига една од три работи: име што се разрешува, рута што го носи сообраќајот, или правило во безбедносна група што го дозволува изворот што базата на податоци навистина го гледа. Откријте кое недостига пред да ги промените другите две.
Читајте го неуспехот на вистинскиот слој
Истекувањето не е една грешка. Име што не се разрешува паѓа пред пакетот да ја напушти машината. Адреса без рута испраќа пакети во црна дупка. Филтриран порт создава чекање што изгледа точно како погрешен хост. Изведете ги чекорите по ред и застанете на првиот што паѓа.
dig +short db.internal.example
nc -vz db.internal.example 5432
Ако името врати јавна адреса или не врати ништо, тунелот сѐ уште не е проблемот.
Ако името се разреши, а тестот на портата виси, споредете ја разрешената адреса со адресата што ја пријавува базата на податоци. Управувана крајна точка може да се разреши на приватна адреса внатре во VPC и на ништо корисно надвор од неа, а адреса копирана од старо пребарување ќе покажува на хост што повеќе не одговара.
Одделете го тунелот од рутата
Поврзувањето на клиентски VPN не маршрутизира автоматски секој приватен опсег. Профилот ги носи рутите што ги турка услугата, а клиентот може да инсталира само некои од нив. Погледнете кои опсези клиентот навистина ги додаде и дали адресата на базата на податоци паѓа во некој од нив.
ip route get 10.20.40.15
ip addr show tun0
Рута што покажува на интерфејсот на тунелот е неопходна; таа не е доволна, бидејќи спротивната страна сѐ уште треба да го прифати сообраќајот.
Профили на поделен тунел се вообичаениот извор на овој половичен неуспех. Тие работат за апликацијата за која профилот е направен и го оставаат опсегот на базата на податоци надвор од тунелот, што го создава точно тоа истекување што би го создал огноѕид.
Усогласете ја безбедносната група со вистинскиот извор
Безбедносната група на RDS дозволува извори, не луѓе. Зависно од архитектурата, изворот може да биде VPN клиентски пул, приватната адреса на бастион, или NAT адреса на која се преведува сообраќајот. Читајте го правилото и вистинскиот извор на пакетот заедно.
aws ec2 describe-security-groups --group-ids sg-0123456789abcdef0 \
--query 'SecurityGroups[].IpPermissions'
Правило за домашната адреса на еден лаптоп е проблем за одржување, а не дизајн на пристап.
Кога на патеката стои клиентски VPN или NAT порта, базата на податоци може да ја види адресата на преведувачот наместо адресата на тунелот на развивачот. Затоа правило копирано од работна бастион поставка може да потфрли за лаптоп: двете патеки доаѓаат од различни извори, иако двете изгледаат внатрешни.
Дајте предност на тесна патека пред широка
Кога на еден развивач му треба една база на податоци, препраќањето засновано на сесија е често поевтино за работење од целосен мрежен тунел. Локалниот клиент се поврзува со препратена порта, а далечниот компонент ја воспоставува врската со базата од внатрешноста на мрежата.
ssh -N -L 5432:db.internal.example:5432 bastion.internal.example
Задржете ја проверката на TLS недопрена во тој дизајн. Клиентот треба сѐ уште да го валидира серверскиот сертификат спрема името што го очекува; локалната препратена порта не е причина да ја исклучите проверката, а нејзиното исклучување го сокрива токму идентитетскиот проблем што вреди да се фати.
Изборот меѓу целосен тунел и тесно препраќање е одлука за опфатот, а не за безбедносен театар.
Оставете зад себе патека што може да се повтори
Документирајте го името на крајната точка наместо разрешената адреса, опсегот на изворот што го дозволува безбедносната група, и улогата во базата на податоци што ја користи развивачот. Овие три факти објаснуваат повеќето идни неуспеси без телефонски повик. Додадете ја и верзијата на клиентскиот профил, бидејќи промена на профилот може да отстрани рута што ја носел стариот.
Потоа еднаш тестирајте го негативниот случај: клиент надвор од одобрениот извор треба сѐ уште да биде одбиен.
Приватна база на податоци што работи само за лицето што ја поставило не е приватен пристап; тоа е недокументиран исклучок што чека повторно да биде откриен. Запишете ја патеката, и следниот развивач ќе наследи метод наместо загатка.