RDS pribatua EC2tik: VPC bera, peering edo beste zerbait?
Aukeratu ibilbidea segurtasun-taldearen aurretik: VPC bera, peering, VPC partekatua edo konexio pribatua.
Garatzailearen ordenagailu eramangarria langileen VPN bidez iristen da RDS instantzia pribatura, baina EC2ko aplikazioak ezin du batere konektatu. Hori ez da inplementazio hautsia. Ordenagailuak tunel bat du EC2 instantziak inoiz heredatzen ez duena, eta RDSn «pribatua» esateak datu-baseak amaierako puntu publikorik ez duela esan nahi du, ezta VPNko giza erabiltzaileak direla baimendutako dei bakarrak. Aplikazioak bere bide baimendua, segurtasun-taldearekiko bere harremana eta bere datu-base identitatea behar ditu, eta hirurak aukeratzeko ordenak arazketa gehiena aurrezten du. Erabaki ibilbidea lehenik, gero baimenak, eta gero egiaztatu inplementatutako ingurunetik, zure mahaigainetik beharrean.
Ordenagailuaren VPN ez da aplikazioaren bidea
Langileen VPNak pertsonentzat egiten duena edozein dela ere, ez du ezer egiten instantzia batentzat, instantzia hori berariaz bide-sare beraren parte ez bada. Azpisare pribatuko EC2 instantzia bat RDSra iristen da VPC bideratzearen, segurtasun-taldeen eta sareko ACLen bidez. Ez du pertsona baten tunela, pertsona baten saioa edo pertsona baten kredentzialak heredatzen, eta ez luke egin behar: gainbegiratu gabeko aplikazioen konektibitatea eta langileen urruneko sarbidea modu independentean erabili behar dira.
Independentzia hori abantaila da. VPNa erortzen denean, aplikazioak lanean jarraitzen du. Aplikazioak gaizki jokatzen duenean, inork ez du urruneko sarbidea galtzen. Biak bide bakarrean batzen dituzten diseinuak gorabehera baten erdian deskubritzen dira normalean, une okerrenean.
1. erabakia: VPC bera, bide zuzena
Aplikazioa eta datu-basea VPC berean daudenean bideratze zuzenarekin eta haien artean ikuskapen-gailurik gabe, bidea sinplea da eta segurtasun-taldearen erreferentzia eskuragarri dagoen tresnarik indartsuena. Eman aplikazioari bere taldea, eta gero baimendu datu-basearen ataka talde horretatik, helbide-tarte batetik beharrean:
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}'
Ataka ilustratiboa da eta motorrarekin bat etorri behar du. Talde-erreferentziak aplikazioaren instantzien trafikoa baimetzen du; ez ditu haien arauak kopiatzen eta ez du datu-baseko saio-hasierarik sortzen. Bi arazo bereizi, bi konponbide bereizi.
Gero egiaztatu bidearen gainerakoa, gehitu berri duzun arauan gelditu beharrean. Aplikazioaren irteera-politikak, datu-baseari erantsitako taldeen multzo osoak, azpisarearen bideratze-taulek eta sareko ACLek bat etorri behar dute. Segurtasun-taldeen arauek egoera gordetzen dute, eta sareko ACL pertsonalizatu batek eskaera eta itzulerako trafikoa arau bereizietan baimendu behar ditu, ataka efimeroak barne. Datu-basearentzako arau estu berri batek ez du aurretik erantsitako baimen zabal zaharragoa ere indargabetzen.
2. erabakia: beste VPC bat edo beste kontu bat
Aplikazioa beste VPC batean badago, sarearen jabeek onartutako konexio pribatu bat aukeratzen dute: peering, transit diseinu bat edo VPC partekatuaren antolamendua. Orduan bideratzearen bi norabideek existitu behar dute, izenen ebazpenak RDSren amaierako puntuarentzat funtzionatu behar du, eta datu-basearen politikak ebaluatzen duen iturriak benetan iristen denarekin bat etorri behar du. Kontuen izenak bat etortzeak edo fakturazio-harreman partekatu batek ez dute horietako ezer ematen.
Segurtasun-taldearen erreferentzia da aldatzen den zatia. Konexio pribatuen hainbat diseinutan funtzionatzen du, baina funtzionatzeari uzten dio bitarteko gailu batek iturria berridazten edo konexioa amaitzen duen unean, datu-baseak orduan zure aplikazio-taldea beharrean bitarteko gailua ikusten baitu. RDSren VPC agertokiek VPC bereko sarbidea beste antolamenduetatik bereizten dute, eta merezi du zure topologia zehatza haien aurka egiaztatzea arau-estilo batek gainditzen duela pentsatu aurretik.
Ez konpondu falta den bidea datu-basea publikoki irisgarri eginez. Hori beste jabe bat duen azaleratze-erabaki desberdina da, eta normalean ondoriotik urrutien dagoenak proposatzen du.
3. erabakia: zer identitate onartzen duen datu-baseak
Sareko sarbidea eta datu-basearen autentifikazioa geruza bereiziak dira, eta hauek nahasteak errorerik engainagarrienak sortzen ditu. Instantziaren rola AWSren identitate bat da AWSren APIak deitzeko. Ez da datu-baseko erabiltzaile bat. IAM bidezko datu-basearen autentifikazioa onartutako funtzio bat da motorrak eta konfigurazioak baimenduta, eta oraindik datu-baseko erabiltzaile baten mapaketa da, haren ordezkapena ez.
Erabili RDSren amaierako puntuaren izena aplikazioaren konfigurazioan, begirada bakar batean hartutako helbide bat beharrean. Multi-AZren hutsegite-aldaketak izen horren atzeko helbidea aldatzen du, eta IP batera finkatutako aplikazioak huts egingo du behar den une zehatzean. Mantendu motorraren TLS egiaztapena piztuta, errore bat desagerrarazteko desaktibatu beharrean, egiaztatze-hutsegiteak lortu duzun amaierako puntuari buruz zerbait esaten baitizuzu.
Gero eman datu-baseko kontuari aplikazioak behar duen gutxienekoa, benetan erabiltzen duen eskeman. Lan hori aspergarria da, auditagarria da, eta intzidentzien berrikuspenak galdetuko duen zatia da.
Egiaztatu inplementatutako ingurunetik
Probatu instantziatik edo talde, azpisare eta rol berarekin exekutatzen den zeregin batetik. Lau hutsegite antzekoak dira ordenagailu eramangarritik eta hortik erraz bereizten dira: ebazten ez den izen bat, denbora-muga gainditzen duen konexio bat, TLS baliozkotzeko hutsegite bat eta baztertutako datu-baseko saio-hasiera bat. Bakoitzak muga desberdin bat seinalatzen du, eta zein duzun jakin aurretik datu-basearen azaleratzea aldatzea asmatzea da.
psql "host=prod-db.abc123.eu-west-1.rds.amazonaws.com port=5432 dbname=app sslmode=verify-full" -c 'select 1'
Konexioa instantziatik lortzen bada eta zure mahaigainetik huts egiten badu, aplikazioaren bidea ondo dago eta zure sarbidea da konpondu behar dena. Bi lekuetatik huts egiten badu, hasi goiko talde- eta bide-egiaztapenekin, kredentzialekin beharrean. Konparazio bakar horrek txartel hauek sortzen duten nahasterik gehiena ekiditen du.