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

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 (Enterprise Edition) (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.

Amazon RDS prend en charge l'authentification Kerberos pour les instances de base de données MySQL dans les régions AWS suivantes :

  • USA Est (Ohio)

  • USA Est (Virginie du Nord)

  • USA Ouest (Californie du Nord)

  • USA Ouest (Oregon)

  • Asie-Pacifique (Mumbai)

  • Asie-Pacifique (Séoul)

  • Asie-Pacifique (Singapour)

  • Asie-Pacifique (Sydney)

  • Asie-Pacifique (Tokyo)

  • Canada (Centre)

  • Europe (Francfort)

  • Europe (Irlande)

  • Europe (Londres)

  • Europe (Stockholm)

  • Amérique du Sud (São Paulo)

  • Chine (Pékin)

  • Chine (Ningxia)

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 l'AWS Management Console, l'AWS CLI ou l'API AWS Directory Service pour créer l'annuaire. Pour de plus amples informations à ce sujet, veuillez consulter Créez votre annuaire AWS Managed Microsoft AD dans le AWS Directory Service Administration Guide.

  2. Créez un rôle AWS Identity and Access Management (IAM) qui utilise la stratégie IAM AmazonRDSDirectoryServiceAccess gérée. 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 des utilisateurs dans l'annuaire AWS Managed Microsoft AD à l'aide des outils Microsoft Active Directory. Pour de plus amples informations sur la création des utilisateurs dans votre annuaire Active Directory, veuillez consulter Gérer des utilisateurs et des groupes dans AWS Managed Microsoft AD dans le AWS Directory Service Administration Guide.

  4. Créez ou modifiez une instance de base de données MySQL. Si vous utilisez l'interface de ligne de commande 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 un 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 à AWS, qui la gère.

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 des modules AD et DNS Windows PowerShell 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 à la 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 Annuaires, puis Configurer un annuaire.

  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 Mise en réseau, puis choisissez Suivant :

    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 l'annuaire).

    
              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 Statut devient 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 appelle AWS Directory Service pour vous, il est nécessaire de disposer d'un rôle IAM qui utilise la stratégie IAM gérée AmazonRDSDirectoryServiceAccess. Ce rôle permet à Amazon RDS d'effectuer des appels vers 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 de plus amples informations sur la création de rôles IAM pour un service, veuillez consulter Création d'un rôle pour déléguer des autorisations à un service AWS dans le IAM Guide de l'utilisateur.

Note

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

Vous pouvez également créer des stratégies avec les autorisations obligatoires au lieu d'utiliser la stratégie gérée IAM AmazonRDSDirectoryServiceAccess. Dans ce cas, le rôle IAM doit avoir la stratégie 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 stratégie 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, l'interface de ligne de commande 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 une instance de base de données, choisissez Mot de passe et authentification Kerberos dans la section Authentification de base de données. Choisissez Parcourir les annuaires, puis sélectionnez l'annuaire, ou choisissez Créer un nouvel annuaire.


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

Lorsque vous utilisez la console pour modifier ou restaurer une instance de base de données, choisissez l'annuaire dans la section Authentification Kerberos ou choisissez Créer un nouvel annuaire.


          Paramètre d'authentification Kerberos lors de la modification ou de la restauration d'une instance de base de données

Vous pouvez utiliser l'interface de ligne de commande ou l'API RDS pour associer 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 puisse utiliser 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 stratégie IAM gérée AmazonRDSDirectoryServiceAccess.

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

Pour Linux, macOS ou Unix :

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

Pour 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 et groupes 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 dans MySQL comme indiqué ci-dessous.

CREATE USER 'testuser'@'%' IDENTIFIED WITH 'auth_pam'; UPDATE mysql.user SET ssl_type = 'any' WHERE ssl_type = '' AND PLUGIN = 'auth_pam' and USER = 'testuser';` FLUSH PRIVILEGES;

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.

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

Vous pouvez utiliser l'interface de ligne de commande 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 le statut de l'appartenance au domaine pour l'instance de base de données en exécutant la commande d'interface de ligne de commande describe-db-instances. 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 en train d'activer 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 vous connecter à MySQL avec l'authentification Kerberos, procédez comme suit :

  1. A partir d'une invite de commande, exécutez la commande suivante.

    kinit username

    Remplacez username par le nom d'utilisateur puis, à l'invite, entrez le mot de passe stocké dans le Microsoft Active Directory pour l'utilisateur.

  2. Connectez-vous à l'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 effectuer une restauration à un instant donné pour 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 :

  • Il n'y a pas de prise en charge des répertoires Active Directory gérés ayant été partagés avec vous.

  • L'authentification Kerberos est prise en charge pour les versions Amazon RDS for MySQL suivantes :

    • Amazon RDS for MySQL version 8.0.13, 8.0.15 et 8.0.16

    • Amazon RDS for MySQL version 5.7.24, 5.7.25 et 5.7.26

  • 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.

  • 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 l'interface de ligne de commande 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.