diff --git a/pica-openldap/README.md b/pica-openldap/README.md new file mode 100644 index 0000000000000000000000000000000000000000..8d6dd90e8fcbfd9b26c7f899da37a12414f845ec --- /dev/null +++ b/pica-openldap/README.md @@ -0,0 +1,143 @@ +# pica/openldap + +Cette image est basée sur [osixia/openldap](https://github.com/osixia/docker-openldap). Elle est spécialisée pour les besoins de l'infrastructure de Picasoft. + +## Démarrage rapide + +```bash +cp secrets/pica-openldap.secrets.example secrets/pica-openldap.secrets \ +&& make \ +&& docker-compose up ldap-host +``` +Si tout se passe bien un conteneur de test est disponible + + +## Configuration + +La configuration par défaut de l'image est +dans les répertoires `bootstrap`, `environment`, `certs` et `secrets`. + +La table suivante donne le rôle de ces répertoires : + +| Répertoire | Contenu | À quoi ça sert | +|------------|---------|----------------| +| [bootstrap/schema](./bootstap/schema) | Schémas additionnels (format ldif) | Schémas ajoutés automatiquement à l'initialisation de la configuration) | +| [bootstrap/ldif](./bootstrap/ldif) | Entrées initiales de l'annuaire (format ldif) | Entrées automatiquement ajoutées à l'initialisation de l'annuaire | +| [environment](./environment) | Configuration par défaut | Définition des valeurs par défaut des variables d'environnement utilisables dans le docker-compose | +| [certs](./certs) | Certificats TLS | Certificats utilisés pour les connexions ldaps. Gérés au travers de Traefik par [pica-tls-certs-monitor](../pica-tls-certs-monitor), à laisser vide. +| [secrets](./secrets) | Mots de passe | Mots de passe utilisés pour les trois utilisateurs par défaut (admin, config et nss) + +Le contenu de ces répertoire est copié dans l'image à la construction, à l'exception des secrets. Cette copie +est supprimée par défaut une fois l'image configurée, après la première exécution du +conteneur. + +### Schémas additionnels + +* [ldapns.schema](./bootstrap/schema/ldapns.schema) : support des attributs `authorizedHost` et `authorizedServices` + +### Configuration par défaut + +* Le fichier [pica.startup.yaml](./environment/pica.startup.yaml) contient toutes les +valeurs par défaut des paramètres de configuration. Ces valeurs sont utilisées à la +création de le configuration du serveur ldap **à la première exécution du conteneur**. Le fichier est supprimé ensuite. + +* Le fichier [pica.yaml](./environment/pica.yaml) contient les paramètres de +de configuration utilisés à chaque démarrage du conteneur. Pour l'instant il est utilisé pour définir le niveau de messages de débogage de `slapd` et limiter le nombre +de descripteurs de fichiers utilisés (1024). On peut l'augmenter si on estime qu'il y aura plus de connexions simultanées sur le serveur. + +### Certificats + +La configuration par défaut spécifie les fichiers suivants : + +| Fichier | Rôle | +|---------|------| +| cert.pem | Certificat serveur | +| chain.pem | Certificat CA | +| privkey.pem | Clé privée serveur | + +### Secrets + +Le repertoire [secrets](./secrets) doit contenir le fichier `pica-openldap.secrets` +avec les mots de passe en clair qui seront utilisés pour l'administrateur de +l'annuaire, l'accès à la configuration et l'accès en lecture seule. Un modèle est +fourni dans le fichier [pica-ldap.secrets.examples](./secrets/ +pica-ldap.secrets.example). + +| Variable | Usage | +|----------|-------| +| LDAP_ADMIN_PASSWORD | Mot de passe de l'adminsitrateur de l'annuaire (cn=admin,dc=picasoft,dc=net)| +| LDAP_CONFIG_PASSWORD | Mot de passe de configuration (cn=admin,cn=config) | +| LDAP_READONLY_USER_PASSWORD | Mot de passe de l'utilisateur *read only* | + +> Attention : les mots de passe apparaîtront **en clair** dans l'environnement du conteneur. + +## Construction de l'image + +Dans le répertoire `pica-openldap` : + +```bash +$ make +``` + +### Mise à jour de l'image + +Il suffit de modifier la version de osixia/openldap dans le [Dockerfile](./Dockerfile) : + +```Dockerfile +FROM osixia/openldap:1.2.4 +``` + +Ne pas oublier de mettre à jour la version dans le [Makefile](./Makefile) : + +```Makefile +NAME = pica/openldap +VERSION = 0.0.1 +``` + +## Démarrage du conteneur + +Pour démarrer le conteneur, utiliser le fichier +[docker-compose.yml](./docker-compose.yml) fourni. La base de données et la +configuration peuvent être dans des volumes Docker automatiquement générés, mais il +faut que les certificats soient dans un volume nommé spécifique pour pouvoir être mis +à jour automatiquement par [pica-tls-certs-monitor](../pica-tls-certs-monitor). Il +s'agit du volume `ldap-certs`. Le fichier `secrets/pica-openldap.secrets` doit exister avant le premier démarrage. + +> Les informations contenues dans `pica-openldap.secrets` ne sont utilisées qu'au +premier démarrage, on peut le remplacer ensuite par une version vide. + +```bash +docker-compose up ldap-host +``` + +### Plus de logs + +Pour obtenir plus de logs, il suffit d'ajouter la ligne suivante au service `ldap-host` dans le fichier +[docker-compose.yml](./docker-compose.yml) : + +```yaml +command: --loglevel debug +``` + +## Test de l'image sur un client + +* Accès à la configuration (utiliser le mot de passe défini par LDAP_CONFIG_PASSWORD) + +```bash +ldapsearch -W -x -D cn=admin,cn=config -b cn=config +``` + +* Accès à l'annuaire (utiliser le mot de passe défini par LDAP_ADMIN_PASSWORD) + +```bash +ldapsearch -W -x -D cn=admin,dc=picasoft,dc=net -b dc=picasoft,dc=net +``` + +Ces deux commandes doivent fonctionner **sur l'hôte**. Si ce n'est pas le cas, il y +a une erreur de configuration. + +## Notes + +* La version 1.2.4 de l'image osixia/openldap ne fonctionne pas si on utilise un +*hostname* complet non résoluble par DNS dans le fichier docker-compose.yml. Dans ce +cas, il ne faut pas spécifier le FQDN, mais seulement le nom d'hôte (par exemple `ldap`). \ No newline at end of file