Comment puis-je autoriser les utilisateurs à s'authentifier auprès d'une instance de base de données Amazon RDS for MySQL à l'aide de leurs informations d'identification IAM ?

Lecture de 8 minute(s)
0

Je souhaite me connecter à une instance de base de données (DB) Amazon Relational Database Service (Amazon RDS) qui exécute MySQL. Je souhaite utiliser les informations d'identification AWS Identity and Access Management (IAM) au lieu des méthodes d'authentification natives.

Brève description

Les utilisateurs peuvent se connecter à une instance de base de données Amazon RDS ou à un cluster en utilisant les informations d'identification du rôle ou de l'utilisateur IAM, ainsi qu'un jeton d'authentification. L'authentification de base de données IAM est plus sécurisée que les méthodes d'authentification natives pour les raisons suivantes :

  • Les jetons d'authentification de base de données IAM sont générés à l'aide de vos clés d'accès AWS. Il n'est donc pas nécessaire de stocker les informations d'identification des utilisateurs de la base de données.
  • Les jetons d'authentification ont une durée de vie de 15 minutes. Vous n'avez donc pas besoin de réinitialiser votre mot de passe.
  • L'authentification de base de données IAM nécessite une connexion SSL (Secure Socket Layer). Toutes les données transmises depuis et vers votre instance de base de données sont chiffrées.
  • Si votre application s'exécute sur Amazon Elastic Compute Cloud (Amazon EC2), vous pouvez utiliser les informations d'identification de votre profil d'instance EC2 pour accéder à la base de données. Il n'est donc pas nécessaire de stocker les mots de passe de base de données sur votre instance.

Pour configurer l'authentification de base de données IAM à l'aide de rôles IAM, procédez comme suit :

  1. Activez l'authentification de base de données IAM sur l'instance de base de données RDS.
  2. Créez un compte utilisateur de base de données qui utilise un jeton d'authentification AWS.
  3. Ajoutez une politique IAM qui associe l'utilisateur de base de données au rôle IAM.
  4. Créez un rôle IAM qui autorise l'accès à Amazon RDS.
  5. Associez le rôle IAM à une instance Amazon EC2.
  6. Générez un jeton d'authentification AWS pour identifier le rôle IAM.
  7. Téléchargez le fichier de certificat racine SSL ou le fichier de lot de certificats.
  8. Connectez-vous à l'instance de base de données RDS à l'aide des informations d'identification du rôle IAM et du jeton d'authentification.
  9. Connectez-vous à l'instance de base de données RDS à l'aide des informations d'identification du rôle IAM et des certificats SSL.

Résolution

Avant de commencer, vous devez lancer une instance de base de données qui prend en charge l'authentification de base de données IAM et une instance Amazon EC2 pour vous connecter à la base de données.

Activez l'authentification de base de données IAM sur l'instance de base de données RDS

Vous pouvez activer l'authentification de base de données IAM à l'aide de la console Amazon RDS, de l'interface de la ligne de commande AWS (AWS CLI) ou de l'API Amazon RDS. Si vous utilisez la console Amazon RDS pour modifier l'instance de base de données, choisissez l'option Appliquer immédiatement pour activer l'authentification de base de données IAM. L'activation de l'authentification IAM nécessite une brève interruption. Pour en savoir plus sur les modifications qui nécessitent des interruptions, consultez la section Instances de base de données Amazon RDS.

Remarque : si vous choisissez l'option Appliquer immédiatement, toutes les modifications en attente seront également appliquées immédiatement plutôt que pendant votre fenêtre de maintenance. Cela peut entraîner une interruption prolongée de votre instance. Pour en savoir plus, consultez la section Utilisation du paramètre Appliquer immédiatement.

Créer un compte utilisateur de base de données qui utilise un jeton d'authentification AWS

1.    Exécutez la commande suivante pour vous connecter à l'instance de base de données ou au point de terminaison du cluster. Utilisez le mot de passe principal pour vous connecter.

$ mysql -h {database or cluster endpoint} -P {port number database is listening on} -u {master db username} -p

2.    Créez un compte utilisateur de base de données qui utilise un jeton d'authentification AWS au lieu d'un mot de passe :

CREATE USER {dbusername} IDENTIFIED WITH AWSAuthenticationPlugin as 'RDS';

3.    Par défaut, l'utilisateur de base de données est créé sans privilèges. La mention ACCORDER L'UTILISATION apparaît lorsque vous exécutez la commande MONTRER LES AUTORISATIONS POUR {dbusername}. Pour obliger un compte utilisateur à se connecter via SSL, exécutez cette commande :

ALTER USER {dbusername} REQUIRE SSL;

4.    Exécutez la commande quitter pour fermer MySQL. Déconnectez-vous ensuite de l'instance de base de données.

