Utilisation de l'authentification Kerberos pour MySQL - Amazon Relational Database Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation de l'authentification Kerberos pour MySQL

Vous pouvez utiliser l'authentification Kerberos pour authentifier les utilisateurs lorsqu'ils se connectent à votre instance de base de données MySQL. L'instance de base de données fonctionne avec AWS Directory Service for Microsoft Active Directory (AWS Managed Microsoft AD) pour permettre l'authentification Kerberos. Lorsque les utilisateurs s'authentifient avec une instance de base de données MySQL jointe au domaine d'approbation, les demandes d'authentification sont transférées. Les demandes transférées vont dans l'annuaire de domaine que vous créez avec AWS Directory Service.

Vous pouvez gagner du temps et de l'argent en conservant toutes les informations d'identification dans le même annuaire. Cette approche vous permet d'avoir un endroit centralisé de stockage et de gestion des informations d'identification pour plusieurs instances de base de données. L'utilisation d'un annuaire peut également améliorer votre profil de sécurité global.

Disponibilité des régions et des versions

La disponibilité et la prise en charge des fonctionnalités varient selon les versions spécifiques de chaque moteur de base de données, et selon les Régions AWS. Pour obtenir plus d'informations sur la disponibilité des versions et des régions d'Amazon RDS avec authentification Kerberos, consultez Authentification Kerberos.

Vue d'ensemble de la configuration de l'authentification Kerberos pour les instances de bases de données MySQL

Pour configurer l'authentification Kerberos pour une instance de base de données MySQL, effectuez les étapes générales suivantes, décrites plus en détails par la suite :

  1. Utilisez AWS Managed Microsoft AD pour créer un annuaire AWS Managed Microsoft AD. Vous pouvez utiliser AWS Management Console, AWS CLI ou l'AWS Directory Service pour créer l'annuaire. Pour plus d'informations à ce sujet, consultez Créer votre annuaire AWS Managed Microsoft AD dans le Guide d'administration AWS Directory Service.

  2. Créez un rôle AWS Identity and Access Management (IAM) utilisant la politique IAM gérée AmazonRDSDirectoryServiceAccess. Le rôle autorise Amazon RDS à effectuer des appels vers votre annuaire.

    Pour que le rôle autorise l'accès, le point de terminaison AWS Security Token Service (AWS STS) doit être activé dans la Région AWS pour votre compte AWS. Les points de terminaison AWS STS sont actifs par défaut dans toutes les Régions AWS et vous pouvez les utiliser sans qu'aucune autre action soit nécessaire. Pour de plus amples informations, veuillez consulter Activation et désactivation d'AWS STS dans une Région AWS dans le Guide de l'utilisateur IAM.

  3. Créez et configurez les utilisateurs dans l'annuaire AWS Managed Microsoft AD à l'aide des outils Microsoft Active Directory. Pour plus d'informations sur la création d'utilisateurs dans votre annuaire Active Directory, consultez Gérer les utilisateurs et les groupes dans Microsoft AD géré par AWS dans le Guide d'administration AWS Directory Service.

  4. Créez ou modifiez une instance de base de données MySQL. Si vous utilisez CLI ou l'API RDS dans la demande de création, spécifiez un identificateur de domaine avec le paramètre Domain. Utilisez l'identificateur d-* généré lors de la création de votre annuaire et le nom du rôle que vous avez créé.

    Si vous modifiez une instance de base de données MySQL existante pour utiliser l'authentification Kerberos, définissez les paramètres de domaine et de rôle IAM pour l'instance de base de données. Recherchez l'instance de base de données dans le même VPC que l'annuaire de domaine.

  5. Utilisez les informations d'identification de l'utilisateur principal Amazon RDS pour vous connecter à l'instance de base de données MySQL. Créez l'utilisateur dans MySQL en utilisant la clause CREATE USER IDENTIFIED WITH 'auth_pam'. Les utilisateurs que vous créez de cette façon peuvent se connecter à l'instance de base de données MySQL en utilisant l'authentification Kerberos.

