Farhin vous montre comment
s'authentifier sur une instance RDS
avec des informations d'identification IAM

farhin_authenticate_rds

Je souhaite me connecter à une instance de base de données Amazon Relational Database Service (Amazon RDS) avec des informations d'identification AWS Identity and Access Management (IAM) plutôt qu'avec les méthodes d'authentification natives. Quelle est la marche à suivre ?

Les utilisateurs Amazon RDS peuvent se connecter à un cluster ou une instance de base de données RDS en utilisant des informations d'identification d'utilisateur ou de rôle IAM et un jeton d'authentification. L'authentification de base de données IAM est plus sécurisée que l'authentification native de différentes manières :

  • Les jetons d'authentification de base de données IAM sont générés au moyen de clés d'accès AWS. Vous n'avez pas besoin de stocker des informations d'identification utilisateur de base de données.
  • Les jetons d'authentification ont une durée de vie de 15 minutes, vous n'avez donc pas besoin d'appliquer la réinitialisation de mot de passe.
  • L'authentification de base de données IAM nécessite une connexion SSL, de sorte que toutes les données transmises depuis et vers votre instance de base de données RDS soient chiffrées.
  • Si votre application s'exécute sur Amazon Elastic Compute Cloud (Amazon EC2), vous pouvez utiliser les informations d'identification du profil d'instance EC2 afin d'accéder à la base de données. Vous n'avez pas besoin de stocker des 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 stratégie IAM qui mappe l'utilisateur de base de données sur le rôle IAM.
  4. Attachez le rôle IAM à l'instance EC2.
  5. Générez un jeton d'authentification AWS pour identifier le rôle IAM.
  6. Téléchargez le fichier de certificat racine SSL ou le groupe de fichiers de certificat.
  7. 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.

Remarque : L'authentification de base de données IAM est disponible seulement pour certains moteurs de base de données et types d'instance. Pour obtenir une liste des instances et des moteurs pris en charge, consultez Disponibilité de l'authentification de base de données IAM.

Avant de commencer cette procédure, assurez-vous que vous avez lancé les éléments suivants :

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

Pour activer une authentification de base de données IAM, vous pouvez utiliser AWS Management Console, l'interface de ligne de commande AWS (AWS CLI) ou l'API Amazon RDS

Pour obtenir des instructions, consultez Activation et désactivation de l'authentification de base de données IAM.

Remarque : sur la page Modify DB instance (Modifier l'instance de base de données), sous Maintenance, choisissez Apply Immediately (Appliquer immédiatement) pour activer immédiatement l'authentification de base de données IAM. En fonction des autres modifications en attente, choisir Apply Immediately (Appliquer immédiatement) peut entraîner un temps d'arrêt imprévu.

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

1.    Connectez-vous au point de terminaison de l'instance ou du cluster en exécutant la commande suivante. Assurez-vous d'entrer 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.    Exécutez cette commande 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.

CREATE USER {db username} IDENTIFIED WITH AWSAuthenticationPlugin as 'RDS';

3.    Vous pouvez, si vous le souhaitez, exécuter cette commande pour que l'utilisateur soit obligé de se connecter à la base de données à l'aide de SSL :  

GRANT USAGE ON *.* TO '{dbusername2}'@'%'REQUIRE SSL;

4.    Exécutez la commande exit pour fermer MySQL. Ensuite, déconnectez-vous de l'instance.

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

1.    Ouvrez la console IAM. Ensuite, choisissez Roles (Rôles) dans le volet de navigation.

2.    Sélectionnez Create role (Créer le rôle).

3.    Choisissez AWS service (Service AWS), puis EC2.

4.    Pour Sélectionner votre cas d'utilisation, choisissez EC2, puis Next: Permissions (Suivant : Autorisations).

5.    Entrez « RDS » dans la barre de recherche. Choisissez ensuite AmazonRDSFullAccess ou une stratégie IAM RDS personnalisée qui accorde moins d'autorisations.

6.    Choisissez Next: Review (Suivant : Vérification).

7.     Pour Role Name (Nom du rôle), entrez un nom pour ce rôle IAM.

8.    Sélectionnez Create Role (Créer le rôle).

Ajouter une stratégie IAM qui mappe l'utilisateur de base de données sur le rôle IAM

1.    À partir de la liste des rôles IAM, ouvrez le rôle IAM que vous venez de créer.

2.    Choisissez Add inline policy.

3.    Entrez la stratégie depuis Création et utilisation d'une stratégie IAM pour l'accès à une base de données IAM.
Remarque : assurez-vous de modifier la valeur « Resource » avec les détails de vos ressources de base de données, par exemple, votre identifiant d'instance de base de données et votre nom d'utilisateur de base de données.

4.    Choisissez Examiner une stratégie.

5.    Pour Name (Nom), entrez un nom de stratégie.

6.    Choisissez Créer une stratégie.

Attacher le rôle IAM à l'instance EC2

1.    Ouvrez la console Amazon EC2.

2.    Choisissez l'instance EC2 que vous utiliserez pour vous connecter à Amazon RDS.

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

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

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

Après vous être connecté à votre instance EC2, exécutez la commande AWS CLI suivante pour générer un jeton d'authentification. Copiez et stockez le jeton d'authentification pour une utilisation ultérieure.

Remarque : Ce jeton expire 15 minutes après sa création.

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

Télécharger le fichier de certificat racine SSL ou le groupe de fichiers de certificat

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

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

Si votre application n'accepte pas les chaînes de certificats, exécutez la commande suivante pour télécharger le groupe de certificats qui inclut à la fois l'ancien et le nouveau certificats racine :  

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

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

Remarque : pour les applications Windows qui nécessitent un fichier PKCS7, consultez Utilisation de SSL pour chiffrer une connexion à une instance de base de données pour télécharger le certificat approprié.

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

Après avoir téléchargé le fichier de certificat, exécutez la commande suivante pour vous connecter à l'instance de base de données RDS avec SSL en utilisant l'utilitaire MySQL.


Cette page vous a-t-elle été utile ? Oui | Non

Retour au Centre de connaissances AWS Support

Vous avez besoin d'aide ? Consultez le site du Centre AWS Support

Date de publication : 13/03/2018

Date de mise à jour : 16/11/2018