Come posso connettermi a un'istanza database Amazon RDS privata da un computer locale utilizzando un'istanza Amazon EC2 come host bastione?

7 minuti di lettura
0

Desidero utilizzare un'istanza Amazon Elastic Compute Cloud (Amazon EC2) come host bastione (di salto). Quindi, desidero utilizzare questa istanza per connettermi a un'istanza database Amazon Relational Database Service (Amazon RDS) privata da un computer locale.

Breve descrizione

Per utilizzare un'istanza Amazon EC2 come server di salto per connetterti a un'istanza database Amazon RDS privata da un computer locale, completa la seguente procedura:

1.    Avvia e configura la tua istanza EC2 e poi configura le impostazioni di rete dell'istanza.

2.    Configura i gruppi di sicurezza dell'istanza database RDS.

3.    Connettiti all'istanza database RDS dal computer locale.

Importante: per connettersi a un'istanza database privata di Amazon RDS o Amazon Aurora, è consigliabile utilizzare una VPN o AWS Direct Connect. Se non puoi utilizzare queste opzioni, usa un host bastione. La seguente configurazione di esempio utilizza i gruppi di sicurezza per limitare l'accesso. Tuttavia, puoi limitare la lista di controllo degli accessi alla rete delle sottoreti per rendere la connessione più sicura. Puoi inoltre limitare l'ambito del percorso del gateway Internet per utilizzare un intervallo più piccolo anziché 0.0.0.0/0. Ad esempio, quando aggiungi il gateway Internet, aggiungi solo l'intervallo CIDR richiesto nella tabella di instradamento per la destinazione. Per ulteriori informazioni, consulta Opzioni di routing di esempio.

Risoluzione

La seguente configurazione di esempio è relativa a un'istanza Amazon RDS per MySQL che si trova in un Amazon Virtual Private Cloud (Amazon VPC). L'istanza dispone di gruppi di sicurezza impostati per un'istanza EC2.

Avvio e configurazione dell'istanza EC2

1.    Apri la console Amazon EC2, quindi scegli Launch instance (Avvia istanza).

2.    Seleziona un'Amazon Machine Image (AMI).