Configuration de l'authentification Kerberos pour les instances de base de données MySQL

Vous utilisez AWS Managed Microsoft AD pour configurer l'authentification Kerberos pour une instance de base de données MySQL. Pour configurer l'authentification Kerberos, procédez comme suit :

Étape 1 : Créer un annuaire à l'aide d AWS Managed Microsoft AD

AWS Directory Service crée un annuaire Active Directory totalement géré dans le Cloud AWS. Lorsque vous créez un annuaire AWS Managed Microsoft AD, AWS Directory Service crée deux contrôleurs de domaine et serveurs de système de noms de domaine (DNS) en votre nom. Les serveurs de répertoire sont créés dans des sous-réseaux différents d'un VPC. Cette redondance permet de s'assurer que votre annuaire reste accessible, y compris en cas de défaillance.

Lorsque vous créez un annuaire AWS Managed Microsoft AD, AWS Directory Service effectue les tâches suivantes en votre nom :

  • Configuration d'un annuaire Active Directory dans le VPC.

  • Création d'un compte d'administrateur d'annuaire avec le nom d'utilisateur Admin et le mot de passe spécifié. Ce compte est utilisé pour gérer votre annuaire.

    Note

    Assurez-vous d'enregistrer ce mot de passe, car AWS Directory Service ne le stocke pas. Vous pouvez le réinitialiser, mais vous ne pouvez pas le récupérer.

  • Création d'un groupe de sécurité pour les contrôleurs de l'annuaire.

Lorsque vous lancez AWS Managed Microsoft AD, AWS crée une unité d'organisation (UO) qui contient tous les objets de votre annuaire. Cette unité d'organisation, qui porte le nom NetBIOS que vous avez saisi lorsque vous avez créé votre annuaire, est située dans la racine du domaine. La racine du domaine appartient à , qui la gèr AWS.

Le compte Admin qui a été créé avec votre annuaire AWS Managed Microsoft AD dispose des autorisations nécessaires pour les activités administratives les plus courantes pour votre unité d'organisation :

  • Création, mise à jour et suppression des utilisateurs

  • Ajouter des ressources à votre domaine, comme des serveurs de fichiers ou d'impression, puis attribuer des autorisations pour ces ressources aux utilisateurs dans votre unité d'organisation

  • Créer des unités d'organisation et des conteneurs supplémentaires

  • Déléguer des autorités

  • Restaurer des objets supprimés de la corbeille Active Directory

  • Exécuter les PowerShell modules Windows AD et DNS sur le service Web Active Directory

Le compte Admin dispose également de droits pour exécuter les activités suivantes au niveau du domaine :

  • Gérer les configurations DNS (ajouter, supprimer ou mettre à jour des enregistrements, des zones et des redirecteurs)

  • Afficher les journaux d'évènements DNS

  • Afficher les journaux d'évènements de sécurité

