Amazon RDS Proxy

Amazon RDS Proxy
Amazon RDS Proxy er en database -proxy -tjeneste for AWS RDS for å forbedre skalerbarheten, tilgjengeligheten, sikkerheten og elastisiteten til applikasjoner. Dette er en utmerket fordel for applikasjoner som har mange åpne tilkoblinger til databasen og hyppig åpning og lukking av disse tilkoblingene. Med AWS RDS -proxy, må vi opprettholde færre forbindelser med databasen.

Et flott trekk ved RDS -proxy er at den er fullstendig administrert. I motsetning til tradisjonelle proxy -servere, trenger du ikke holde hodepinen ved å distribuere, administrere og lappe dem med de nye oppdateringene. Det er en serverløs applikasjon og skalaer automatisk for å tilpasse deg dine behov.

Amazon RDS -proxy kan brukes til applikasjoner basert på serverløs arkitektur og de som kjører i containere på ECS eller EC2.

Hvordan fungerer RDS -proxy?

Med denne funksjonen kan applikasjoner samle og dele databasetilkoblingene sine. I stedet for å koble applikasjonen din direkte til RDS -databasen, kobler vi den til RDS -proxy. Amazon RDS -proxy fungerer som en tilkoblingsformidler mellom applikasjonskoden din og RDS DB -forekomsten. Den reserverer et basseng med etablerte tilkoblinger til databasen, som kan gjenbrukes og deles med andre klienter. På denne måten er det bare noen få tilkoblinger som er etablert til databasen, og reduserer dermed den nye tilkoblingsbelastningen på databasen.

I tilfelle av en database-failover, omutstyrer RDS-proxy forespørslene direkte til den nye DB-forekomsten. En annen stor fordel er at vi kan konfigurere IAM -godkjenning for databasesikkerhet uten å måtte legge databasen legitimasjon direkte inn i applikasjonskoden. Den har også bestemmelsen om å bruke AWS Secrets Manager for sentralt administrasjon av databaseinformasjon.

Eksperimentelt oppsett

For å demonstrere hvordan AWS RDS Proxy fungerer, vil vi sette opp et arbeidsmiljø med følgende nettverksressurser:

  1. En AWS VPC inneholder en RDS DB -forekomst og en EC2 -forekomst. (Vi bruker standard VPC levert av AWS).
  2. Minimum to undernett og en internett gateway
  3. Minst to undernett i forskjellige tilgjengelighetssoner.

For å lage denne guiden kompakt, vil vi ikke beskrive hvordan du setter opp en EC2 og en RDS -forekomst, da de er relativt enkle. Vi har også satt opp en IAM -bruker med administratorAccess -policyen. De viktige trinnene i denne guiden er skissert her:

  1. Opprette sikkerhetsgrupper og sjekke databasekobling.
  2. Bruker AWS Secret Manager for å håndtere databaseinformasjon.
  3. Opprette en IAM -rolle og definere en policy for å la RDS -proxy få tilgang til hemmeligheter opprettet med AWS Secret Manager.
  4. Opprette og konfigurere RDS -proxy.
  5. Koble til RDS DB -forekomsten via RDS -proxy.

Komme i gang med RDS -proxy

Jeg tror det overordnede scenariet nå skal ryddes for leseren. Bildet nedenfor viser oversikten over denne guiden:

Opprette sikkerhetsgrupper og sjekke databasekobling.

Trinn 1. Naviger til AWS VPC -delen, og velg sikkerhetsgrupper fra navigasjonsruten på venstre side:

Steg 2. Klikk nå på 'Opprett sikkerhetsgruppe' -knappen og legg til en sikkerhetsgruppe (her 'EC2_secgrp') for EC2 -forekomsten. Skriv inn de grunnleggende detaljene i henhold til ditt valg:

Legg til en inngående regel for å tillate inngående (innkommende) SSH -tilkobling til EC2. Legg til en utgående regel for å tillate all utgående (utgående) trafikk fra EC2 -forekomsten.

Legg til en annen sikkerhetsgruppe (her 'rds_secgrp') for RDS -forekomsten og skriv inn de grunnleggende detaljene:

Legg til en inngående regel for å tillate bare TCP -tilkobling på RDS DB -forekomsten (på port 3306) fra EC2 -forekomsten (spesifiser EC2_secgrp i kilden). Legg til en annen inngående regel for bare å tillate TCP -tilkobling på RDS DB -forekomsten (på port 3306) fra proxy (spesifiser proxy_secgrp i kilden). Legg til den utgående regelen for å tillate all utgående (utgående) trafikk fra RDS -forekomsten.

