L'authentification Active Directory (AD) permet aux utilisateurs d'entreprise de se connecter à votre instance RDS PostgreSQL avec leurs identifiants AD, sans mot de passe de base de données distinct. Ce guide détaille la configuration d'un contrôleur de domaine AD sur une instance Elastic Compute Service (ECS), puis la connexion de votre instance RDS à ce domaine AD auto-géré via LDAP.
Fonctionnement
Lorsqu'un utilisateur se connecte à l'instance RDS, celle-ci transmet la demande d'authentification au contrôleur de domaine AD via le protocole LDAP (Lightweight Directory Access Protocol). Le contrôleur de domaine vérifie les identifiants de l'utilisateur et renvoie le résultat. Si l'authentification AD est activée pour la connexion, le contrôleur de domaine AD gère la vérification du mot de passe. Dans le cas contraire, ApsaraDB RDS utilise son propre mécanisme de vérification par mot de passe.
L'instance RDS et le contrôleur de domaine AD communiquent exclusivement sur le réseau privé. Les deux ressources doivent donc résider dans le même Virtual Private Cloud (VPC).
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Une instance ApsaraDB RDS for PostgreSQL exécutant PostgreSQL 10 ou version ultérieure, avec une version mineure du moteur 20210228 ou ultérieure, et utilisant des disques cloud. Pour mettre à jour la version mineure du moteur, consultez Mettre à jour la version mineure du moteur d'une instance ApsaraDB RDS for PostgreSQL.
Une instance ECS située dans le même VPC que l'instance RDS, exécutant Windows Server 2016 ou version ultérieure.
Un groupe de sécurité ECS configuré pour autoriser le trafic entrant provenant de l'adresse IP privée de l'instance RDS. Consultez Ajouter une règle de groupe de sécurité. Si le pare-feu ECS est activé, configurez-le également pour autoriser ce trafic (le pare-feu est désactivé par défaut).
Un compte de domaine appartenant au groupe Domain Admins.
Un accès à la console ApsaraDB RDS.
Étape 1 : Configurer le contrôleur de domaine AD sur ECS
Le contrôleur de domaine AD doit fonctionner sous Windows Server. Ce guide prend Windows Server 2016 comme exemple.
Connectez-vous à l'instance ECS et ouvrez Server Manager.
-
Dans le volet de navigation de gauche, cliquez sur Dashboard, puis sur Add roles and features.

-
Dans l'assistant Add Roles and Features Wizard, configurez chaque onglet comme suit :
L'instance ECS doit posséder une adresse IP statique. Une adresse IP dynamique rendrait le serveur DNS indisponible.
Onglet Paramètre Before You Begin Conservez les paramètres par défaut. Installation Type Conservez les paramètres par défaut. Server Selection Conservez les paramètres par défaut. Server Roles Sélectionnez Active Directory Domain Services, puis cliquez sur Add Features dans la boîte de dialogue. Sélectionnez ensuite DNS Server, puis cliquez sur Add Features. Features Conservez les paramètres par défaut. AD DS Conservez les paramètres par défaut. DNS Server Conservez les paramètres par défaut. Install Cliquez sur Install. Une fois l'installation terminée, cliquez sur Close.
-
Dans le volet de navigation de gauche, cliquez sur AD DS. Dans le coin supérieur droit, cliquez sur More.

-
Dans le panneau All Servers Task Details and Notifications, cliquez sur Promote this server to a domain controller.