Pour créer un annuaire avec AWS Managed Microsoft AD
  1. Connectez-vous à AWS Management Console et ouvrez la console AWS Directory Service à l'adresse https://console.aws.amazon.com/directoryservicev2/.

  2. Dans le panneau de navigation, choisissez Directories (Répertoires), puis Set up Directory (Configurer un répertoire).

  3. Choisissez AWS Managed Microsoft AD. AWS Managed Microsoft AD est la seule option que vous pouvez utiliser actuellement avec Amazon RDS.

  4. Entrez les informations suivantes :

    Nom de DNS de l'annuaire

    Nom complet de l'annuaire, par exemple corp.example.com.

    Nom NetBIOS de l'annuaire

    Nom court de l'annuaire, par exemple CORP.

    Description de l'annuaire

    (Facultatif) Une description de l'annuaire.

    Mot de passe administrateur

    Mot de passe de l'administrateur de l'annuaire. Le processus de création d'un annuaire crée un compte d'administrateur avec le nom d'utilisateur Admin et ce mot de passe.

    Le mot de passe de l'administrateur de l'annuaire ne peut pas contenir le terme « admin ». Le mot de passe est sensible à la casse et doit comporter entre 8 et 64 caractères. Il doit également contenir au moins un caractère de trois des quatre catégories suivantes :

    • Lettres minuscules (a–z)

    • Lettres majuscules (A–Z)

    • Chiffres (0–9)

    • Caractères non alphanumériques (~!@#$%^&*_-+=`|\(){}[]:;"'<>,.?/)

    Confirmer le mot de passe

    Saisissez à nouveau le mot de passe de l'administrateur.

  5. Choisissez Suivant.

  6. Entrez les informations suivantes dans la section Networking (Réseaux), puis choisissez Suivant (Next) :

    VPC

    VPC de l'annuaire. Créez l'instance de base de données MySQL dans ce même VPC.

    Sous-réseaux

    Sous-réseaux pour les serveurs d'annuaires. Les deux sous-réseaux doivent être dans des zones de disponibilité différentes.

  7. Vérifiez les informations concernant l'annuaire et effectuez les modifications nécessaires. Lorsque les informations sont correctes, choisissez Create directory (Créer le répertoire).

    
              Page de détails de l'annuaire lors de la création

La création de l'annuaire prend plusieurs minutes. Lorsqu'il est créé, la valeur du champ Status (Statut) devient Active (Actif).

Pour consulter les informations relatives à votre annuaire, choisissez le nom de l'annuaire dans la liste. Notez la valeur ID de l'annuaire, car vous avez besoin de cette valeur lorsque vous créez ou modifiez votre instance de base de données MySQL.


          Page de détails de l'annuaire

Étape 2 : Créer le rôle IAM qui sera utilisé par Amazon RDS

Pour qu'Amazon RDS puisse appeler AWS Directory Service pour vous, un rôle IAM utilisant la politique IAM gérée AmazonRDSDirectoryServiceAccess est requis. Ce rôle permet à Amazon RDS d'appeler l'AWS Directory Service.

Lorsqu'une instance de base de données est créée à l'aide de l'AWS Management Console et que l'utilisateur de la console dispose de l'autorisation iam:CreateRole, la console crée ce rôle automatiquement. Dans ce cas, le nom du rôle est rds-directoryservice-kerberos-access-role. Sinon, vous devez créer le rôle IAM manuellement. Lorsque vous créez ce rôle IAM, choisissez Directory Service et attachez-lui la stratégie gérée AWS AmazonRDSDirectoryServiceAccess.

Pour plus d'informations sur la création de rôles IAM pour un service, consultez Création d'un rôle pour déléguer des autorisations à un service AWS dans le Guide de l'utilisateur IAM.

Note

Le rôle IAM utilisé pour l'authentification Windows pour RDS for SQL Server ne peut pas être utilisé pour RDS for MySQL.

Vous pouvez également créer des politiques avec les autorisations obligatoires au lieu d'utiliser la politique gérée IAM AmazonRDSDirectoryServiceAccess. Dans ce cas, le rôle IAM doit avoir la politique d'approbation IAM suivante :

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "directoryservice.rds.amazonaws.com", "rds.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

Le rôle doit également avoir la politique de rôle IAM suivante.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ds:DescribeDirectories", "ds:AuthorizeApplication", "ds:UnauthorizeApplication", "ds:GetAuthorizedApplicationDetails" ], "Effect": "Allow", "Resource": "*" } ] }

Étape 3 : Créer et configurer des utilisateurs

Vous pouvez créer des utilisateurs avec l'outil Active Directory Users and Computers (Utilisateurs et ordinateurs Active Directory). Cet outil fait partie des outils Active Directory Domain Services et Active Directory Lightweight Directory Services (Services de domaine Active Directory et Services d'annuaire légers Active Directory). Les utilisateurs représentent des individus ou des entités individuelles qui ont accès à votre annuaire.

