Configuration de l'authentification Kerberos pour les instances de base de données PostgreSQL - Amazon Relational Database Service

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

Vous utilisez AWS Directory Service for Microsoft Active Directory (Enterprise Edition) (AWS Managed Microsoft AD) pour configurer l'authentification Kerberos pour une instance de base de données PostgreSQL. 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 DNS pour vous. 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 votre 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.

    Important

    Veillez à enregistrer ce mot de passe. AWS Directory Service ne stocke pas ce mot de passe et il ne peut pas être récupéré ni réinitialisé.

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

Lorsque vous lancez AWS Directory Service for Microsoft Active Directory (Enterprise Edition), 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 entré 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 pour les activités d'administration 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 Active Directory et DNS (Domain Name Service) pour 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. Dans le volet de navigation de la console AWS Directory Service, choisissez Annuaires, puis Configurer l'annuaire.

  2. Choisissez AWS Managed Microsoft AD. AWS Managed Microsoft AD est la seule option actuellement prise en charge pour être utilisée avec Amazon RDS.

  3. Choisissez Suivant.

  4. Sur la page Enter directory information (Saisir les détails de l'annuaire), renseignez les informations suivantes :

    Edition

    Choisissez l'édition qui correspond à vos besoins.

    Nom de DNS de l'annuaire

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

    Nom NetBIOS de l'annuaire

    Nom court facultatif pour l'annuaire, par exemple CORP.

    Description de l'annuaire

    Description facultative 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 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.

    Important

    Veillez à enregistrer ce mot de passe. AWS Directory Service ne stocke pas ce mot de passe et il ne peut pas être récupéré ni réinitialisé.

  5. Choisissez Suivant.

  6. Sur la page Choose VPC and subnets (Choisir un VPC et des sous-réseaux), indiquez les informations suivantes :

    VPC

    Sélectionnez le VPC pour l'annuaire. Vous pouvez créer l'instance de base de données PostgreSQL dans ce même VPC ou dans un autre VPC.

    Sous-réseaux

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

  7. Choisissez Suivant.

  8. Vérifiez les informations de l’annuaire. Si vous devez apporter des modifications, choisissez Previous (Précédent) et entrez ces modifications. Lorsque les informations sont correctes, choisissez Create directory (Créer l'annuaire).

    
							Page de détails de l'annuaire

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 l'ID de l’annuaire dans la liste. Notez la valeur de ID de l'annuaire. Vous en aurez besoin pour créer ou modifier votre instance de base de données PostgreSQL.


					graphique de page de détails

Étape 2 : (Facultatif) Créer une approbation pour un Active Directory sur site

Si vous ne prévoyez pas d'utiliser votre propre Microsoft Active Directory sur site, passez à Étape 3 : Créer un rôle IAM pour qu'Amazon RDS accède à AWS Directory Service .

Pour obtenir l'authentification Kerberos à l'aide de votre Active Directory sur site, vous devez créer une relation de domaine d'approbation à l'aide d'une forêt d'approbation entre votre Microsoft Active Directory sur site et l'annuaire AWS Managed Microsoft AD (créé dans Étape 1 : Créer un annuaire à l'aide d'AWS Managed Microsoft AD). L'approbation peut être unidirectionnelle. Dans ce cas, l’annuaire AWS Managed Microsoft AD approuve Microsoft Active Directory sur site. L'approbation peut également être bidirectionnelle. Dans ce cas, les deux Active Directory s’approuvent mutuellement. Pour de plus amples informations sur la configuration d’approbations à l'aide d'AWS Directory Service, veuillez consulter Quand créer une relation d'approbation dans le AWS Directory Service Administration Guide.

Note

Si vous utilisez un Microsoft Active Directory sur site, les points de terminaison du cluster de base de données Les points de terminaison d'instance de base de données ne peuvent pas être utilisés par les clients Windows.

Assurez-vous que le nom de domaine de votre Microsoft Active Directory sur site inclut un routage de suffixe DNS correspondant à la relation d'approbation nouvellement créée. La capture d'écran suivante présente un exemple.


					Le routage DNS correspond à l'approbation créée

Étape 3 : Créer un rôle IAM pour qu'Amazon RDS accède à AWS Directory Service

Pour qu'Amazon RDS puisse appeler AWS Directory Service pour vous, un rôle IAM utilisant la stratégie IAM gérée AmazonRDSDirectoryServiceAccess est requis. 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, créez 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 Amazon RDS for PostgreSQL.

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 4 : Créer et configurer des utilisateurs

Vous pouvez créer des utilisateurs à l'aide de l'outil Active Directory Users and Computers, qui fait partie des outils Active Directory Domain Services et Active Directory Lightweight Directory Services. Dans ce cas, les utilisateurs sont des personnes ou des entités 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 Windows. Cette instance EC2 doit également être membre de l'annuaire AWS Directory Service. Parallèlement, vous devez être connecté en tant qu'utilisateur disposant de privilèges pour créer des utilisateurs. Pour de plus amples informations, veuillez consulter Créer un utilisateur dans le Guide d'administration AWS Directory Service.

Étape 5 : Activer le trafic entre VPC entre le répertoire et l'instance de base de données

Si vous avez l'intention de rechercher l'annuaire et l'instance de base de données dans le même VPC, ignorez cette étape et passez à Étape 6 : Créer ou modifier une instance de base de données PostgreSQL .

Si vous avez l'intention de rechercher l'annuaire et l'instance de base de données dans des VPC différents, configurez le trafic entre VPC à l'aide de l'appairage de VPC ou à l'aide de AWS Transit Gateway.

La procédure suivante active le trafic entre les VPC à l'aide de l'appairage de VPC. Suivez les instructions de Qu'est-ce que l'appairage de VPC ? dans le Guide de l'appairage Amazon Virtual Private Cloud.

Pour activer le trafic entre VPC à l'aide de l'appairage de VPC

  1. Configurez les règles de routage de VPC appropriées afin de veiller à ce que le trafic réseau puisse être acheminé dans les deux sens.

  2. Assurez-vous que le groupe de sécurité de l'instance de base de données puisse recevoir le trafic entrant depuis le groupe de sécurité de cet annuaire.

  3. Assurez-vous qu'il n'existe aucune règle de liste de contrôle d'accès (ACL) pour bloquer le trafic.

Si un autre compte AWS possède l'annuaire, vous devez le partager.

Pour partager l'annuaire entre des comptes AWS

  1. Commencez le partage de l'annuaire avec le compte AWS dans lequel l'instance de base de données sera créée en suivant les instructions du Didacticiel : Partage de votre annuaire AWS Managed Microsoft AD pour la jonction de domaines EC2 en toute transparence dans le Guide d'administration AWS Directory Service.

  2. Connectez-vous à la console AWS Directory Service à l'aide du compte pour l'instance de base de données et assurez-vous que l'état du domaine est SHARED avant de poursuivre.

  3. Lorsque vous êtes connecté à la console AWS Directory Service avec le compte de l'instance de base de données, notez la valeur de ID de l'annuaire. Vous utilisez cet ID pour joindre l'instance de base de données au domaine.

Étape 6 : Créer ou modifier une instance de base de données PostgreSQL

Créez ou modifiez une instance de base de données PostgreSQL en vue de son utilisation 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 PostgreSQL dans un VPC. L'instance de base de données peut se trouver dans le même VPC que l'annuaire ou dans un autre VPC. L'instance de base de données doit utiliser un groupe de sécurité qui accepte les sorties du VPC de l'annuaire, 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

Lorsque vous utilisez l'AWS CLI, les paramètres suivants sont obligatoires pour que l'instance de base de données puisse utiliser l'annuaire 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.

aws rds modify-db-instance --db-instance-identifier mydbinstance --domain d-Directory-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 7 : Créer les connexions PostgreSQL d'authentification Kerberos

Utilisez ensuite les informations d'identification de l'utilisateur principal RDS pour vous connecter à l'instance de base de données PostgreSQL de la même manière qu'avec 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 mettre en service les connexions et utilisateurs PostgreSQL depuis les utilisateurs et groupes Microsoft Active Directory de votre domaine. Pour gérer les autorisations de base de données, vous pouvez octroyer et annuler les autorisations PostgreSQL standard pour ces connexions.

Pour autoriser un utilisateur Active Directory à s'authentifier avec PostgreSQL, utilisez les informations d'identification de l'utilisateur principal RDS. Vous utilisez ces informations d'identification pour vous connecter à l'instance de base de données PostgreSQL de la même manière que pour n'importe quelle instance de base de données. Après vous être connecté, créez un utilisateur authentifié en externe dans PostgreSQL et accordez-lui le rôle rds_ad.

CREATE USER "username@CORP.EXAMPLE.COM" WITH LOGIN; GRANT rds_ad TO "username@CORP.EXAMPLE.COM";

Remplacez username par le nom de l'utilisateur et incluez le nom de domaine en majuscules. Les utilisateurs (personnes et applications) de votre domaine peuvent désormais se connecter à l'instance PostgreSQL RDS à partir d'un ordinateur client joint au domaine à l'aide de l'authentification Kerberos.

Étape 8 : Configurer un client PostgreSQL

Pour configurer un client PostgreSQL, procédez comme suit :

  • Créez un fichier krb5.conf (ou équivalent) pointant vers le domaine.

  • Vérifiez que le trafic peut circuler entre l'hôte du client et AWS Directory Service. Utilisez un utilitaire réseau tel que Netcat pour les opérations suivantes :

    • Vérifiez le trafic via DNS pour le port 53.

    • Vérifiez le trafic via TCP/UDP pour le port 53 et pour Kerberos, cela incluant les ports 88 et 464 pour AWS Directory Service.

  • Vérifiez que le trafic peut circuler entre l'hôte du client et l'instance de base de données via le port de la base de données. Par exemple, utilisez psql pour vous connecter à la base de données et y accéder.

Vous trouverez ci-après un exemple de contenu krb5.conf pour AWS Managed Microsoft AD.

[libdefaults] default_realm = EXAMPLE.COM default_ccache_name = /tmp/kerbcache [realms] EXAMPLE.COM = { kdc = example.com admin_server = example.com } [domain_realm] .example.com = EXAMPLE.COM example.com = EXAMPLE.COM

Vous trouverez ci-après un exemple de contenu krb5.conf pour un Microsoft Active Directory sur site.

[libdefaults] default_realm = EXAMPLE.COM default_ccache_name = /tmp/kerbcache [realms] EXAMPLE.COM = { kdc = example.com admin_server = example.com } ONPREM.COM = { kdc = onprem.com admin_server = onprem.com } [domain_realm] .example.com = EXAMPLE.COM example.com = EXAMPLE.COM .onprem.com = ONPREM.COM onprem.com = ONPREM.COM .rds.amazonaws.com = EXAMPLE.COM .amazonaws.com.cn = EXAMPLE.COM .amazon.com = EXAMPLE.COM