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 AWS Identity and Access Management (IAM) au lieu des méthodes d'authentification natives.

Résolution

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

Pour vous connecter à une instance de base de données Amazon RDS ou à un cluster, utilisez les informations d'identification du rôle ou de l'utilisateur IAM, ainsi qu'un jeton d'authentification.

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

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 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 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'interface de la ligne de commande AWS (AWS CLI) ou l'API Amazon RDS pour activer l'authentification de base de données IAM. 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 : Si vous sélectionnez Appliquer immédiatement, toutes les modifications en attente s'appliquent également immédiatement. Pour plus d'informations, consultez la section Paramètre des modifications du calendrier.

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 un jeton d'authentification AWS 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'aucun privilège. 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 de se connecter via SSL, 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 stratégie 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 stratégie.
  4. Saisissez une stratégie qui autorise l'action rds-db:connect à l'utilisateur requis. Pour en savoir plus sur la création de cette stratégie, consultez la section Création et utilisation d'une stratégie IAM pour l'accès à une 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. Sélectionnez Suivant.
  7. Pour Nom, saisissez un nom de stratégie.
  8. 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. Dans la section Type d’entité approuvée, sélectionnez Créer un rôle.
  4. Sélectionnez Service AWS.
  5. Dans la section Cas d’utilisation, pour Service ou Cas d’utilisation, sélectionnez EC2.
  6. Pour Cas d'utilisation, sélectionnez ** EC2**, puis cliquez sur Suivant.
  7. Dans la barre de recherche, recherchez la stratégie IAM créée à l’étape Ajouter une stratégie IAM qui associe l'utilisateur de base de données au rôle IAM.
  8. Sélectionnez Suivant.
  9. Pour Nom du rôle, saisissez le nom de ce rôle IAM.
  10. Sélectionnez Créer un rôle.

Associer le rôle IAM à une instance Amazon EC2

Procédez comme suit :

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

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

Copiez et conservez ce jeton d'authentification pour 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 ensemble de certificats pour toutes les régions AWS, consultez la section Bundles de certificats pour toutes les régions 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 ?