Il est fréquent dans une organisation qu'une politique de mots de passe doive être respectée sur les systèmes d'information. Le système de gestion de bases de données PostgreSQL propose pour cela le module passwordcheck qui est un module contrib qui permet de mettre en place des critères de complexité sur les mots de passe, mais ce dernier est assez pauvre en fonctionnalités.
En effet, il permet seulement de faire respecter les critères suivants :
Longueur du mot de passe.
Présence de majuscules et minuscules.
Présence de caractères numériques.
Au-delà de ces contrôles basiques, il est certes possible d'étendre la fonctionnalité, mais cela nécessite de modifier les sources du module (C).
Une alternative très intéressante en terme de fonctionnalités est d'interfacer l'instance PostgreSQL avec l'annuaire Active Directory de l'organisation. Avec cette option, on profite de la possibilité de mettre en place des règles de complexité et/ou d'expiration de mots de passe très évoluées. La mise en place de cet interfaçage est par ailleurs relativement simple.
Prérequis
Le lab pour cette installation est constitué des machines suivantes :
Un DC Windows Server 2019 (10.0.0.120). L'installation Active Directory ne sera pas décrite ici, le serveur est déjà promu contrôleur de domaine sur le domaine pglab.lan.
Un cluster PostgreSQL 12 (10.0.0.100) basé sur un serveur CentOS 7.
Le flux réseau sur le port 389 ouvert depuis le serveur PostgreSQL vers le contrôleur de domaine.
La création d'un user AD uniquement dédié au requêtage LDAP.
Préparation Active Directory
Afin de mettre en œuvre l'interfacage avec l'AD, on commence par créer un utilisateur pour le lookup LDAP. Ce compte ne sera pas celui qui doit s’authentifier auprès du cluster PostgreSQL, mais plutôt celui qui sera utilisé par le cluster pour rechercher des comptes utilisateur dans l'annuaire.
Pour créer un utilisateur, lancer la console "Utilisateurs et ordinateurs Active Directory" sur le contrôleur de domaine et créer un nouvel utilisateur dans l'UO Users :
Saisir son nom, ici on le nomme ldaplookup.
Saisir un mot de passe, décocher l'option "L'utilisateur doit changer son mot de passe à la prochaine ouverture de session". Cocher l'option "Le mot de passe n'expire jamais".
Répéter cette opération si aucun utilisateur n'existe pour la connexion PostgreSQL. Ici, nous avons créé l'utilisateur pguser1, dans l'UO Users également.
Connexion depuis PostgreSQL
Pour s'interfacer avec un annuaire LDAP, le moteur PostgreSQL a besoin d'un client LDAP, qu'il faut donc installer en tant que root sur le serveur.
yum install open-ldap-client
Se rendre dans le répertoire PGDATA de l'instance (variable d'environnement $PGDATA si l'environnement du cluster est bien configuré) et éditer le fichier pg_hba.conf.
cd $PGDATA
vi pg_hba.conf
Ce fichier est lu de manière séquentielle lors d'une tentative de connexion.
Il permet de configurer très finement les autorisations, et peut par exemple n'autoriser la connexion aux bases de données que via l'annuaire LDAP.
Ajouter la ligne suivante en début de fichier :
host all all 10.0.0.0/24 ldap ldapserver=10.0.0.120 ldapbasedn="cn=Users,dc=pglab,dc=lan" ldapbinddn="CN=ldaplookup,CN=Users,dc=pglab,dc=lan" ldapbindpasswd="secret" ldapsearchattribute="sAMAccountName"
Bien vérifier ou adapter les valeurs positionnées pour :
Le réseau IP concerné avec le masque CIDR correspondant, on autorise ici la connexion depuis tout le réseau 10.0.0 (10.0.0.0/24)
ldapserver : L'IP du contrôleur de domaine
ldapbasedn : Le path LDAP du user de lookup : CN=ldaplookup,CN=Users,dc=pglab,dc=lan
ldapbinddn : Le path LDAP de l'UO qui contient les utilisateur à authentifier, ici il s'agit de l'UO Users : cn=Users,dc=pglab,dc=lan
ldapbindpasswd : Password du user de lookup
Il convient alors de recharger la configuration du cluster PostgreSQL pour prendre en compte la modification dans le fichier pg_hba.conf :
pg_ctl reload
La connexion doit désormais être possible pour tous les utilisateurs qui se trouvent dans l'UO Users, et ce pour toutes les bases de données du cluster.
On peut bien entendu gérer plus finement quelles bases de données sont autorisées dans le fichier pg_hba.conf.
Une fois ce lien LDAP en place, la gestion des critères de complexité et d'expiration des mots de passe est entièrement déléguée à l'annuaire Active Directory, qui est très riche en fonctionnalités en la matière.
Partage
Gardez un oeil sur tout
Recevez des notifications dès la publication d’un nouvel article et restez informé de l’actualité Cloud !
Pour offrir les meilleures expériences, nous utilisons des technologies telles que les cookies pour stocker et/ou accéder aux informations des appareils. Le fait de consentir à ces technologies nous permettra de traiter des données telles que le comportement de navigation ou les ID uniques sur ce site. Le fait de ne pas consentir ou de retirer son consentement peut avoir un effet négatif sur certaines caractéristiques et fonctions.
Fonctionnel
Toujours activé
L’accès ou le stockage technique est strictement nécessaire dans la finalité d’intérêt légitime de permettre l’utilisation d’un service spécifique explicitement demandé par l’abonné ou l’utilisateur, ou dans le seul but d’effectuer la transmission d’une communication sur un réseau de communications électroniques.
Préférences
L’accès ou le stockage technique est nécessaire dans la finalité d’intérêt légitime de stocker des préférences qui ne sont pas demandées par l’abonné ou l’internaute.
Statistiques
Le stockage ou l’accès technique qui est utilisé exclusivement à des fins statistiques.Le stockage ou l’accès technique qui est utilisé exclusivement dans des finalités statistiques anonymes. En l’absence d’une assignation à comparaître, d’une conformité volontaire de la part de votre fournisseur d’accès à internet ou d’enregistrements supplémentaires provenant d’une tierce partie, les informations stockées ou extraites à cette seule fin ne peuvent généralement pas être utilisées pour vous identifier.
Marketing
L’accès ou le stockage technique est nécessaire pour créer des profils d’internautes afin d’envoyer des publicités, ou pour suivre l’utilisateur sur un site web ou sur plusieurs sites web ayant des finalités marketing similaires.