- Shell 74.2%
- Dockerfile 16.5%
- Smarty 9.3%
This will allow external connexions to be logged with the correct source IP address. refers to collectivit/collectivit#74 |
||
|---|---|---|
| config | ||
| scripts | ||
| .pre-commit-config.yaml | ||
| docker-compose.yaml | ||
| Dockerfile | ||
| LICENSE | ||
| README.md | ||
docker-openldap
Aperçu
Ce container Docker exécute le serveur OpenLDAP (https://www.openldap.org/)[https://www.openldap.org/].
Les extensions et overlay suivants sont configurées dans le container :
-
argon2, pour hasher les mots de passe en utilisant l'algorithme Argon2.
-
memberOf, pour ajouter automatiquement un attribut "memberOf" contenant les groupes auxquels appartient un objet LDAP.
L'annuaire est initialisé avec l'objet racine dont le DN[^1] est configuré dans la variable d'environnement
BASE_DN. Plusieurs objets sont automatiquement provisionnés (les DNs suivant valent pour une configuration
BASE_DN=dc=example,dc=com) :
-
Des OUs[^2] :
ou=accounts,dc=example,dc=com, destinée à contenir les comptes de service.ou=groups,dc=example,dc=com, destinée à contenir les groupes.ou=people,dc=example,dc=com, destinée à contenir les comptes utilisateurices.
-
Un groupe
cn=admins,ou=groups,dc=example,dc=com. Les droits en lecture / écriture sur tout l'annuaire sont accordés aux comptes de service ou utilisateurices qui sont membre de ce groupe. -
Deux comptes de service sont créés :
-
uid=ldap-ro,ou=accounts,dc=example,dc=com, utilisable pour accéder à l'annuaire en lecture seule (utile pour les services de recherche ou d'authentification par exemple). Le mot de passe de ce compte doit être définit via la variable d'environnementRO_PASSWORD. -
uid=ldap-rw,ou=accounts,dc=example,dc=com, utilisable pour accéder à l'annuaire en lecture / écriture. Le mot de passe de ce compte doit être définit via la variable d'environnementRW_PASSWORD.
-
-
Un utilisateur
uid=admin,ou=people,dc=example,dc=comest créé si le groupecn=admin,ou=groups,dc=example,dc=comest vide au lancement du container. Le mot de passe estpasswordet devra être changé, ou le compte supprimé une fois un compte utilisateurice créé et ajouté au groupecn=admin,ou=groups,dc=example,dc=com
[^1] Un DN (Distinguished Name) LDAP, est l'identifiant unique d'un objet LDAP. Il représente en quelque sort sont chemin d'accès dans l'annuaire, qui est hiérarchique.
[^2] Une OU (Organizational Unit) est un objet LDAP utilisé pour hiérarchiser le contenu d'un annuaire LDAP, une, sorte de répertoire.
Variables d'environnement
Les variables d'environnement suivantes doivent être définies :
Accès
-
BASE_DN (
dc=example,dc=compar défaut): Le DN de base de l'annuaire. -
RO_PASSWORD (requis): Le mot de passe du compte de service pour l'accès à l'annuaire en lecture seule.
-
RW_PASSWORD (requis): Le mot de passe du compte de service pour l'accès à l'annuaire en lecture / écriture.
Volumes
La base de données contenant l'annuaire est stockée dans le répertoire /var/lib/openldap/data. Ce répertoire
doit être accessible en lecture / écriture à l'utilisateur LDAP du container (uid 100, gid: 101).
Ports
Le container expose le serveur LDAP sur deux ports :
-
389 : accès LDAP classique.
-
3890 : accès LDAP derrière un proxy (répartisseur de charge, passerelle...) qui envoie l'en-tête PROXY protocol v2 (slapd ne supporte pas la v1, au format texte). slapd y lit l'adresse réelle des clients, qui apparaît alors dans les journaux et peut être utilisée dans les ACLs (
peername). Les connexions qui n'envoient pas cet en-tête sont refusées sur ce port.
Développement
Le fichier docker-compose permet de lancer OpenLDAP sur une machine locale. Une interface de gestion LDAP PHPLDAPAdmin est installée pour éditer l'annuaire. Pour démarrer OpeenLDAP sur votre machine, installez docker et docker compose, et lancez :
docker-compose up --build
Le serveur LDAP sera accessible à localhost:4940. L'interface PHPLDAPAdmin sera accessbile à localhost:9441.