diff --git a/pica-openldap/README.md b/pica-openldap/README.md index 9fa5c7b320d0a9a52d5ac60b7df449bcda650a05..6a19a468117ab5bdf6f2f35b9c7dcbb772e8e842 100644 --- a/pica-openldap/README.md +++ b/pica-openldap/README.md @@ -1,39 +1,70 @@ -# pica/openldap +# Serveur LDAP + +<!-- TOC depthFrom:2 depthTo:6 withLinks:1 updateOnSave:1 orderedList:0 --> + +- [Démarrage](#dmarrage) +- [Configuration](#configuration) + - [Schémas additionnels](#schmas-additionnels) + - [Entrée initiales de l'annuaire](#entre-initiales-de-lannuaire) + - [Configuration par défaut](#configuration-par-dfaut) + - [Certificats](#certificats) + - [Secrets](#secrets) + - [Plus de logs](#plus-de-logs) +- [Mise à jour de l'image](#mise-jour-de-limage) +- [Démarrage du conteneur](#dmarrage-du-conteneur) +- [Test de l'image sur un client](#test-de-limage-sur-un-client) + +<!-- /TOC --> 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 +Cette image **doit être lancée** aux côtés de [TLS Certs Monitor](../pica-tls-certs-monitor) pour fonctionner. + +## Démarrage + +La construction de ce service est géré par la chaîne ; il suffit donc de se rendre sur l'hôte souhaité et de lancer la commande : ```bash -cp secrets/pica-openldap.secrets.example secrets/pica-openldap.secrets \ -&& make \ -&& docker-compose up ldap-host +docker-compose up -d && docker-compose logs -f ``` -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`. +Par rapport à la configuration de base, cette version : +* Spécifie l'organisation Picasoft (variables d'environnement dans le Docker Compose), +* Configure un utilisateur `readonly` appellé `nss`, +* Active et force la connexion TLS au serveur LDAP, +* Ajoute les schémas additionnels (permettant d'utiliser `host` et `authorizedService`, par exemple), +* Crée la structure du base du LDAP (Group, People, Service), +* Ajoute des entrées d'exemple pour les comptes. + +La configuration par défaut de l'image est dans les répertoires `bootstrap`, `environment` 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/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. +| [environment](./environment) | Configuration par défaut | Définition des valeurs par défaut des variables d'environnement utilisables dans le Docker Compose | | [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 +Le contenu de ces répertoire est copié dans l'image à la construction. 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` +Le fichier [ldapns.schema](./bootstrap/schema/ldapns.schema) permet le support des attributs `host` et `authorizedServices`. + +### Entrée initiales de l'annuaire + +Le fichier [init.ldif](./bootstrap/ldfi/init.ldif) crée la structure de base de l'annuaire : +* Une OU (Organizational Unit) `People`, pour les comptes POSIX personnels, +* Une OU `Group`, pour les groupes POSIX, +* Une OU `Service`, pour les comptes POSIX "virtuels", destinés aux services comme Mattermost. + +Il crée aussi des entrées `template` donnant un exemple pour chacun de ces types. ### Configuration par défaut @@ -71,37 +102,33 @@ pica-ldap.secrets.example). > Attention : les mots de passe apparaîtront **en clair** dans l'environnement du conteneur. -## Construction de l'image +### Plus de logs -Dans le répertoire `pica-openldap` : +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) : -```bash -make +```yaml +command: --loglevel debug ``` -### Mise à jour de l'image +## 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 +FROM osixia/openldap:1.3.0 ``` -Ne pas oublier de mettre à jour la version dans le [Makefile](./Makefile) : +Ne pas oublier de mettre à jour la version dans le [docker-compose.yml](./docker-compose.yml) : -```Makefile -NAME = pica/openldap -VERSION = 0.0.1 +``` +image: registry.picasoft.net/pica-openldap:1.3.0 ``` ## 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. +[docker-compose.yml](./docker-compose.yml) fourni. Il faut s'assurer que [pica-tls-certs-monitor](../pica-tls-certs-monitor) est lancé pour disposer 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. @@ -110,24 +137,15 @@ premier démarrage, on peut le remplacer ensuite par une version vide. 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) +* 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) +* 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 @@ -135,9 +153,3 @@ 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