Perché non riesco a connettermi alla mia istanza database di Amazon RDS o di Amazon Aurora utilizzando RDS Proxy?

7 minuti di lettura
0

Non riesco a connettermi alla mia istanza database di Amazon Relational Database Service (Amazon RDS) o di Amazon Aurora tramite Server proxy per Amazon RDS.

Breve descrizione

È possibile che si verifichino errori di connessione con RDS Proxy per diversi motivi. I seguenti problemi sono le cause più comuni degli errori di connessione di RDS Proxy, anche quando quest'ultimo si trova allo stato Disponibile:

  • Le regole del gruppo di sicurezza, nell'istanza database o in RDS Proxy, impediscono la connessione.
  • RDS Proxy funziona solo all'interno di un cloud privato virtuale (VPC), quindi le connessioni dall'esterno della rete privata non vanno a buon fine.
  • L'istanza database non accetta la connessione a causa di una modifica oppure perché si trova in uno stato non disponibile.
  • Per la modalità con nome utente e password nativi: hai utilizzato credenziali di autenticazione errate.
  • Per l'autenticazione del database di AWS Identity and Access Management (IAM): il ruolo o l'utente IAM associato al client non è autorizzato a connettersi a RDS Proxy.

Risoluzione

Nota: se utilizzi RDS Proxy con un'istanza database RDS o un cluster di database Aurora che impiega l'autenticazione IAM, tutti gli utenti devono autenticare le proprie connessioni. Assicurati che tutti gli utenti che si connettono tramite un proxy autentichino le proprie connessioni con nome utente e password. Per ulteriori informazioni sul supporto IAM per il RDS Proxy, consulta Configurazione delle policy IAM.

Verifica che il client possa raggiungere RDS Proxy all'interno della rete privata di un VPC

RDS Proxy può essere usato solo all'interno di un VPC e non può essere pubblicamente accessibile (sebbene l'istanza database possa esserlo). Se ci si connette dall'esterno di una rete privata, la connessione scade. Prendi nota dei seguenti attributi per la connessione all'interno di un VPC:

  • Se il client proviene dallo stesso VPC, verifica che il gruppo di sicurezza di RDS Proxy consenta le connessioni dal client nella porta predefinita. Le porte predefinite sono 3306 per MySQL e 5432 per PostgreSQL. Aggiungi regole al gruppo di sicurezza associato al VPC per consentire il traffico richiesto.
  • Se il client proviene da un altro VPC, utilizza il peering VPC. Per gestire il traffico proveniente dall'altro VPC, consulta il gruppo di sicurezza e le tabelle di routing.
  • Se il tuo client proviene da una rete aziendale, utilizza AWS Direct Connect o VPN sito-sito AWS per connetterti direttamente al VPC.
  • Se il tuo client deve connettersi tramite Internet pubblico, utilizza il Tunneling SSH come host intermedio. Ciò consente di connettersi a RDS Proxy all'interno dello stesso VPC.

Verifica che RDS Proxy sia in grado di connettersi all'istanza database

Per gestire il pool di connessioni, RDS Proxy deve stabilire una connessione con l'istanza database. Questa connessione usa il nome utente e la password memorizzati in AWS Secrets Manager. Usa le seguenti best practice per assicurarti che RDS Proxy possa connettersi all'istanza database:

  • Verifica che le credenziali in Secrets Manager siano valide e possano connettersi all'istanza database.
  • Assicurati che il gruppo di sicurezza dell'istanza database consenta il traffico proveniente da RDS Proxy. A tale scopo, è innanzitutto necessario determinare il gruppo di sicurezza dell'istanza database e di RDS Proxy.

Se RDS Proxy e l'istanza database usano lo stesso gruppo di sicurezza, verifica che nelle regole in entrata ci sia la regola di ereditarietà del gruppo di sicurezza:

Inbound rules for the RDS instance in order to allow connections from RDS proxy:
Protocol : TCP
Port Range : Port on which the DB engine is running on the RDS instance
Source : Common security group (for self referencing the security group)

Se usano gruppi di sicurezza diversi, indica il gruppo di sicurezza di RDS Proxy nella regola in entrata del gruppo di sicurezza dell'istanza database:

Inbound rules for the RDS instance in order to allow connections from RDS proxy:
Protocol : TCP
Port range : Port on which the DB engine is running on the DB instance
Source : Security group of RDS Proxy

RDS Proxy avvia la connessione per gestire il pool. Pertanto, è necessario consentire al traffico in uscita di raggiungere l'istanza database. A tale scopo, la regola in uscita del gruppo di sicurezza di RDS Proxy deve consentire il traffico richiesto:

Protocol : TCP
Port range : Port on which the DB engine is running on the RDS instance
Destination : Security group of DB instance

Note: If you already have the following outbound rules attached to the security group of the RDS Proxy, then there is no need to explicitly add the security group.
Outbound rules: ALL --- 0.0.0.0/0

Il ruolo IAM deve avere la policy di attendibilità per rds.amazonaws.com.

La policy IAM deve avere l'accesso necessario per richiamare l'azione secretsmanager:GetSecretValue in relazione al segreto.

La policy IAM deve avere l'accesso per richiamare l'azione KMS:Decrypt sulla chiave del Sistema AWS di gestione delle chiavi che ha crittografato il segreto. È possibile ottenere i dettagli della chiave KMS usata da Secrets Manager mediante la console AWS KMS. Occorre notare che l'ID della chiave KMS deve essere utilizzato per la sezione Risorse. Consulta il seguente esempio di policy:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "secretsmanager:GetSecretValue",
      "Resource": [
        "arn:aws:secretsmanager:region:account_id:secret:secret_name"
      ]
    },
    {
      "Effect": "Allow",
      "Action": "kms:Decrypt",
      "Resource": "arn:aws:kms:region:account_id:key/key_id",
      "Condition": {
        "StringEquals": {
          "kms:ViaService": "secretsmanager.region.amazonaws.com"
        }
      }
    }
  ]
}

Nota: assicurati di sostituire account_id, secret_name, region, account_id e key_id con i valori pertinenti.

  • Per ulteriori informazioni su cosa potrebbe impedire al proxy di connettersi all'istanza database, esegui il comando describe-db-proxy-targets. Quindi, rivedi la struttura TargetHealth nell'output. Per ulteriori informazioni sullo stato della connessione della destinazione RDS Proxy, consulta i campi Stato, Motivo e Descrizione:
aws rds describe-db-proxy-targets --db-proxy-name $DB_PROXY_NAME

Per ulteriori informazioni, consulta Verifica della connettività a un proxy.

Verifica che attualmente l'istanza database accetti le connessioni

Controlla lo stato attuale della tua istanza database e verifica che sia nello stato DISPONIBILE. Per ulteriori informazioni sulla revisione dello stato della tua istanza database, consulta la documentazione di Amazon RDS e Aurora sullo stato dell'istanza database.

Verifica che il ruolo o l'utente IAM sia associato a un client con le autorizzazioni richieste

Nota: questo passaggio è richiesto solo se hai attivato l'autenticazione IAM DB in RDS Proxy.

Il client deve generare un token per autorizzare la richiesta di connessione. A tale scopo, l'utente IAM e il ruolo IAM associati a questo client devono disporre della policy IAM rds-db:connect. Inoltre, assicurati di utilizzare l'ID RDS Proxy nell'ARN per l'attributo Resources nella policy:

"Resource": "arn:aws:rds-db:us-east-2:1234567890:dbuser:prx-ABCDEFGHIJKL01234/db_user"

Per ulteriori informazioni, consulta Creazione e utilizzo di una policy IAM per l'accesso al database IAM.

Esamina i log RDS Proxy

Attiva la funzionalità Registrazione avanzata di RDS Proxy. La registrazione fornisce informazioni dettagliate sulle istruzioni SQL. Questi log sono una risorsa utile per comprendere meglio determinati problemi di autenticazione. Poiché ciò aumenta il sovraccarico delle prestazioni, è consigliabile attivarli solo per il debug. Per ridurre al minimo il sovraccarico, RDS Proxy disattiva automaticamente questa impostazione 24 ore dopo l'attivazione.

Informazioni correlate

Utilizzo di Server proxy per Amazon RDS

Configurare connessioni al database condivise con Server proxy per Amazon RDS