Tilsvarende, legg til en sikkerhetsgruppe til for proxy (proxy_secgrp) og skriv inn grunnleggende detaljer:

De tre sikkerhetsgruppene vi opprettet er nå tilgjengelige:

Ved å velge hvilken som helst sikkerhetsgruppe, kan du se detaljene:

1) EC2_SECGRP: Vedlagt med EC2 -forekomsten.

2) RDS_SECGRP: Vedlagt med RDS -forekomsten.

3) Proxy_secgrp: Vedlagt proxy.

Trinn 3. Gå nå til RDS-dashbordet og velg målet RDS DB-forekomsten (her 'DB-Linuxhint'). Under fanen 'Connectivity & Security', finn sluttpunktet for DB -forekomsten og kopier det til et sted, da vi vil bruke det til å koble fra EC2 -forekomsten i de kommende trinnene.

Trinn 4. Gå til EC2 -dashbordet og velg EC2 -forekomsten du vil koble til RDS DB -forekomsten. Velg alternativet 'Connect':

Trinn 5. Velg alternativet 'EC2 Instance Connect', som er en nettleserbasert SSH-forbindelse:

Et nytt nettleservindu åpnes opp når du velger 'Connect' -knappen, som vist her:

Trinn 6. Fra dette CLI -vinduet, bruk kommandoformatet nedenfor for å teste EC2 -tilkoblingen med RDS DB -forekomsten:

$ mysql -h -S 3306 -u -p

Bruk din RDS DB -forekomst endepunkt i stedet for 'RDS DB Endpoint' og navnet på DB -brukeren i stedet for 'brukernavn' ('admin' i vårt tilfelle). Skriv inn DB -passordet når du blir spurt. Når autentiseringen er vellykket, vil du se MySQL -ledeteksten på CLI:

Bruker AWS Secret Manager for å håndtere databaseinformasjon.

For at RDS -proxy skal kunne koble seg til DB -brukeren, trenger DB -brukeren en hemmelighet i AWS Secrets Manager. Disse hemmelighetene brukes av RDS -proxy for å håndtere et databaseforbindelsesbasseng.

Trinn 1. Gå til 'Secrets Manager' -delen fra AWS -konsollen og velg 'Lagre en ny hemmelighet':

Steg 2. Fra vinduet "Velg hemmelig type", velg alternativet 'legitimasjon for RDS -databasen.'I underavsnitt nedenfor, skriv inn brukernavnet og passordet for databasebrukeren din:

Trinn 3. Deretter, under rullegardinmenyen 'Velg "Select the Encryption Key', velg 'DefaultEnCryptionKey' og velg deretter Target RDS DB som du konfigurerer hemmeligheten for tilgang til tilgang. Klikk Neste.

Trinn 4. Gi nå et passende navn til hemmeligheten din og en kort beskrivelse for det (valgfritt).

Trinn 5. Vi hopper over taggene og automatiske hemmelige rotasjonsalternativer; For nå, klikk Neste:

Trinn 6. Du kan se noen konfigurasjonsinnstillinger relatert til hemmeligheten og noen eksempler på koden. Bare hopp over dem og fortsett å lagre hemmeligheten din ved å trykke på "Store" -knappen:

Når trinnene ovenfor er ferdig, vises ditt hemmelige navn på Secrets Manager -siden. Av de hemmelige detaljene, kopierer du ARN for hemmeligheten din, som vi trenger senere.

Opprette en IAM -rolle og definere en policy for å la RDS -proxy få tilgang til hemmeligheter opprettet med AWS Secret Manager.

Trinn 1. Gå til IAM -dashbordet, og velg 'Roller' fra venstre panel og velg deretter 'Opprett rolle':

Trinn 3. Fra flere alternativer under 'RDS' overskrift, velg 'RDS - Legg til rolle i databasen':

Trinn 4. Velg nå 'Neste' og skriv inn "Opprett policy" -knappen. En ny nettleser åpnes her; Velg JSON -fanen og erstatt de allerede politiske uttalelsene med følgende:


