Әзірлеушінің ноутбугі жеке RDS данасына қызметкерлер VPN-і арқылы жетеді, ал EC2-дегі қолданба мүлде қосыла алмайды. Бұл бұзылған орналастыру емес. Ноутбукта EC2 данасы ешқашан мұраланбайтын туннель бар, ал RDS-тегі «жеке» дерекқордың жария соңғы нүктесі жоқ дегенді білдіреді, адам VPN пайдаланушылары ғана рұқсат етілген шақырушылар дегенді емес. Қолданбаға өзінің рұқсат етілген жолы, қауіпсіздік тобымен өз қатынасы және дерекқордағы өз сәйкестігі қажет, және осы үшеуін таңдау тәртібі жөндеудің көп бөлігін үнемдейді. Алдымен маршрутты, содан кейін рұқсаттарды шешіңіз, содан кейін өз үстеліңізден емес, орналастырылған ортадан тексеріңіз.

Ноутбук VPN-і қолданбаның жолы емес

Қызметкерлер VPN-і адамдар үшін не істесе де, ол дана үшін ештеңе істемейді, егер сол дана сол желілік жолдың айқын бөлігі болмаса. Жеке ішкі желідегі EC2 данасы RDS-ке VPC маршруттауы, қауіпсіздік топтары және желілік ACL арқылы жетеді. Ол адамның туннелін, адамның сессиясын немесе адамның тіркелгі деректерін мұраланбайды және мұраланбауы керек: бақылаусыз қолданба байланысы мен қызметкерлердің қашықтан қатынауы тәуелсіз жұмыс істеуі керек.

Бұл тәуелсіздік — артықшылық. VPN өшкенде қолданба жұмысын жалғастырады. Қолданба дұрыс емес әрекет етсе, ешкім қашықтан қатынауынан айырылмайды. Екеуін бір жолға біріктіретін жобалар әдетте оқиға кезінде, ең нашар сәтте анықталады.

Шешім 1: бір VPC, тікелей жол

Қолданба мен дерекқор бір VPC-де тікелей маршруттаумен және олардың арасында тексеру құрылғысынсыз болғанда, жол қарапайым және қауіпсіздік тобына сілтеме қолжетімді ең күшті құрал болып табылады. Қолданбаға өз тобын беріңіз, содан кейін дерекқор портына мекенжай ауқымынан емес, сол топтан рұқсат беріңіз:

aws ec2 authorize-security-group-ingress --group-id sg-0db123   --protocol tcp --port 5432 --source-group sg-0app456

aws rds describe-db-instances --db-instance-identifier prod-db   --query 'DBInstances[0].{Endpoint:Endpoint.Address,Port:Endpoint.Port,Public:PubliclyAccessible,Groups:VpcSecurityGroups}'

Порт мысал ретінде келтірілген және қозғалтқышқа сәйкес болуы керек. Топқа сілтеме қолданба даналарынан трафикке рұқсат береді; ол олардың ережелерін көшірмейді және дерекқорға кіруді жасамайды. Екі бөлек мәселе, екі бөлек түзету.

Содан кейін жаңа қосылған ережеде тоқтамай, жолдың қалған бөлігін тексеріңіз. Қолданбаның шығыс саясаты, дерекқорға тіркелген топтардың толық жиынтығы, ішкі желінің маршрут кестелері және кез келген желілік ACL бір-біріне сәйкес болуы керек. Қауіпсіздік топтарының ережелері күйге байланысты, ал реттелген желілік ACL сұраныс пен қайтарым трафигіне жеке ережелерде рұқсат беруі керек, уақытша порттарды қоса. Жаңа тар дерекқор ережесі бұрын тіркелген ескі кең рұқсатты да жоймайды.

Шешім 2: басқа VPC немесе басқа тіркелгі