-
Dans l'assistant Active Directory Domain Services Configuration Wizard, effectuez la configuration suivante :
Onglet Paramètre Deployment Configuration Sélectionnez Add a new forest et définissez le Root domain name. Cet exemple utilise pgsqldomain.net(pgsqldomainest le préfixe,netest le suffixe). Utilisez le même nom de domaine racine tout au long de la configuration.
Domain Controller Options Définissez un Directory Services Restore Mode (DSRM) password. 
Server Selection Désélectionnez l'option Create DNS delegation. 
Additional Options, Paths, Review Options Conservez les paramètres par défaut. Prerequisites Check Cliquez sur Install. Après le redémarrage de l'instance ECS en tant que contrôleur de domaine AD, reconnectez-vous avant de passer à l'étape suivante.
Étape 2 : Ajouter des utilisateurs au contrôleur de domaine AD
Deux types d'utilisateurs AD sont nécessaires : un utilisateur administrateur (utilisé par LDAP pour se lier à l'annuaire) et un utilisateur standard (utilisé pour se connecter à l'instance RDS).
Ajouter un utilisateur administrateur
-
Dans Server Manager, cliquez sur AD DS dans le volet de navigation de gauche. Faites un clic droit sur le contrôleur de domaine et sélectionnez Active Directory Users and Computers.

-
Développez pgsqldomain.net, faites un clic droit sur Users, puis choisissez New > User.
pgsqldomain.netcorrespond au nom de domaine racine défini à l'étape 1.
-
Saisissez un nom d'utilisateur et cliquez sur Next.

-
Saisissez un mot de passe, sélectionnez Password never expires, puis cliquez sur Next et Finish.

-
Double-cliquez sur le nouvel utilisateur et ajoutez-le au groupe Domain Admins.


Ajouter un utilisateur standard
Suivez les mêmes étapes que ci-dessus pour créer un utilisateur standard. Ne l'ajoutez pas au groupe Domain Admins.
Cet exemple utilise ldapuser comme utilisateur standard. Ce compte servira à la connexion à l'instance RDS.
Étape 3 : Configurer les règles de groupe de sécurité pour ECS
Le contrôleur de domaine AD nécessite l'ouverture de plusieurs ports. Utilisez un groupe de sécurité dédié pour le contrôleur de domaine plutôt que de le partager avec d'autres instances ECS.
Connectez-vous à la console ECS et accédez à Instances & Images > Instances.
Dans la barre de navigation supérieure, sélectionnez la région de l'instance ECS.
Cliquez sur l'ID de l'instance ECS, puis sur Security Groups dans le volet de navigation de gauche.
Cliquez sur Add Rules dans la colonne Actions.
-
Sous l'onglet Inbound, cliquez sur Add Rule pour autoriser l'instance RDS à joindre l'instance ECS sur les ports suivants :
Protocole Port Service TCP 88 Authentification Kerberos TCP 135 RPC TCP/UDP 389 LDAP TCP 445 CIFS TCP 3268 Global Catalog TCP/UDP 53 DNS TCP 49152–65535 Plage de ports dynamiques par défaut (saisir 49152/65535)
Étape 4 : Configurer l'instance RDS
Créer un compte de base de données correspondant
Dans la console ApsaraDB RDS, localisez l'instance RDS et cliquez sur son ID.
-
Créez un compte nommé
ldapuser. Consultez Créer un compte.Le nom du compte RDS doit correspondre exactement au nom de l'utilisateur standard AD (
ldapuserdans cet exemple). Les mots de passe peuvent différer. Lorsque l'authentification AD est active, le contrôleur de domaine AD vérifie le mot de passe. Lorsqu'elle est inactive, ApsaraDB RDS utilise le mot de passe du compte défini dans la console.
Configurer le service de domaine AD
-
Dans le volet de navigation de gauche, cliquez sur Accounts, puis ouvrez l'onglet AD Domain Services. Lors de la première ouverture de cet onglet, le système crée deux enregistrements par défaut :
host all all 0.0.0.0/0 md5 host replication all 0.0.0.0/0 md5Vous pouvez supprimer ou modifier ces enregistrements.
-
Cliquez sur Edit pour le premier enregistrement et configurez les paramètres suivants. Pour le champ OPTION, respectez le format ci-après :
Paramètre Valeur d'exemple Description Priority 0Priorité de l'enregistrement. La valeur 0correspond à la priorité la plus élevée et est attribuée automatiquement au premier enregistrement.TYPE hostType de connexion. La valeur hostcorrespond aux connexions TCP/IP avec et sans SSL. La valeurhostsslcorrespond uniquement aux connexions SSL (nécessite l'activation du chiffrement SSL). La valeurhostnosslcorrespond uniquement aux connexions non-SSL.DATABASE allBases de données accessibles aux utilisateurs spécifiés. Utilisez allpour autoriser l'accès à toutes les bases de données. Séparez les noms de plusieurs bases de données par des virgules.USER ldapuserUtilisateurs standard AD autorisés à se connecter. Séparez les noms de plusieurs utilisateurs par des virgules. Les comptes Domain Admins ne peuvent pas être utilisés ici. ADDRESS 0.0.0.0/0Adresses IP source autorisées. La valeur 0.0.0.0/0autorise les connexions depuis n'importe quelle adresse IP.MASK (laisser vide) Masque de sous-réseau pour l'adresse IP indiquée dans ADDRESS. Laissez ce champ vide lors de l'utilisation de la notation CIDR. METHOD ldapMéthode d'authentification. Doit être en minuscules. Valeurs valides : trust,reject,scram-sha-256,md5,password,gss,sspi,ldap,radius,cert,pam.OPTION Voir ci-dessous Options LDAP requises lorsque METHOD est défini sur ldap.ldapserver=<Private IP address of the ECS instance> ldapbasedn="CN=Users,DC=<domain prefix>,DC=<domain suffix>" ldapbinddn="CN=<AD administrator username>,CN=Users,DC=<domain prefix>,DC=<domain suffix>" ldapbindpasswd="<AD administrator password>" ldapsearchattribute="sAMAccountName"Pour le domaine d'exemple
pgsqldomain.netavec l'utilisateur administrateuradminuser:ldapserver=<ECS private IP> ldapbasedn="CN=Users,DC=pgsqldomain,DC=net" ldapbinddn="CN=adminuser,CN=Users,DC=pgsqldomain,DC=net" ldapbindpasswd="<adminuser password>" ldapsearchattribute="sAMAccountName"Pour la liste complète des paramètres OPTION, consultez la documentation sur les méthodes d'authentification PostgreSQL.
-
Cliquez sur add à droite de l'enregistrement du service de domaine AD pour ajouter un enregistrement de secours avec les valeurs suivantes :
host all all 0.0.0.0/0 md5 -
Cliquez sur OK, puis sur Submit.
Après avoir cliqué sur Submit , l'instance RDS passe à l'état Maintaining Instance pendant environ une minute. Les nouvelles configurations ne prennent effet que pour les nouvelles connexions. Fermez les connexions existantes et reconnectez-vous pour appliquer les modifications.
Étape 5 : Tester la connexion
Connectez-vous à l'instance RDS à l'aide de l'outil en ligne de commande psql. Utilisez les identifiants de l'utilisateur standard AD, et non le mot de passe du compte RDS.
psql -h <RDS instance endpoint> -U ldapuser -p 5432 -d postgres
Lorsque vous êtes invité à saisir un mot de passe, entrez le mot de passe AD pour ldapuser (et non le mot de passe du compte RDS).
Installez le client PostgreSQL avant d'utiliser psql . Pour d'autres méthodes de connexion, consultez Se connecter à une instance ApsaraDB RDS for PostgreSQL .
Importer des enregistrements de service de domaine AD en masse (facultatif)
Pour configurer plusieurs enregistrements de service de domaine AD simultanément, utilisez la fonctionnalité d'importation en masse.

Modes d'importation :
Overwrite existing service information : remplace tous les enregistrements actuels.
Additional service information (highest priority) : insère les nouveaux enregistrements au début, leur attribuant une priorité supérieure à celle des enregistrements existants.
Additional service information (lowest priority) : ajoute les nouveaux enregistrements à la fin, leur attribuant une priorité inférieure à celle des enregistrements existants.
Format requis :
TYPE|DATABASE|USER1|ADDRESS|MASK|METHOD|OPTION
Exemple d'enregistrement :
host|all|ldapuser|0.0.0.0/0||ldap|ldapserver=<ECS private IP> ldapbasedn="CN=Users,DC=pgsqldomain,DC=net" ldapbinddn="CN=<AD administrator username>,CN=Users,DC=pgsqldomain,DC=net" ldapbindpasswd="<AD administrator password>" ldapsearchattribute="sAMAccountName"
Saisissez les enregistrements dans la zone de texte Edit AD domain, puis sélectionnez un mode d'importation et envoyez.
Consulter l'historique des modifications du service de domaine AD
Dans la console RDS, cliquez sur l'ID de l'instance, puis accédez à Accounts > AD Domain Services Edit History.
-
Cliquez sur changedetails dans la colonne Actions pour afficher les détails de la modification. Si une modification a échoué, l'état affiche Not Taking Effect. Cliquez sur Change log pour consulter le message d'erreur.
