Proxy Amazon RDS

Proxy Amazon RDS
Amazon RDS Proxy è un servizio proxy di database per AWS RDS per migliorare la scalabilità, la disponibilità, la sicurezza e la resilienza delle applicazioni. Questo è un ottimo vantaggio per le applicazioni con molte connessioni aperte al database e l'apertura e la chiusura frequenti di tali connessioni. Con il proxy AWS RDS, dobbiamo mantenere meno connessioni con il database.

Una grande caratteristica del proxy RDS è che è completamente gestito. A differenza dei tradizionali server proxy, non è necessario mantenere il mal di testa di distribuire, gestire e patcharli con i nuovi aggiornamenti. È un'applicazione senza server e si ridimensiona automaticamente per regolare le tue esigenze.

Il proxy Amazon RDS può essere utilizzato per applicazioni in base all'architettura senza server e a quelle in esecuzione in contenitori su ECS o EC2.

Come funziona il proxy RDS?

Con questa funzione, le applicazioni possono raggruppare e condividere le loro connessioni di database. Invece di collegare l'applicazione direttamente al database RDS, la colleghiamo al proxy RDS. Il proxy di Amazon RDS funge da mediatore di connessione tra il codice dell'applicazione e l'istanza RDS DB. Si riserva un pool di connessioni consolidate al database, che può essere riutilizzato e condiviso con altri client. In questo modo, solo alcune connessioni sono stabilite nel database, riducendo così il nuovo caricamento della connessione nel database.

In caso di failover del database, il proxy RDS revoca le richieste direttamente alla nuova istanza DB. Un altro vantaggio è che possiamo configurare l'autenticazione IAM per la sicurezza del database senza la necessità di inserire le credenziali del database direttamente nel codice dell'applicazione. Ha anche la disposizione di utilizzare AWS Secrets Manager per la gestione centrale delle credenziali del database.

Setup sperimentale

Per dimostrare come funziona il proxy RDS AWS, imposteremo un ambiente di lavoro con le seguenti risorse di rete:

  1. Un VPC AWS contiene un'istanza RDS DB e un'istanza EC2. (Stiamo usando il VPC predefinito fornito da AWS).
  2. Due sottoreti minimi e un gateway Internet
  3. Almeno due sottoreti in diverse zone di disponibilità.

Per rendere compatta questa guida, non descriveremo come impostare un'istanza EC2 e RDS in quanto sono relativamente semplici. Abbiamo anche impostato un utente IAM con la politica di AmministratorAccess. I passaggi significativi di questa guida sono descritti qui:

  1. Creazione di gruppi di sicurezza e controllo della connettività del database.
  2. Utilizzo di AWS Secret Manager per gestire le credenziali del database.
  3. Creazione di un ruolo IAM e definire una politica per consentire al proxy RDS di accedere ai segreti creati con AWS Secret Manager.
  4. Creazione e configurazione del proxy RDS.
  5. Connessione all'istanza RDS DB tramite proxy RDS.

Iniziare con il proxy RDS

Penso che lo scenario generale dovrebbe ora essere cancellato al lettore. L'immagine seguente mostra la panoramica di questa guida:

Creazione di gruppi di sicurezza e controllo della connettività del database.

Passo 1. Passare alla sezione VPC AWS e sotto la colonna "Sicurezza", selezionare i gruppi di sicurezza dal riquadro di navigazione sul lato sinistro:

Passo 2. Ora fai clic sul pulsante "Crea gruppo di sicurezza" e aggiungi un gruppo di sicurezza (qui "EC2_SECGRP") per l'istanza EC2. Inserisci i dettagli di base secondo la tua scelta:

Aggiungi una regola in entrata per consentire la connessione SSH in entrata (in arrivo) a EC2. Aggiungi una regola in uscita per consentire qualsiasi traffico in uscita (in uscita) dall'istanza EC2.

Aggiungi un altro gruppo di sicurezza (qui "RDS_SECGRP") per l'istanza RDS e inserisci i dettagli di base:

Aggiungi una regola in entrata per consentire solo la connessione TCP sull'istanza RDS DB (sulla porta 3306) dall'istanza EC2 (specificare EC2_SECGRP nella sorgente). Aggiungi un'altra regola in entrata per consentire solo la connessione TCP sull'istanza RDS DB (sulla porta 3306) dal proxy (specificare Proxy_SecGr nella sorgente). Aggiungi la regola in uscita per consentire qualsiasi traffico in uscita (in uscita) dall'istanza RDS.