Pour créer des utilisateurs dans un annuaire AWS Directory Service, vous devez être connecté à une instance Amazon EC2 basée sur Microsoft Windows. Cette instance doit être membre de l'annuaire AWS Directory Service et doit être connectée en tant qu'utilisateur disposant des privilèges nécessaires pour créer des utilisateurs. Pour de plus amples informations, veuillez consulter Gérer des utilisateurs et des groupes dans AWS Managed Microsoft AD dans le Guide d'administration d'AWS Directory Service.

Étape 4 : Créer ou modifier une instance de base de données MySQL

Créez ou modifiez une instance de base de données MySQL à utiliser avec votre annuaire. Vous pouvez utiliser la console, CLI ou l'API RDS pour associer une instance de base de données à un annuaire. Vous pouvez effectuer cette opération de différentes manières :

L'authentification Kerberos est uniquement prise en charge pour les instances de base de données MySQL dans un VPC. L'instance de base de données peut être dans le même VPC que l'annuaire ou dans un VPC différent. L'instance de base de données doit utiliser un groupe de sécurité qui accepte les sorties du VPC, afin que l'instance de base de données puisse communiquer avec l'annuaire.

Lorsque vous utilisez la console pour créer, modifier ou restaurer une instance de bases de données, choisissez Password and Kerberos authentication (Mot de passe et authentification Kerberos) dans la section Database authentication (Authentification de base de données). Choisissez Browse Directory (Parcourir les répertoires), puis sélectionnez le répertoire, ou choisissez Create a new directory (Créer un nouveau répertoire).


          Paramètre d'authentification Kerberos lors de la création d'une instance de base de données

Lorsque vous utilisez l'AWS CLI ou l'API RDS, associez une instance de base de données à un annuaire. Les paramètres suivants sont nécessaires pour que l'instance de base de données utilise l'annuaire du domaine que vous avez créé :

  • Pour le paramètre --domain, vous devez indiquer l'identifiant du domaine (identifiant « d-* ») généré lors de la création de l'annuaire.

  • Pour le paramètre --domain-iam-role-name, utilisez le rôle que vous avez créé qui utilise la politique IAM gérée AmazonRDSDirectoryServiceAccess.

Par exemple, la commande de CLI suivante modifie une instance de base de données de façon à utiliser un annuaire.

Pour LinuxmacOS, ou Unix :

aws rds modify-db-instance \ --db-instance-identifier mydbinstance \ --domain d-ID \ --domain-iam-role-name role-name

Dans Windows :

aws rds modify-db-instance ^ --db-instance-identifier mydbinstance ^ --domain d-ID ^ --domain-iam-role-name role-name
Important

Si vous modifiez une instance de base de données de façon à activer l'authentification Kerberos, redémarrez l'instance de base de données après avoir effectué la modification.

Étape 5 : Créer les connexions MySQL d'authentification Kerberos

Utilisez les informations d'identification de l'utilisateur principal Amazon RDS pour vous connecter à l'instance de base de données MySQL comme vous le faites pour n'importe quelle instance de base de données. L'instance de base de données est jointe au domaine AWS Managed Microsoft AD. Vous pouvez ainsi allouer les connexions et utilisateurs MySQL depuis les utilisateurs Active Directory de votre domaine. Les autorisations de base de données sont gérées via des autorisations MySQL standard qui sont accordées et révoquées à partir de ces connexions.

Vous pouvez autoriser un utilisateur Active Directory à s'authentifier avec MySQL. Pour ce faire, utilisez d'abord les informations d'identification de l'utilisateur principal Amazon RDS pour vous connecter à l'instance de base de données MySQL comme avec n'importe quelle autre instance de base de données. Une fois connecté, créez un utilisateur authentifié en externe avec PAM (Pluggable Authentication Modules) dans MySQL comme indiqué ci-dessous.

