Passer au contenu

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

Lecture de 6 minute(s)
0

Je souhaite me connecter à une instance de base de données Amazon Relational Database Service (Amazon RDS) for MySQL. Je souhaite utiliser les informations d'identification de Gestion des identités et des accès AWS (IAM) au lieu des méthodes d'authentification natives.

Résolution

Remarque : Utilisez une connexion MySQL non chiffrée uniquement lorsque votre client et votre serveur se trouvent dans le même cloud privé virtuel (VPC) et que le réseau est fiable.

Prérequis : 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 Elastic Compute Cloud (Amazon EC2) pour vous connecter à la base de données.

Pour vérifier la configuration requise pour l'authentification IAM, utilisez le dossier d’exploitation AWS Systems Manager Automation AWSSupport-TroubleshootRDSIAMAuthentication. Vous pouvez également utiliser le dossier d’exploitation pour résoudre les problèmes de connectivité à l'instance Amazon RDS ou au cluster Amazon Aurora.

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

Vous pouvez utiliser la console Amazon RDS, l'AWS CLI ou l'API Amazon RDS pour activer l'authentification de base de données IAM.

Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l'interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre des erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l’AWS CLI.

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. Pour plus d'informations, consultez la section Instances de base de données Amazon RDS.

Remarque : Lorsque vous sélectionnez Appliquer immédiatement, toutes les modifications en attente s'appliquent également immédiatement. Pour plus d'informations, consultez la section Utilisation du paramètre de modifications de la planification.

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

Pour vous connecter à l'instance de base de données ou au point de terminaison du cluster, exécutez la commande suivante :

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

Remarque : Utilisez votre mot de passe principal pour vous connecter.

Pour créer un compte utilisateur de base de données qui utilise l’authentification IAM au lieu d'un mot de passe, exécutez la commande suivante :

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

Par défaut, l'utilisateur de la base de données ne dispose d'aucune autorisation. La mention ACCORDER L'UTILISATION apparaît à l’utilisateur de base de données lorsque vous exécutez la commande MONTRER LES AUTORISATIONS POUR {dbusername}. Pour demander un compte utilisateur lorsque vous utilisez le protocole SSL pour vous connecter, exécutez la commande suivante :

ALTER USER {dbusername} REQUIRE SSL;

Pour fermer MySQL, exécutez la commande exit. Puis, déconnectez-vous 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

Procédez comme suit :

  1. Ouvrez la console IAM.
  2. Dans le volet de navigation, sélectionnez Stratégies.
  3. Sélectionnez Créer une politique.
  4. Saisissez une politique qui accorde l'action rds-db:connect à l'utilisateur requis. Pour en savoir plus, consultez la section Création et utilisation d'une politique IAM pour l'accès à la base de données IAM.
    Remarque : Assurez-vous de saisir les détails des ressources de votre base de données dans la section Ressources.
  5. Sélectionnez Suivant.
  6. Pour Nom, saisissez un nom de stratégie.
  7. Sélectionnez Créer une stratégie.

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

Procédez comme suit :

  1. Ouvrez la console IAM.
  2. Dans le volet de navigation, sélectionnez Rôles.
  3. Sélectionnez Créer un rôle.
  4. Dans la section Type d’entité approuvée, sélectionnez Service AWS.
  5. Dans la section Cas d’utilisation, pour Service ou Cas d’utilisation, sélectionnez EC2.
  6. Sélectionnez Suivant.
  7. Utilisez la barre de recherche pour trouver la politique IAM.
  8. Sélectionnez Suivant.
  9. Dans Nom du rôle, saisissez un nom pour le rôle IAM.
  10. Sélectionnez Créer un rôle.

Associer le rôle IAM à l’instance Amazon EC2

Procédez comme suit :

  1. Ouvrez la console Amazon EC2.
  2. Dans le volet de navigation, choisissez Instances, puis sélectionnez l'instance que vous utilisez pour vous connecter à Amazon RDS.
  3. Attachez le rôle IAM à l'instance EC2.
  4. Utilisez le protocole SSH pour vous connecter à l'instance EC2.

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 d’interface de ligne de commande AWS generate-db-auth-token suivante pour générer un jeton d'authentification :

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

Copiez et stockez le jeton d'authentification en vue d’une utilisation ultérieure. Vous pouvez également utiliser un kit SDK AWS pour .NET afin de générer un jeton.

Télécharger le fichier du bundle de certificats racine SSL

Pour télécharger un bundle de certificats pour toutes les régions AWS, consultez la section Bundles de certificats par région AWS.

Utiliser les informations d'identification du rôle IAM et le jeton d'authentification pour vous connecter à l'instance de base de données RDS

Une fois le fichier de certificat téléchargé, exécutez la commande suivante pour vous connecter à l'instance de base de données via SSL :

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

mysql --host=$RDSHOST --port=3306 --ssl-ca=/sample_dir/global-bundle.pem --enable-cleartext-plugin --user=jane_doe --password=$TOKEN

Remarque : Si vous utilisez un client MariaDB, vous n'incluez pas l'option —enable-cleartext-plugin.

Utiliser les informations d'identification du rôle IAM et les certificats SSL pour vous connecter à l'instance de base de données RDS

Une fois le fichier de certificat téléchargé, connectez-vous à l'instance de base de données via SSL.

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 ?