Егер қолданба басқа VPC-де болса, желі иелері қолдау көрсетілетін жеке қосылымды таңдайды: peering, транзиттік жоба немесе ортақ VPC келісімі. Содан кейін маршруттаудың екі бағыты да болуы керек, атауларды шешу RDS соңғы нүктесі үшін жұмыс істеуі керек, және дерекқор саясаты бағалайтын дереккөз нақты келетінге сәйкес болуы керек. Тіркелгі атауларының сәйкес келуі немесе ортақ есеп айырысу қатынасы бұлардың ешқайсысын бермейді.

Қауіпсіздік тобына сілтеме — өзгеретін бөлік. Ол жеке қосылымның бірнеше жобасында жұмыс істейді, бірақ делдал құрылғы дереккөзді қайта жазған немесе байланысты тоқтатқан сәтте жұмысын тоқтатады, өйткені сонда дерекқор қолданба тобыңызды емес, делдалды көреді. RDS VPC сценарийлері бір VPC ішіндегі қатынауды басқа реттеулерден бөледі, және ереже стилі тасымалданады деп болжамас бұрын нақты топологияңызды олармен салыстырып тексерген жөн.

Жоқ маршрутты дерекқорды жария қолжетімді ету арқылы шешпеңіз. Бұл басқа иесі бар басқа ашылу шешімі, және әдетте оны салдардан ең алыс тұрған адам ұсынады.

Шешім 3: дерекқор қандай сәйкестікті қабылдайды

Желілік қатынау мен дерекқор аутентификациясы бөлек қабаттар, және оларды шатастыру ең адасушы қателерді тудырады. Дана рөлі — AWS API-лерін шақыруға арналған AWS сәйкестігі. Ол дерекқор пайдаланушысы емес. IAM дерекқор аутентификациясы қозғалтқыш пен конфигурация рұқсат еткен жерде қолдау көрсетілетін мүмкіндік, және ол әлі де дерекқор пайдаланушысына салыстыру, оның орнын басу емес.

Қолданба конфигурациясында бір іздеуден алынған мекенжайдың орнына RDS соңғы нүктесінің атауын пайдаланыңыз. Multi-AZ ауысуы сол атаудың артындағы мекенжайды өзгертеді, ал IP-ге бекітілген қолданба дәл қажет болған сәтте сәтсіздікке ұшырайды. Қатені жоғалту үшін қозғалтқыштың TLS тексеруін өшірудің орнына оны қосулы ұстаңыз, өйткені тексеру сәтсіздігі жеткен соңғы нүкте туралы бірдеңе айтады.

Содан кейін дерекқор тіркелгісіне қолданбаға қажетті минимумды, ол нақты пайдаланатын схемада беріңіз. Бұл жұмыс қызықсыз, оны тексеруге болады, және оқиға шолуы дәл осы бөлік туралы сұрайды.

Орналастырылған ортадан тексеріңіз

Данадан немесе сол топ, ішкі желі және рөлмен жұмыс істейтін тапсырмадан сынақ жүргізіңіз. Төрт сәтсіздік ноутбуктан ұқсас көрінеді және ол жерден оңай ажыратылады: шешілмейтін атау, уақыты бітетін байланыс, TLS валидациясының сәтсіздігі және қабылданбаған дерекқор кіруі. Әрқайсысы басқа шекараға нұсқайды, және қайсысы сізде екенін білмей тұрып дерекқордың ашылуын өзгерту — болжау.

psql "host=prod-db.abc123.eu-west-1.rds.amazonaws.com port=5432 dbname=app sslmode=verify-full" -c 'select 1'

Егер байланыс данадан сәтті болып, үстеліңізден сәтсіз болса, қолданбаның жолы дұрыс және түзету керек нәрсе — сіздің қатынауыңыз. Егер ол екеуінен де сәтсіз болса, тіркелгі деректерінен емес, жоғарыдағы топ пен маршрут тексерулерінен бастаңыз. Осы бір салыстыру осы билеттер тудыратын әбігердің көбін болдырмайды.

Қатысты мақалалар