Ajouter une politique IAM qui associe l'utilisateur de base de données au rôle IAM

1.    Ouvrez la console IAM.

2.    Choisissez Politiques dans le volet de navigation.

3.    Choisissez Créer une politique.

4.    Saisissez une politique qui autorise l'action rds-db:connect à l'utilisateur requis. Pour en savoir plus sur la création de cette politique, consultez la section Création et utilisation d'une politique IAM pour l'accès à une base de données IAM.

Remarque : veillez à modifier la valeur Ressource pour inclure les détails de vos ressources de base de données, tels que l'identifiant de votre instance de base de données et votre nom d'utilisateur de base de données.

5.    Choisissez Suivant : Balises.

6.    Choisissez Suivant : Vérifier.

7.    Dans le champ Nom, saisissez un nom de politique.

8.    Choisissez Créer une politique.

Créez un rôle IAM qui autorise l'accès à Amazon RDS

1.    Ouvrez la console IAM.

2.    Choisissez Rôles dans le volet de navigation.

3.    Choisissez Créer un rôle.

4.    Choisissez Service AWS.

5.    Choisissez EC2.

6.    Dans Sélectionner votre cas d'utilisation, choisissez EC2, puis choisissez Suivant : Autorisations.

7.    Dans la barre de recherche, recherchez la politique IAM créée à l’étape « Ajouter une politique IAM qui associe l'utilisateur de base de données au rôle IAM ».

8.    Choisissez Suivant : Balises.

9.    Choisissez Suivant : Vérifier.

10.    Dans Nom du rôle, entrez le nom de ce rôle IAM.

11.    Choisissez Créer un rôle.

Associez le rôle IAM à une instance Amazon EC2

1.    Ouvrez la console Amazon EC2.

2.    Choisissez l'instance EC2 utilisée pour vous connecter à Amazon RDS.

3.    Associez le rôle IAM que vous venez de créer à l'instance EC2.

4.    Connectez-vous à votre instance EC2 via SSH.

Générer un jeton d'authentification AWS pour identifier le rôle IAM

Une fois la connexion à votre instance Amazon EC2 établie, exécutez la commande AWS CLI suivante pour créer un jeton d'authentification.

Remarque : si des erreurs surviennent lors de l'exécution des commandes de l'interface de la ligne de commande AWS (AWS CLI), vérifiez que vous utilisez la version la plus récente de l'interface.

$ aws rds generate-db-auth-token --hostname {db or cluster endpoint} --port 3306 --username {db username}

Copiez et conservez ce jeton d'authentification pour une utilisation ultérieure. Il expirera dans les 15 minutes suivant sa création.

Vous pouvez également générer un jeton à l'aide d'un kit SDK AWS.

Télécharger le fichier de certificat racine SSL ou le fichier de lot de certificats

Exécutez cette commande pour télécharger le certificat racine qui fonctionne pour toutes les régions :

$ wget https://s3.amazonaws.com/rds-downloads/rds-ca-2019-root.pem

Se connecter à l'instance de base de données RDS à l'aide des informations d'identification du rôle IAM et du jeton d'authentification

Une fois le fichier de certificat téléchargé, exécutez l'une des commandes suivantes pour vous connecter à l'instance de base de données via SSL.

Remarque : si votre application n'accepte pas les chaînes de certificats, vous pouvez exécuter la commande suivante pour télécharger le lot de certificats :

$ 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})"

Exécutez l'une des commandes suivantes, en fonction du type de certificat utilisé (RootCA ou Bundle) :

Commande RootCA :

mysql --host=$RDSHOST --port=3306 --ssl-ca=/sample_dir/rds-ca-2019-root.pem --enable-cleartext-plugin --user={db username} --password=$TOKEN

Commande Bundle :

mysql --host=$RDSHOST --port=3306 --ssl-ca=/sample_dir/rds-combined-ca-bundle.pem --enable-cleartext-plugin --user={db username} --password=$TOKEN

Remarque : si vous utilisez un client MariaDB, l'option --enable-cleartext-plugin n'est pas requise.

Se connecter à l'instance de base de données RDS à l'aide des informations d'identification du rôle IAM et des certificats SSL

Une fois le fichier de certificat téléchargé, connectez-vous à l'instance de base de données via SSL. Pour en savoir plus, consultez la section Connexion à une instance de base de données exécutant le moteur de base de données MySQL.

Informations connexes

Authentification de base de données IAM pour MariaDB, MySQL et PostgreSQL

Quels sont les moindres privilèges requis pour qu'un utilisateur puisse effectuer des opérations de création, de suppression, de modification, de sauvegarde et de restauration pour une instance de base de données Amazon RDS ?

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an