Laptopi i zhvilluesit arrin instancën private RDS përmes VPN-së së personelit, por aplikacioni në EC2 nuk mund të lidhet fare. Ky nuk është një vendosje e prishur. Laptopi ka një tunel që instanca EC2 nuk e trashëgon kurrë, dhe «privat» në RDS do të thotë që baza e të dhënave nuk ka një pikë fundore publike, jo se përdoruesit njerëzorë të VPN-së janë të vetmit thirrës të lejuar. Aplikacioni ka nevojë për rrugën e tij të autorizuar, marrëdhënien e tij me grupin e sigurisë dhe identitetin e tij në bazën e të dhënave, dhe renditja në të cilën zgjidhni këto tre kursen pjesën më të madhe të korrigjimit. Vendosni së pari rrugën, pastaj lejet, dhe në fund verifikoni nga mjedisi i vendosur dhe jo nga tavolina juaj.

VPN-ja e laptopit nuk është rruga e aplikacionit

Çfarëdo që bën VPN-ja e personelit për njerëzit, nuk bën asgjë për një instancë nëse ajo instancë nuk është shprehimisht pjesë e të njëjtës rrugë rrjeti. Një instancë EC2 në një nënrrjet privat arrin RDS përmes rrugëzimit të VPC-së, grupeve të sigurisë dhe ACL-ve të rrjetit. Ajo nuk trashëgon tunelin e një personi, sesionin e një personi ose kredencialet e një personi, dhe nuk duhet: lidhshmëria e aplikacioneve pa mbikëqyrje dhe aksesi në distancë i personelit duhet të jenë të operueshëm në mënyrë të pavarur.

Kjo pavarësi është një avantazh. Kur VPN-ja bie, aplikacioni vazhdon të punojë. Kur aplikacioni sillet keq, askush nuk humbet aksesin në distancë. Dizajnet që i shkriajnë të dyja në një rrugë të vetme zakonisht zbulohen gjatë një incidenti, në momentin më të keq të mundshëm.

Vendimi 1: i njëjti VPC, rrugë e drejtpërdrejtë

Kur aplikacioni dhe baza e të dhënave janë në të njëjtin VPC me rrugëzim të drejtpërdrejtë dhe pa asnjë pajisje inspektimi midis tyre, rruga është e thjeshtë dhe referenca e grupit të sigurisë është mjeti më i fuqishëm i disponueshëm. Jepini aplikacionit grupin e tij, pastaj lejoni portën e bazës së të dhënave nga ai grup në vend të një intervali adresash:

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}'

Porta është ilustruese dhe duhet të përputhet me motorin. Një referencë grupi autorizon trafikun nga instancat e aplikacionit; nuk i kopjon rregullat e tyre dhe nuk krijon një identifikim në bazën e të dhënave. Dy probleme të ndara, dy zgjidhje të ndara.

Pastaj kontrolloni pjesën tjetër të rrugës në vend që të ndaleni te rregulli që sapo shtuat. Politika e daljes së aplikacionit, grupi i plotë i grupeve të bashkangjitura bazës së të dhënave, tabelat e rrugëzimit të nënrrjetit dhe çdo ACL rrjeti duhet të bien dakord. Rregullat e grupeve të sigurisë janë me gjendje, ndërsa një ACL rrjeti e personalizuar duhet të lejojë kërkesën dhe trafikun e kthimit në rregulla të ndara, duke përfshirë portat efemere. Një rregull i ri i ngushtë i bazës së të dhënave gjithashtu nuk anulon një leje më të vjetër të gjerë që ishte tashmë e bashkangjitur.

Vendimi 2: një VPC tjetër ose një llogari tjetër

Nëse aplikacioni është në një VPC tjetër, pronarët e rrjetit zgjedhin një ndërlidhje private të mbështetur: peering, një dizajn transit ose një marrëveshje VPC të përbashkët. Pastaj duhet të ekzistojnë të dy drejtimet e rrugëzimit, zgjidhja e emrave duhet të funksionojë për pikën fundore RDS, dhe burimi që vlerëson politika e bazës së të dhënave duhet të përputhet me atë që vjen vërtet. Emrat e llogarive që përputhen ose një marrëdhënie faturimi e përbashkët nuk ofrojnë asnjë nga këto.

Referenca e grupit të sigurisë është pjesa që ndryshon. Funksionon në disa dizajne të ndërlidhjes private, por ndalon së funksionuari në momentin që një pajisje ndërmjetëse rishkruan burimin ose përfundon lidhjen, sepse baza e të dhënave atëherë sheh pajisjen ndërmjetëse dhe jo grupin tuaj të aplikacionit. Skenarët VPC të RDS i ndajnë aksesin brenda të njëjtit VPC nga aranzhimet e tjera, dhe ia vlen të kontrolloni topologjinë tuaj specifike kundrejt tyre përpara se të supozoni se një stil rregulli transferohet.

Mos e zgjidhni një rrugë që mungon duke e bërë bazën e të dhënave të aksesueshme publikisht. Ky është një vendim tjetër ekspozimi me një pronar tjetër, dhe zakonisht propozohet nga ai që është më larg pasojës.

Vendimi 3: çfarë identiteti pranon baza e të dhënave

Aksesi i rrjetit dhe vërtetimi i bazës së të dhënave janë shtresa të ndara, dhe përzierja e tyre prodhon gabimet më mashtruese. Roli i instancës është një identitet AWS për të thirrur API-t e AWS. Nuk është përdorues i bazës së të dhënave. Vërtetimi i bazës së të dhënave me IAM është një veçori e mbështetur aty ku motori dhe konfigurimi e lejojnë, dhe mbetet një hartëzim te një përdorues i bazës së të dhënave, jo një zëvendësim.

Përdorni emrin e pikës fundore RDS në konfigurimin e aplikacionit në vend të një adrese të kapur nga një kërkim i vetëm. Kalimi dështimisht i Multi-AZ ndryshon adresën pas atij emri, dhe një aplikacion i fiksuar në një IP do të dështojë pikërisht në momentin kur nevojitet. Lëreni verifikimin TLS të motorit të aktivizuar në vend që ta çaktivizoni për të zhdukur një gabim, sepse një dështim verifikimi ju thotë diçka për pikën fundore që arritët.

Pastaj jepini llogarisë së bazës së të dhënave minimumin që i nevojitet aplikacionit, në skemën që përdor vërtet. Ai punë është e mërzitshme, është e auditueshme dhe është pjesa për të cilën do të pyesë një rishikim incidenti.

Verifikoni nga mjedisi i vendosur

Testoni nga instanca ose nga një detyrë që ekzekutohet me të njëjtin grup, nënrrjet dhe rol. Katër dështime duken njësoj nga një laptop dhe dallohen lehtë prej andej: një emër që nuk zgjidhet, një lidhje që skadon, një dështim validimi TLS dhe një identifikim i refuzuar në bazën e të dhënave. Secili tregon një kufi të ndryshëm, dhe ndryshimi i ekspozimit të bazës së të dhënave përpara se të dini se cilin keni është hamendësim.

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

Nëse lidhja funksionon nga instanca dhe dështon nga tavolina juaj, rruga e aplikacionit është në rregull dhe aksesi juaj është ajo që duhet rregulluar. Nëse dështon nga të dyja, filloni me kontrollet e grupit dhe rrugës më sipër dhe jo me kredencialet. Ai krahasim i vetëm parandalon pjesën më të madhe të trazirave që krijojnë këto tiketa.

Artikuj të ngjashëm