Pourquoi le message d'erreur « Access Denied » s'affiche-t-il lorsque j'utilise l'authentification IAM pour me connecter à Amazon RDS for MySQL ?
Lorsque je me connecte à mon instance Amazon Relational Database Service (Amazon RDS) for MySQL via l'authentification Gestion des identités et des accès AWS (AWS IAM), le message d'erreur « Access Denied » s'affiche.
Brève description
Des messages d'erreur peuvent apparaître en cas d'autorisations de rôle IAM insuffisantes, de désactivation de l'authentification IAM, de configurations incorrectes de l'utilisateur de la base de données ou d'erreur dans la chaîne de connexion. Vous pouvez recevoir un message d’erreur similaire au message suivant :
« ERROR 1045 (28000): Access denied for user 'root'@'10.0.4.253' (using password: YES) »
Utilisez le dossier d’exploitation AWSSupport-TroubleshootRDSIAMAuthentication pour vérifier automatiquement la configuration requise pour l'authentification IAM avec une instance Amazon RDS. Puis, utilisez les résolutions pour résoudre cette erreur.
Résolution
Autorisations de rôle IAM insuffisantes
Pour vous connecter à votre instance Amazon RDS for MySQL à l'aide de l'authentification de base de données IAM, vous devez avoir accès à l'action rds-db:connect. Pour en savoir plus, consultez la section Création et utilisation d'une stratégie IAM pour l'accès à la base de données IAM.
Assurez-vous d'utiliser l’ID de ressource approprié et de ne pas simplement spécifier un Amazon Resource Name (ARN). Pour trouver l'ID de ressource de votre instance de base de données, procédez comme suit :
- Ouvrez la console Aurora et RDS.
- Dans le volet de navigation, choisissez Bases de données.
- Puis, sélectionnez l'onglet Configurations.
Remarque : l'ID de ressource se trouve dans la section Configuration. Pour en savoir plus, consultez la section Création et utilisation d'une stratégie IAM pour l'accès à la base de données IAM.
Si vous utilisez une politique de contrôle des services, assurez-vous que celle-ci autorise les connexions à votre instance de base de données. Pour plus d'informations, consultez la section Création, mise à jour et suppression de stratégies de contrôle des services.
Activer l'authentification IAM
Par défaut, l'authentification IAM est désactivée pour les instances de base de données. Vérifiez les paramètres de configuration de votre cluster de base de données Amazon RDS for MySQL ou Aurora et assurez-vous que l'authentification IAM est désactivée.
Remarque : si vous choisissez Appliquer immédiatement, toutes les modifications en attente prendront effet immédiatement, et non pendant une période de maintenance. Cette action peut interrompre votre instance Amazon RDS for MySQL pendant une période prolongée. Pour plus d'informations, consultez la section [Utilisation du paramètre Appliquer immédiatement] (http://Using the schedule modifications setting).
Utilisateur de base de données incorrectement configuré
Le plug-in AWSAuthenticationPlugin authentifie les utilisateurs dans Amazon RDS for MySQL. Pour vous connecter à votre instance Amazon RDS for MySQL via l'authentification IAM, utilisez AWSAuthenticationPlugin.
Pour vérifier que ce plug-in est associé à votre rôle IAM, exécutez la commande suivante :
select user,plugin,host from mysql.user where user like '%db-user-name%';
Remarque : remplacez db-user-name par le nom d'utilisateur de votre base de données.
Exemple de sortie :
+------+-------------------------+------+ | user | plugin | host | +------+-------------------------+------+ | root | AWSAuthenticationPlugin | % | +------+-------------------------+------+ 1 row in set (0.00 sec)
Si le rôle IAM utilise un hôte spécifique, vous devez utiliser ce nom d'hôte. Assurez-vous également que vous disposez des autorisations correctes pour accéder à la base de données spécifiée.
Pour afficher les autorisations accordées à un utilisateur, utilisez la commande suivante :
show grants for <user>;
Remarque : remplacez user par le nom d'utilisateur.
Pour accorder des privilèges à d’autres utilisateurs, utilisez la commande suivante :
grant select on <mydb>.<mytable> to <user>;
Remarque : remplacez mydb par le nom de votre instance de base de données, mytable par le nom de votre table et user par votre nom d'utilisateur.
Pour en savoir plus, reportez-vous à la déclaration GRANT (sur le site Web de MySQL).
Chaîne de connexion incorrecte
Pour vous connecter à la base de données Amazon RDS for MySQL, utilisez le paramètre --enable-cleartext-plugin dans votre chaîne de connexion. Le paramètre --enable-cleartext-plugin agit comme un jeton d'authentification. Par conséquent, vous devez utiliser AWSAuthenticationPlugin lorsque vous vous connectez à la base de données et que vous configurez l'utilisateur de la base de données. Si vous ne configurez pas correctement le plug-in AWSAuthenticationPlugin, vous recevrez une erreur Access Denied lorsque vous vous connecterez à votre base de données via l'authentification IAM.
Utilisez l'exemple de chaîne de connexion suivant :
mysql -h <endpoint> -P 3306 --enable-cleartext-plugin --user=RDSConnect --password=$
Remarque : remplacez le point de terminaison par le nom d'hôte de l'instance de base de données à laquelle vous souhaitez accéder.
Si vous utilisez le client MariaDB, le paramètre --enable-cleartext-plugin n'est pas obligatoire. À la place, stockez d'abord le jeton dans une variable d'environnement. Utilisez ensuite des variables d'environnement lorsque vous vous connectez à votre instance de base de données MySQL.
Reportez-vous à l’exemple suivant :
RDSHOST="rdsmysql.123456789012.us-west-2.rds.amazonaws.com"TOKEN="$(aws rds generate-db-auth-token --hostname $RDSHOST --port 3306 --region us-west-2 --username db-user-name)" mysql --host=$RDSHOST --port=3306 --enable-cleartext-plugin --user=db-user-name --password=$TOKEN
Pour en savoir plus sur la façon d’utiliser une variable d'environnement pour vous connecter à une instance de base de données MySQL, consultez la section Connexion à une instance de base de données.
Informations connexes
Authentification de base de données IAM
Authentification de base de données IAM pour MariaDB, MySQL et PostgreSQL
- Sujets
- Database
- Langue
- Français
Vidéos associées


Contenus pertinents
demandé il y a 2 ans
demandé il y a 3 ans
demandé il y a un an
demandé il y a 6 mois