CREATE USER 'testuser'@'%' IDENTIFIED WITH 'auth_pam';

Remplacez testuser par le nom de l'utilisateur. Les utilisateurs (personnes et applications) de votre domaine peuvent désormais se connecter à l'instance de base de données à partir d'un ordinateur client joint au domaine à l'aide de l'authentification Kerberos.

Important

Nous recommandons fortement aux clients d'utiliser des connexions SSL/TLS lors de l'utilisation de l'authentification PAM. S'ils n'utilisent pas de connexions SSL/TLS, le mot de passe peut être envoyé sous forme de texte clair dans certains cas. Pour exiger une connexion chiffrée SSL/TLS pour votre utilisateur AD, exécutez la commande suivante :

UPDATE mysql.user SET ssl_type = 'any' WHERE ssl_type = '' AND PLUGIN = 'auth_pam' and USER = 'testuser'; FLUSH PRIVILEGES;

Pour plus d'informations, consultez Utilisation de SSL/TLS avec une instance de base de données MySQL.

Gestion d'une instance de base de données dans un domaine

Vous pouvez utiliser CLI ou l'API RDS pour gérer votre instance de base de données et sa relation avec votre annuaire géré Active Directory. Par exemple, vous pouvez associer un annuaire Active Directory pour l'authentification Kerberos et dissocier un annuaire Active Directory pour désactiver l'authentification Kerberos. Vous pouvez également transférer une instance de base de données vers une autre afin qu'elle soit authentifiée en externe par un annuaire Active Directory.

Par exemple, l'API Amazon RDS vous permet d'effectuer les actions suivantes :

  • Pour retenter l'activation de l'authentification Kerberos en cas d'échec d'appartenance, utilisez l'opération d'API ModifyDBInstance et spécifiez l'ID d'annuaire d'appartenance actuelle.

  • Pour mettre à jour le nom du rôle IAM de l'appartenance, utilisez l'opération d'API ModifyDBInstance et spécifiez l'ID d'annuaire de l'appartenance actuelle et le nouveau rôle IAM.

  • Pour désactiver l'authentification Kerberos sur une instance de base de données, utilisez l'opération d'API ModifyDBInstance et spécifiez none comme paramètre de domaine.

  • Pour déplacer une instance de base de données d'un domaine à un autre, utilisez l'opération d'API ModifyDBInstance et spécifiez l'identifiant du nouveau domaine en tant que paramètre de domaine.

  • Pour répertorier l'appartenance pour chaque instance de base de données, utilisez l'opération d'API DescribeDBInstances.

Présentation de l'appartenance au domaine

Après la création ou la modification de votre instance de base de données, elle devient un membre du domaine. Vous pouvez consulter l'état de l'appartenance au domaine de l'instance de base de données en exécutant la commande describe-db-instancesCLI. Le statut de l'instance de base de données peut avoir les valeurs suivantes :

  • kerberos-enabled – L'instance de base de données a l'authentification Kerberos activée.

  • enabling-kerberos – AWS est le processus d'activation de l'authentification Kerberos sur cette instance de base de données.

  • pending-enable-kerberos – L'activation de l'authentification Kerberos est en attente sur cette instance de base de données.

  • pending-maintenance-enable-kerberos – AWS tentera d'activer l'authentification Kerberos sur cette instance de base de données lors de la prochaine fenêtre de maintenance planifiée.

  • pending-disable-kerberos – La désactivation de l'authentification Kerberos est en attente sur cette instance de base de données.

  • pending-maintenance-disable-kerberos – AWS tentera de désactiver l'authentification Kerberos sur cette instance de base de données lors de la prochaine fenêtre de maintenance planifiée.

  • enable-kerberos-failed – Un problème de configuration a empêché AWS d'activer l'authentification Kerberos sur l'instance de base de données. Vérifiez et corrigez votre configuration avant d'émettre à nouveau la commande de modification de l'instance de base de données.

  • disabling-kerberos – AWS est en train de désactiver l'authentification Kerberos sur cette instance de base de données.