Allo stesso modo, aggiungi un altro gruppo di sicurezza per Proxy (Proxy_Secgrp) e inserisci i dettagli di base:

I tre gruppi di sicurezza che abbiamo creato sono ora disponibili:

Selezionando qualsiasi gruppo di sicurezza, puoi vedere i suoi dettagli:

1) EC2_SECGRP: allegato all'istanza EC2.

2) RDS_SECGRP: allegato all'istanza RDS.

3) proxy_secgrp: allegato al proxy.

Passaggio 3. Ora vai al dashboard RDS e seleziona l'istanza RDS DB di destinazione (qui "DB-LinuxHint"). Nella scheda "Connettività e sicurezza", trova l'endpoint per l'istanza DB e copialo da qualche parte in quanto lo useremo connesso dall'istanza EC2 nei prossimi passaggi.

Passaggio 4. Vai alla dashboard EC2 e seleziona l'istanza EC2 da cui si desidera connettersi all'istanza RDS DB. Seleziona l'opzione "Connetti":

Passaggio 5. Nella procedura guidata "Connetti all'istanza", scegli l'opzione "EC2 Istance Connect", che è una connessione SSH basata sul browser:

Una nuova finestra del browser si aprirà quando si seleziona il pulsante "Connetti", come mostrato qui:

Passaggio 6. Da questa finestra CLI, utilizzare il formato di comando seguente per testare la connettività EC2 con l'istanza RDS DB:

$ mysql -h -P 3306 -u -P

Usa l'endpoint di istanza DB RDS al posto di "RDS DB Endpoint" e il nome dell'utente DB al posto del "nome utente" ("admin" nel nostro caso). Immettere la password DB quando viene chiesto. Quando l'autenticazione avrà successo, vedrai il prompt MySQL sulla CLI:

Utilizzo di AWS Secret Manager per gestire le credenziali del database.

Affinché il proxy RDS sia in grado di connettersi all'utente DB, l'utente DB ha bisogno di un segreto in AWS Secrets Manager. Questi segreti sono utilizzati dal proxy RDS per gestire un pool di connessioni di database.

Passo 1. Dirigiti alla sezione "Secrets Manager" dalla console AWS e seleziona "Memorizza un nuovo segreto":

Passo 2. Dalla finestra "Scegli il tipo segreto", seleziona le credenziali dell'opzione "per il database RDS.'Nella sottosezione seguente, immettere il nome utente e la password per l'utente del database:

Passaggio 3. Quindi, sotto il menu a discesa "Seleziona il tasto Crittico", scegli "DefaultIncryptionKey" e quindi seleziona il DB RDS di destinazione per il quale si sta configurando il segreto per l'accesso. Fai clic su Avanti.

Passaggio 4. Ora dai un nome adatto al tuo segreto e una breve descrizione (opzionale).

Passaggio 5. Stiamo saltando le etichette e le opzioni di rotazione segreta automatica; Per ora, fai clic su Avanti:

Passaggio 6. È possibile vedere alcune impostazioni di configurazione relative al segreto e ad un codice di esempio. Saltali e continua a salvare il tuo segreto premendo il pulsante "Store":

Quando vengono eseguiti i passaggi precedenti, il tuo nome segreto verrà visualizzato nella pagina Secrets Manager. Dai dettagli segreti, copia l'arn del tuo segreto, di cui avremo bisogno in seguito.

Creazione di un ruolo IAM e definire una politica per consentire al proxy RDS di accedere ai segreti creati con AWS Secret Manager.

Passo 1. Dirigiti al dashboard IAM e dal pannello sinistro, scegli i "ruoli" e quindi seleziona "Crea ruolo":

Passaggio 3. Dalle opzioni multiple sotto il file Intestazione "RDS", selezionare "RDS - Aggiungi ruolo al database":

Passaggio 4. Ora scegli "Avanti" e inserisci il pulsante "Crea Politico". Un nuovo browser si aprirà qui; Seleziona la scheda JSON e sostituisci le dichiarazioni già politiche con quella seguente:


"Versione": "2012-10-17",
"Dichiarazione": [

"SID": "VisualEditor0",
"Effetto": "Consenti",
"Azione": [
"SecretsManager: getRandompassword",
"SecretsManager: createsecret",
"SegretsManager: elencinets"
",
"Risorsa": "*"
,

"Sid": "VisualEditor1",
"Effetto": "Consenti",
"Azione": "SecretsManager:*",
"Risorsa": [
"Put_your_secret_arn_here"
"

"

Basta sostituire l'etichetta "Put_your_secret_arn_arn_ere" con il valore ARN segreto nel tuo caso. Aggiungi i tag (opzionali) e continua selezionando "Politica di revisione" e dai un nome ("RDS-Proxy-Policy" nel nostro caso) alla tua politica e premi il pulsante "Crea Politico".

Passaggio 5. Dopo aver configurato il criterio, torna alla finestra "Ruoli" sul browser e scegli il pulsante "Aggiorna" e cerca e seleziona il criterio che hai appena creato:

Passaggio 6. Ora dai un nome al tuo ruolo e una breve descrizione e facoltativamente puoi aggiungere i tag qui. Continua selezionando "Next: Review" e infine selezionare "Crea ruolo.'Il tuo ruolo è ora creato:

Creazione e configurazione del proxy RDS.

Ora è il momento di creare e configurare il proxy RDS, che alla fine utilizzerà il nostro gruppo di sicurezza RDS_SECGRP, il segreto e il ruolo che abbiamo creato sopra.

Passo 1. Vai alla dashboard RDS e seleziona "Proxy" e quindi seleziona "Crea proxy":

Passo 2. All'interno del mago "Crea proxy", dobbiamo prima dare un nome o un identificatore al proxy, che è "proxy-lh" nel nostro caso.

Passaggio 3. Deseleziona la scatola corrispondente a "richiedere sicurezza del livello di trasporto.'

Passaggio 4. Mantieni il valore "Idle Client Connection Timeout" al valore predefinito di 30 minuti.

Passaggio 5. In "Configurazione del gruppo target", selezionare l'istanza DB RDS di destinazione dal menu a discesa del database.

Passaggio 6. Mantieni il valore "Collegamenti massimi del pool di connessioni" al valore predefinito di "100":

Passaggio 7. Nell'ambito della sezione di connettività, ci sono diversi campi:

  1. Secrets Manager Secret: qui, seleziona il segreto che abbiamo creato in precedenza in questa guida (Intestazione 1).
  2. Ruolo iam: scegli il ruolo che abbiamo creato in precedenza (intestazione 2).
  3. Autenticazione iam: disabilitato per ora.
  4. Sottolinei: selezionare almeno due sottoreti in diverse zone di disponibilità.
  5. Configurazione di connettività aggiuntiva (gruppo di sicurezza VPC): qui, utilizzare il gruppo di sicurezza "Proxy_Secgrp".

Passaggio 8. Sotto la "configurazione avanzata", controlla la "registrazione migliorata" e infine selezionare "Crea proxy.'

Ora, attendi che il proxy sia disponibile e, quando è finito, copiare l'endpoint proxy per testare la connettività da EC2.

Connessione all'istanza RDS DB tramite proxy RDS.

Ora controlleremo la connettività della nostra istanza RDS DB dall'EC2.

Passo 1. Vai alla dashboard di gestione EC2, seleziona le istanze e seleziona l'istanza EC2 di destinazione da dove ci connetteremo all'istanza RDS DB. Scegli 'Connetti.'

Passo 2. Nella procedura guidata "Connetti all'istanza", scegli l'opzione "EC2 Istance Connect", che è una connessione SSH basata sul browser:

Una nuova finestra del browser si aprirà quando si seleziona il pulsante "Connetti" come prima in questo tutorial.

Passaggio 3. Da questa finestra CLI, utilizzare il formato di comando seguente per testare la connettività EC2 con l'istanza RDS DB tramite l'endpoint proxy RDS:

$ mysql -h -P 3306 -u -P

Usa l'endpoint proxy RDS al posto di "proxy endpoint" e il nome dell'utente DB al posto del nome utente.'Inserisci la password DB quando viene chiesto. Quando l'autenticazione avrà successo, vedrai il prompt MySQL sulla CLI:

Conclusione

In questa guida, abbiamo imparato a impostare un proxy RDS su AWS. È molto utile per le grandi applicazioni, incluso Serverless, che hanno molte connessioni aperte. Riduce in modo significativo il tempo di failover per i database Aurora e RDS. Può essere facilmente utilizzato per molte applicazioni senza la necessità di modificare il codice.