Come posso consentire agli utenti di autenticarsi in un'istanza database Amazon RDS per MySQL utilizzando le proprie credenziali IAM?
Desidero connettermi a un'istanza database di Amazon Relational Database Service (Amazon RDS) che esegue MySQL. Desidero utilizzare le credenziali di AWS Identity and Access Management (IAM) invece dei metodi di autenticazione nativi.
Breve descrizione
Gli utenti possono connettersi a un'istanza database o a un cluster Amazon RDS utilizzando le credenziali per il ruolo o per l'utente IAM e un token di autenticazione. L'autenticazione del database IAM è più sicura dei metodi di autenticazione nativi per i seguenti motivi:
- I token di autenticazione del database IAM vengono generati utilizzando le chiavi di accesso AWS. Non è necessario memorizzare le credenziali utente del database.
- I token di autenticazione hanno una durata di 15 minuti, quindi non è necessario imporre la reimpostazione della password.
- L'autenticazione del database IAM richiede una connessione SSL (Secure Socket Layer). Tutti i dati trasmessi da e verso l'istanza database sono crittografati.
- Se la tua applicazione è in esecuzione su Amazon Elastic Compute Cloud (Amazon EC2), puoi utilizzare le credenziali del profilo dell'istanza EC2 per accedere al database. Non è necessario memorizzare le password del database sulla tua istanza.
Per configurare l'autenticazione del database IAM utilizzando i ruoli IAM, segui questi passaggi:
- Attiva l'autenticazione del database IAM sull'istanza database RDS.
- Crea un account utente del database che utilizzi un token di autenticazione AWS.
- Aggiungi una policy IAM che associ l'utente del database al ruolo IAM.
- Crea un ruolo IAM che consenta l'accesso ad Amazon RDS.
- Associa il ruolo IAM all'istanza Amazon EC2.
- Genera un token di autenticazione AWS per identificare il ruolo IAM.
- Scarica il file del certificato root SSL o il file del pacchetto di certificati.
- Connettiti all'istanza database RDS utilizzando le credenziali del ruolo IAM e il token di autenticazione.
- Connettiti all'istanza database RDS utilizzando le credenziali del ruolo IAM e i certificati SSL.
Risoluzione
Prima di iniziare, devi avviare un'istanza database che supporti l'autenticazione del database IAM e un'istanza Amazon EC2 per connetterti al database.
Attiva l'autenticazione del database IAM sull'istanza database RDS
Puoi attivare l'autenticazione del database IAM utilizzando la console Amazon RDS, l'interfaccia della linea di comando AWS (AWS CLI) o l'API Amazon RDS. Se utilizzi la console Amazon RDS per modificare l'istanza database, scegli Applica immediatamente per attivare l'autenticazione del database IAM. L'attivazione dell'autenticazione IAM richiede una breve interruzione. Per ulteriori informazioni sulle modifiche che richiedono interruzioni, consulta la sezione Istanze DB Amazon RDS.
Nota: se scegli l'opzione Applica immediatamente, anche tutte le modifiche in sospeso verranno applicate immediatamente anziché durante il periodo di manutenzione. Ciò può causare un'interruzione prolungata dell'istanza. Per ulteriori informazioni, consulta la sezione Utilizzo dell'impostazione Applica immediatamente.
Crea un account utente del database che utilizzi un token di autenticazione AWS
1. Connettiti all'istanza database o all'endpoint del cluster eseguendo il comando seguente. Inserisci la password principale per accedere.
$ mysql -h {database or cluster endpoint} -P {port number database is listening on} -u {master db username} -p
2. Crea un account utente del database che utilizzi un token di autenticazione AWS anziché una password:
CREATE USER {dbusername} IDENTIFIED WITH AWSAuthenticationPlugin as 'RDS';
3. Per impostazione predefinita, l'utente del database viene creato senza privilegi. Questo verrà visualizzato come GRANT USAGE quando si esegue il comando SHOW GRANTS FOR {dbusername}. Per richiedere a un account utente di connettersi tramite SSL, esegui questo comando:
ALTER USER {dbusername} REQUIRE SSL;
4. Esegui il comando exit per chiudere MySQL. Quindi disconnettiti dall'istanza database.
Aggiungi una policy IAM che associ l'utente del database al ruolo IAM
1. Apri la console IAM.
2. Scegli Policy dal pannello di navigazione.
3. Scegli Crea policy.
4. Inserisci una policy che consenta l'operazione rds-db:connect all'utente richiesto. Per ulteriori informazioni sulla creazione di questa policy, consulta la sezione Creazione e utilizzo di una policy IAM per l'accesso al database IAM.
Nota: assicurati di modificare il valore Risorsa con i dettagli delle risorse del tuo database, come ad esempio l'identificativo dell'istanza database e il nome utente del database.
5. Scegli Successivo: Tag.
6. Scegli Successivo: Rivedi.
7. In Nome, inserisci un nome per la policy.
8. Scegli Crea policy.
Crea un ruolo IAM che consenta l'accesso ad Amazon RDS
1. Apri la console IAM.
2. Dal pannello di navigazione scegli Ruoli.
3. Scegli Crea ruolo.
4. Scegli Servizio AWS.
5. Scegli EC2.
6. In Seleziona il tuo caso d'uso, scegli EC2, quindi scegli Successivo: Autorizzazioni.
7. Nella barra di ricerca, trova la policy IAM che hai creato in precedenza nella sezione "Aggiungi una policy IAM che associ l'utente del database".
8. Scegli Successivo: Tag.
9. Scegli Successivo: Rivedi.
10. In Nome ruolo, inserisci un nome per questo ruolo IAM.
11. Scegli Crea ruolo.
Associa il ruolo IAM all'istanza Amazon EC2
1. Apri la console Amazon EC2.
2. Scegli l'istanza EC2 che usi per connetterti ad Amazon RDS.
3. Associa il ruolo IAM appena creato all'istanza EC2.
4. Connettiti alla tua istanza EC2 tramite SSH.
Genera un token di autenticazione AWS per identificare il ruolo IAM
Dopo esserti connesso alla tua istanza Amazon EC2, esegui il seguente comando AWS CLI per generare un token di autenticazione.
Nota: se ricevi messaggi di errore durante l'esecuzione dei comandi dell'interfaccia della linea di comando AWS (AWS CLI), assicurati di utilizzare una versione recente di AWS CLI.
$ aws rds generate-db-auth-token --hostname {db or cluster endpoint} --port 3306 --username {db username}
Copia e archivia questo token di autenticazione per un uso successivo. Il token scade entro 15 minuti dalla creazione.
In alternativa, puoi generare un token utilizzando un SDK AWS.
Scarica il file del certificato root SSL o il file del pacchetto di certificati
Esegui questo comando per scaricare un certificato root che funzioni per tutte le regioni:
$ wget https://s3.amazonaws.com/rds-downloads/rds-ca-2019-root.pem
Connettiti all'istanza database RDS utilizzando le credenziali del ruolo IAM e il token di autenticazione
Dopo aver scaricato il file del certificato, esegui uno dei seguenti comandi per connetterti all'istanza database con SSL.
Nota: se la tua applicazione non accetta catene di certificati, esegui il comando seguente per scaricare il pacchetto di certificati:
$ wget https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem RDSHOST="rdsmysql.abcdefghijk.us-west-2.rds.amazonaws.com" TOKEN="$(aws rds generate-db-auth-token --hostname $RDSHOST --port 3306 --region us-west-2 --username {db username})"
A seconda del certificato che stai utilizzando (RootCA oppure Bundle), esegui uno dei seguenti comandi:
Comando per RootCA:
mysql --host=$RDSHOST --port=3306 --ssl-ca=/sample_dir/rds-ca-2019-root.pem --enable-cleartext-plugin --user={db username} --password=$TOKEN
Comando per Bundle:
mysql --host=$RDSHOST --port=3306 --ssl-ca=/sample_dir/rds-combined-ca-bundle.pem --enable-cleartext-plugin --user={db username} --password=$TOKEN
Nota: se utilizzi un client MariaDB, l'opzione --enable-cleartext-plugin non è richiesta.
Connettiti all'istanza database RDS utilizzando le credenziali del ruolo IAM e i certificati SSL
Dopo aver scaricato il file del certificato, connettiti all'istanza database con SSL. Per ulteriori informazioni, consulta la sezione Connessione a un'istanza database che esegue il motore di database di MySQL.
Informazioni correlate
Autenticazione del database IAM per MariaDB, MySQL e PostgreSQL
Contenuto pertinente
- Perché la mia istanza Amazon EC2 utilizza le credenziali utente IAM anziché le credenziali di ruolo?AWS UFFICIALEAggiornata 3 anni fa
- AWS UFFICIALEAggiornata 3 anni fa
- AWS UFFICIALEAggiornata 2 anni fa