Une demande d'activation de l'authentification Kerberos peut échouer à cause d'un problème de connectivité réseau ou d'un rôle IAM incorrect. Par exemple, supposons que vous créez une instance de base de données ou modifiez une instance de base de données et que la tentative d'activation de l'authentification Kerberos échoue. Si cela se produit, réémettez la commande modify ou modifiez l'instance de base de données nouvellement créée pour joindre le domaine.

Connexion à MySQL avec l'authentification Kerberos

Pour vous connecter à MySQL avec l'authentification Kerberos, vous devez vous connecter à l'aide du type d'authentification Kerberos.

Pour créer un utilisateur de base de données auquel vous pouvez vous connecter à l'aide de l'authentification Kerberos, utilisez une clause IDENTIFIED WITH avec l'instruction CREATE USER. Pour obtenir des instructions, consultez Étape 5 : Créer les connexions MySQL d'authentification Kerberos.

Pour éviter les erreurs, utilisez le client mysql MariaDB. Vous pouvez télécharger le logiciel MariaDB à l'adresse https://downloads.mariadb.org/.

À partir d'une invite de commande, connectez-vous à un des points de terminaison associés à votre instance de base de données MySQL. Suivez les procédures générales décrites dans Connexion à une instance de base de données exécutant le moteur de base de données MySQL. Lorsque vous êtes invité à entrer le mot de passe, entrez le mot de passe Kerberos associé à ce nom d'utilisateur.

Restauration d'une instance de base de données MySQL et ajout de cette instance à un domaine

Vous pouvez restaurer un instantané de base de données ou terminer la point-in-time restauration d'une instance de base de données MySQL, puis l'ajouter à un domaine. Une fois que l'instance de base de données est restaurée, modifiez l'instance de base de données à l'aide du processus expliqué dans Étape 4 : Créer ou modifier une instance de base de données MySQL afin d'ajouter l'instance de base de données à un domaine.

Limitations MySQL de l'authentification Kerberos

Les limitations suivantes s'appliquent à l'authentification Kerberos pour MySQL :

  • Seul un AWS Managed Microsoft AD est pris en charge. Toutefois, vous pouvez joindre des instances de base de données RDS for MySQL à des domaines Microsoft AD gérés partagés qui appartiennent à différents comptes dans la même Région AWS.

  • Vous devez redémarrer l'instance de base de données après avoir activé la fonctionnalité.

  • La longueur du nom de domaine ne peut pas dépasser 61 caractères.

  • Vous ne pouvez pas activer l'authentification Kerberos et l'authentification IAM en même temps. Choisissez l'une ou l'autre des méthodes d'authentification pour votre instance de base de données MySQL.

  • Ne modifiez pas le port d'instance de base de données après avoir activé la fonctionnalité.

  • N'utilisez pas l'authentification Kerberos avec les réplicas en lecture.

  • Si la mise à niveau automatique des versions mineures est activée pour une instance de base de données MySQL qui utilise l'authentification Kerberos, vous devez désactiver cette authentification, puis la réactiver après une mise à niveau automatique. Pour plus d'informations sur les mises à niveau automatiques des versions mineures, consultez Mises à niveau automatiques des versions mineures pour MySQL.

  • Pour supprimer une instance de base de données pour laquelle cette fonctionnalité est activée, désactivez d'abord la fonctionnalité. Pour ce faire, utilisez la commande d'interface de ligne de commande modify-db-instance pour l'instance de base de données et spécifiez none pour le paramètre --domain.

    Si vous utilisez CLI ou l'API RDS pour supprimer une instance de base de données pour laquelle cette fonctionnalité est activée, laissez s'écouler un délai.

  • Vous ne pouvez pas configurer de relation d'approbation de forêt entre votre annuaire Microsoft Active Directory sur site ou auto-géré et le AWS Managed Microsoft AD.