"Versjon": "2012-10-17",
"Uttalelse": [

"Sid": "VisualEditor0",
"Effekt": "Tillat",
"Handling": [
"SecretsManager: getrandompassword",
"SecretsManager: CreateSecret",
"SecretsManager: Listsecrets"
],
"Ressurs": "*"
,

"Sid": "VisualEditor1",
"Effekt": "Tillat",
"Handling": "SecretsManager:*",
"Ressurs": [
"Put_your_secret_arn_here"
]

]

Bare bytt ut etiketten 'put_your_secret_arn_here' med den hemmelige ARN -verdien i ditt tilfelle. Legg til tagger (valgfritt) og fortsett med å velge 'Review Policy' og gi et navn ('RDS-Proxy-Policy' i vårt tilfelle) til policyen din og trykker på 'Opprett policy' -knappen.

Trinn 5. Etter å ha konfigurert policyen din, går du tilbake til 'roller' -vinduet i nettleseren og velger 'oppdater' -knappen og søk og velg policyen du nettopp opprettet:

Trinn 6. Gi nå et navn til din rolle og en kort beskrivelse, og eventuelt kan du legge til taggene her. Fortsett med å velge 'Neste: Gjennomgang' og velg til slutt 'Lag rolle.'Din rolle er nå skapt:

Opprette og konfigurere RDS -proxy.

Det er nå på tide å opprette og konfigurere RDS -proxy, som til slutt vil bruke vår sikkerhetsgruppe RDS_SECGRP, The Secret og rollen vi opprettet ovenfor.

Trinn 1. Gå til RDS -dashbordet og velg 'PROXIES' og velg deretter 'Opprett proxy':

Steg 2. Inne i "Create Proxy" -veiviseren må vi først oppgi et navn eller identifikator til proxy, som er 'Proxy-LH' i vårt tilfelle.

Trinn 3. Fjern merket for boksen som tilsvarer 'Krev transportlagssikkerhet.'

Trinn 4. Hold verdien 'Idle Client Connection Timeout' til standardverdien på 30 minutter.

Trinn 5. Under 'Target Group Configuration,' Velg målet RDS DB-forekomsten fra rullegardinmenyen Database.

Trinn 6. Hold verdien 'Connection Pool Maximum Connections' til standardverdien på '100':

Trinn 7. Under tilkoblingsseksjonen er det flere felt:

  1. Secrets Manager Secret: Her, velg hemmeligheten vi opprettet tidligere i denne guiden (overskrift 1).
  2. IAM -rolle: Velg rollen vi opprettet tidligere (overskrift 2).
  3. IAM -godkjenning: Deaktivert for nå.
  4. Undernett: Velg minst to undernett i forskjellige tilgjengelighetssoner.
  5. Ytterligere tilkoblingskonfigurasjon (VPC Security Group): Her bruker du 'Proxy_secgrp' sikkerhetsgruppe.

Trinn 8. Under den 'avanserte konfigurasjonen', sjekk 'Aktiver forbedret logging' og velg til slutt 'Opprett proxy.'

Nå, vent til fullmakten blir tilgjengelig, og når det er gjort, kopierer du fullmaktspunktet for å teste tilkoblingen fra EC2.

Koble til RDS DB -forekomsten via RDS -proxy.

Nå vil vi sjekke tilkoblingen til vår RDS DB -forekomst fra EC2.

Trinn 1. Gå til EC2 Management Dashboard, velg forekomster og velg mål EC2 -forekomsten der vi vil koble til RDS DB -forekomsten. Velg 'Connect.'

Steg 2. Velg alternativet 'EC2 Instance Connect', som er en nettleserbasert SSH-forbindelse:

Et nytt nettleservindu åpnes når du velger 'Connect' -knappen som tidligere i denne opplæringen.

Trinn 3. Fra dette CLI -vinduet, bruk kommandoformatet nedenfor for å teste EC2 -tilkoblingen med RDS DB -forekomsten via RDS Proxy -endepunktet:

$ mysql -h -S 3306 -u -p

Bruk RDS -proxy -endepunktet i stedet for 'Proxy Endpoint' og navnet på DB -brukeren i stedet for 'Brukernavn.'Skriv inn DB -passordet når du blir spurt. Når autentiseringen er vellykket, vil du se MySQL -ledeteksten på CLI:

Konklusjon

I denne guiden har vi lært om å sette opp en RDS -proxy på AWS. Det er veldig gunstig for store applikasjoner, inkludert serverløse, som har mange åpne tilkoblinger. Det reduserer failovertiden for Aurora og RDS -databaser betydelig. Det kan enkelt brukes til mange applikasjoner uten behov for å endre koden.