3.    Scegli un tipo di istanza, quindi scegli Next: Configure Instance Details (Successivo: Configura dettagli dell'istanza).

4.    Per Network (Rete), scegli il VPC utilizzato dall'istanza database RDS.

5.    Per Subnet (Sottorete), seleziona la sottorete che ha un gateway Internet nella sua tabella di instradamento. Se non disponi già di un gateway Internet, puoi aggiungerlo alla sottorete dopo aver creato l'istanza EC2.

6.    Per Auto-assign public IP (Assegna automaticamente IP pubblico), assicurati che l'opzione Enable (Abilita) sia selezionata.

7.    Scegli Next: Add Storage (Successivo: Aggiungi spazio di archiviazione), quindi modifica lo spazio di archiviazione secondo necessità.

8.    Scegli Next: Add Tags (Successivo: Aggiungi tag), quindi aggiungi tag secondo necessità.

9.    Scegli Next: Configure Security Group (Successivo: configura gruppo di sicurezza), quindi scegli Add Rule (Aggiungi regola) e poi inserisci quanto segue: Type (Tipo): inserisci Custom TCP Rule (Regola TCP personalizzata). Protocol (Protocollo): inserisci TCP. Port Range (Intervallo porte): inserisci 22. Source (Origine): inserisci l'indirizzo IP del computer locale. Per impostazione predefinita, l'indirizzo IP di origine è aperto a tutti, ma puoi limitare l'accesso al tuo indirizzo IP pubblico locale.

10.    Scegli Review and Launch (Rivedi e avvia).

11.    Scegli Launch (Avvia).

Configura i gruppi di sicurezza dell'istanza database RDS

Nota: per connettere una o più istanze EC2 a un database RDS, consulta la pagina Connessione automatica dell'istanza EC2 al database RDS.

1.    Apri la console di Amazon RDS, quindi scegli Databases (Database) dal pannello di navigazione.

2.    Scegli il nome dell'istanza database RDS. Oppure, crea un'istanza database RDS, se non ne hai già una.

3.    Scegli la scheda Connectivity & security (Connettività e sicurezza).

4.    Nella sezione Security (Sicurezza), scegli il link sotto VPC security groups (Gruppi di sicurezza VPC).

5.    Seleziona il gruppo di sicurezza, scegli Actions (Operazioni), quindi seleziona Edit inbound rules (Modifica regole in entrata).

6.    Scegli Add rule (Aggiungi regola), quindi inserisci quanto segue: Type (Tipo): inserisci Custom TCP Rule (Regola TCP personalizzata). Protocol (Protocollo): inserisci TCP. Port Range (Intervallo porte): inserisci la porta dell'istanza database RDS. Source (Origine): inserisci l'indirizzo IP privato dell'istanza EC2.

7.    Scegli Save (Salva).

Questa configurazione per il gruppo di sicurezza permette il traffico dall'indirizzo IP privato dell'istanza EC2. Se l'istanza EC2 e l'istanza database RDS utilizzano lo stesso VPC, non è necessario modificare la tabella di routing utilizzata dall'istanza database RDS. Se il VPC è diverso, crea una connessione peering VPC per consentire le connessioni tra questi VPC.

Nota: fai attenzione se utilizzi una soluzione più scalabile. Ad esempio, se utilizzi l'ID del gruppo di sicurezza in una regola di tale gruppo, assicurati che non limiti l'accesso a una sola istanza. Configura invece la regola per limitare l'accesso a qualsiasi risorsa che utilizza l'ID del gruppo di sicurezza specifico.

Connessione all'istanza database RDS dal proprio computer locale

A seconda del client utilizzato, i passaggi per la connessione all'istanza database RDS possono variare. Per ulteriori informazioni, consulta Connessione a un'istanza database Amazon RDS. Se utilizzi MySQL, una best practice consiste nell'utilizzare SSL per crittografare la connessione tra l'applicazione client e Amazon RDS.

L'esempio seguente utilizza il client MySQL Workbench per connettersi all'host bastione:

1.    Avvia una nuova connessione, quindi seleziona Standard TCP/IP over SSH (TCP/IP su SSH standard) per Connection Method (Metodo di connessione).

2.    Per le impostazioni SSH, inserisci i seguenti dettagli sull'istanza EC2: Auto-assign Public IP (Assegna automaticamente IP pubblico): assicurati che l'opzione Enable (Abilita) sia selezionata per DNS Hostnames (Nomi host DNS). SSH Hostname (Nome host SSH): inserisci il nome DNS pubblico dell'istanza EC2 o il relativo indirizzo IP pubblico. Nome utente SSH: inserisci il nome utente per l'istanza EC2. Ad esempio, ec2-user è il nome utente per le macchine EC2 Linux. SSH Key File (File della chiave SSH): seleziona la chiave privata utilizzata quando hai creato l'istanza EC2. Nota: un'istanza EC2 avviata con un indirizzo IP pubblico ha un DNS pubblico se il VPC in cui è stata creata ha DNS Hostnames (Nomi host DNS) attivato.

3.    Inserisci i seguenti dettagli per le impostazioni dell'istanza MySQL: MySQL Hostname (Nome host MySQL): inserisci l'endpoint dell'istanza database RDS. MySQL Server port (Porta server MySQL): inserisci 3306. Oppure, se utilizzi una porta personalizzata, inserisci il numero di porta personalizzato. Username (Nome utente): inserisci il nome utente principale dell'istanza database RDS. Password: inserisci la password principale dell'istanza database RDS.

4.    Scegli Test Connection (Test connessione).

5.    Una volta stabilita la connessione, inserisci un nome per la connessione e salvala.

Per connetterti dal tuo client MySQL locale a un'istanza RDS privata utilizzando un tunnel SSH, consulta i seguenti comandi.

Linux o macOS:

1.    Esegui il seguente comando per configurare un tunnel SSH:

ssh -i "YOUR_EC2_KEY" -L LOCAL_PORT:RDS_ENDPOINT:REMOTE_PORT EC2_USER@EC2_HOST -N -f

Nota: sostituisci YOUR_EC2_KEY, LOCAL_PORT, RDS_ENDPOINT, REMOTE_PORT, EC2_USER e EC2_HOST con le informazioni pertinenti.

Dopo che i campi personalizzati vengono completati nel comando precedente, quest'ultimo ha un aspetto simile al seguente esempio:

ssh -i "ec2Key.pem" -L 3336:rdsinstance.xxx.xxx.rds.amazonaws.com:3306 ec2-user@ec2-34-244-136-223.xxxcompute.amazonaws.com -N -f

2.    Esegui i seguenti comandi per verificare e confermare che il tunnel sia in ascolto sulla porta locale:

lsof -i4 -P | grep -i "listen" | grep LOCAL_PORT
nc -zv 127.0.0.1 LOCAL_PORT

Nota: sostituisci LOCAL_PORT con il numero della porta locale.

3.    Se il tunnel è in ascolto sulla porta locale in modo corretto, visualizzi un output simile al seguente:

lsof -i4 -P | grep -i "listen" | grep 3336
ssh       17692 user    8u  IPv4 0x3bc46bcfeffce12f      0t0  TCP localhost:3336 (LISTEN)

nc -zv 127.0.0.1 3336
Connection to 127.0.0.1 port 3336 [tcp/directv-tick] succeeded!

4.    Esegui il comando seguente per connetterti all'istanza RDS dal tuo computer locale utilizzando l'istanza EC2 come host bastione:

mysql -h 127.0.0.1 -P LOCAL_PORT -u RDS_USER -p

Nota: sostituisci LOCAL_PORT con il numero della porta locale e DB_USER con il nome utente del database RDS.


Informazioni correlate

Come posso risolvere i problemi durante la connessione alla mia istanza database di Amazon RDS?