De laptop fan de ûntwikkeler berikt de prive RDS-ynstânsje fia de VPN fan it personiel, mar de applikaasje op EC2 kin hielendal net ferbine. Dat is gjin stikken útrulling. De laptop hat in tunnel dy't de EC2-ynstânsje nea erft, en „prive“ yn RDS betsjut dat de databank gjin iepen einpunt hat, net dat minsklike VPN-brûkers de iennichste tastiene bellers binne. De applikaasje hat syn eigen autorisearre rûte, syn eigen relaasje mei de befeiligingsgroep en syn eigen databank-identiteit nedich, en de folchoarder wêryn jo dy trije kieze sparret it measte fan it debuggen. Beslis earst de rûte, dan de tastimmingen, en ferifiearje dan fanút de útrôle omjouwing ynstee fan fan jo buro.

De VPN fan de laptop is net de rûte fan de applikaasje

Wat de VPN fan it personiel ek foar minsken docht, foar in ynstânsje docht it neat, útsein as dy ynstânsje eksplisyt diel is fan deselde netwurkrûte. In EC2-ynstânsje yn in prive subnet berikt RDS fia VPC-routing, befeiligingsgroepen en netwurk-ACL's. It erft gjin minsklike tunnel, minsklike sesje of minsklike legitimasjes, en it soe dat ek net moatte: net-bemanne applikaasjeferbining en personielsôfstânsbrûk moatte ûnôfhinklik operabel wêze.

Dy ûnôfhinklikheid is in foardiel. As de VPN del is, bliuwt de applikaasje wurkjen. As de applikaasje him misdraacht, ferliest nimmen syn ôfstânsbrûk. Untwerpen dy't beide yn ien rûte gearranne, wurde meastentiids ûntdutsen by in ynsidint, op it minst mooglike momint.

Beslissing 1: deselde VPC, direkte rûte

As de applikaasje en de databank yn deselde VPC binne mei direkte routing en gjin ynspeksjemiddel dertusken, is de rûte ienfâldich en is de befeiligingsgroepferwizing it sterkste helpmiddel dat beskikber is. Jou de applikaasje syn eigen groep en stean dan de databankpoarte fan dy groep ta ynstee fan fan in adresberik:

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

De poarte is yllustratyf en moat by de motor passe. In groepferwizing autorisearret ferkear fan de ynstânsjes fan de applikaasje; it kopiearret har regels net en it makket gjin databank-oanmelding. Twa aparte problemen, twa aparte oplossingen.

Kontrolearje dan de rest fan de rûte ynstee fan te stopjen by de regel dy't jo krekt tafoege hawwe. It útgongbelied fan de applikaasje, de folsleine set groepen dy't oan de databank heakke binne, de routingtabellen fan it subnet en alle netwurk-ACL's moatte allegearre oerienkomme. Regels fan befeiligingsgroepen binne stateful, wylst in oanpaste netwurk-ACL it fersyk en it weromferkear yn aparte regels tastean moat, ynklusyf efemere poarten. In smelle nije databankregel annulearret ek gjin âldere brede tastimming dy't al heakke wie.

Beslissing 2: in oare VPC of in oar akkount

As de applikaasje yn in oare VPC is, kieze de netwurkeigners in stipe prive ferbining: peering, in transit-ûntwerp of in dielde VPC-regeling. Dan moatte beide rjochtingen fan routing bestean, namme-oplossing moat foar it RDS-einpunt wurkje, en de boarne dy't it databankbelied beoardielet moat oerienkomme mei wat echt oankomt. Oerienkommende akkountnammen of in dielde fakturaasjerelaasje leverje dêr neat fan.

De befeiligingsgroepferwizing is it diel dat fariearret. It wurket yn ferskate prive-ferbiningsûntwerpen, mar it hâldt op mei wurkjen op it momint dat in middenkast de boarne oerskriuwt of de ferbining beëiniget, om't de databank dan it middenkast sjocht ynstee fan jo applikaasjegroep. De RDS VPC-scenario's skiede tagong binnen deselde VPC fan 'e oare regelingen, en it is de muoite wurdich jo spesifike topology dêr tsjin te kontrolearjen foardat jo oannimme dat in regelstyl oerdraacht.

Los in ûntbrekkende rûte net op troch de databank iepenbier tagonklik te meitsjen. Dat is in oare eksposysjebeslissing mei in oare eigner, en dy wurdt meastentiids foarsteld troch wa't it fierst fan 'e konsekwinsje ôf is.

Beslissing 3: hokker identiteit de databank akseptearret

Netwurktagong en databankautentikaasje binne aparte lagen, en se gearfoegje produsearret de meast misliedende flaters. De rol fan 'e ynstânsje is in AWS-identiteit foar it oanroppen fan AWS-API's. It is gjin databankbrûker. IAM-databankautentikaasje is in stipe funksje wêr't de motor en konfiguraasje it tastean, en it is noch altyd in mapping nei in databankbrûker ynstee fan in ferfanging.

Brûk de namme fan it RDS-einpunt yn 'e konfiguraasje fan 'e applikaasje ynstee fan in adres dat út ien syktocht helle is. Multi-AZ-oerskeakeling feroaret it adres efter dy namme, en in applikaasje dy't oan in IP fêstset is sil mislearje krekt op it momint dat it nedich is. Hâld de TLS-ferifikaasje fan 'e motor oan ynstee fan dy út te skeakeljen om in flater ferdwine te litten, want in ferifikaasjeflater fertelt jo wat oer it einpunt dat jo berikt hawwe.

Jou dan it databankakkount it minimum dat de applikaasje nedich hat, yn it skema dat it echt brûkt. Dat wurk is ferfelend, it is auditber, en it is it diel dêr't in ynsidintresinsje nei freegje sil.

Ferifiearje fanút de útrôle omjouwing

Test fan 'e ynstânsje of fan in taak dy't rint mei deselde groep, subnet en rol. Fjouwer flaters lykje fan in laptop itselde en binne dêr maklik te ûnderskieden: in namme dy't net oplost, in ferbining dy't ferrint, in TLS-falidaasjeflater en in wegere databank-oanmelding. Elk wiist nei in oare grins, en it feroarjen fan 'e eksposysje fan 'e databank foardat jo witte hokker jo hawwe is rieden.

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

As de ferbining fan 'e ynstânsje slagget en fan jo buro mislearret, is de rûte fan 'e applikaasje yn oarder en is jo tagong it ding dat reparearre wurde moat. As it fan beide mislearret, begjin dan mei de groep- en rûtekontrôles hjirboppe ynstee fan mei de legitimasjes. Dy iene ferliking foarkomt it measte fan 'e drokte dy't dizze tickets meitsje.

Relatearre artikelen