2019-09-24 00:01:49 -03:00

148 lines
4.8 KiB
Markdown

# Rol openldap-docker
Este rol configurar un servicio OpenLDAP dentro de un container
Docker. Permite un esquema de replicación delta-syncrepl [deltasync].
El rol efectúa a grandes rasgos las siguientes tareas:
1. _Configuración general_: setea clave del administrador
`cn=admin,cn=config` y carga esquemas.
2. _Configuración de provider delta-syncrepl_: configura los módulos
`accesslog` y `syncprov` en el provider de replicación.
3. _Configuración de dominios_: Hace un _loop_ sobre cada dominio
especificado en `openldap_domains`, configurando entradas de las
base de datos en `cn=config` y clientes de replicación del dominio.
La siguientes consideraciones deben ser tenidas en cuenta al usar este rol:
* Se deben especificar *primero* los dominios más generales
(`ejemplo.com.ar`) y luego los más específicos
(`sub.ejemplo.com.ar`).
* La base `cn=accesslog` del provider requiere que se especifique un
usuario administrador en la variable `openldap_accesslog_admin_dn`.
Este usuario *debe* pertenecer a alguno de los dominios
configurados en el servidor.
* Se debe setear una clave para el usuario administrador
`cn=admin,cn=config` en la variable `openldap_admin_password`.
## Configuración del rol
Las variables a continuación determinan el comportamiento del rol.
El valor por defecto se muestra entre paréntesis.
### Configuraciones generales
* `openldap_schemas`: Schemas a cargar. Cada schema personalizado se
debe agregar el LDIF correspondiente en
`files/schemas/NOMBRE.ldif` dentro del rol. Valor por defecto:
```yaml
- core
- cosine
- nis
- inetorgperson
- misc
```
* `openldap_create_dit_entries` (`yes`): Especifica si se debe crear
el DIT: dominios, usuarios administradores, OUs, para cada
dominio.
### Replicación
A no ser que se seteen las variables a continuación, el rol no
configura replicación alguna.
* `openldap_provider` (`no`):
En un esquema de replicación, el host es provider.
* `openldap_consumer` (`no`):
En un esquema de replicación, el host es consumer.
* `openldap_replicator_base` (`dc=example,dc=com`):
DN base a partir del cual se replica.
* `openldap_accesslog_dir` (`/var/lib/ldap/accesslog`):
Directorio donde crear la base `cn=accesslog`.
### Credenciales
* `openldap_admin_password` (`password`):
Clave del usuario administrador `cn=admin,cn=config`.
* `openldap_accesslog_admin_dn` (`cn=admin,dc=example,dc=com`):
DN del usuario administrador para la base `cn=accesslog`.
Se debe setear en el _provider_.
* `openldap_replicator_dn` (`cn=replicator,dc=example,dc=com`):
DN del usuario usado para replicación.
Se debe setear en el _provider_ y en el _consumer_.
* `openldap_replicator_password` (`password`):
Clave del usuario usado para replicación.
Se debe setear en el _provider_ y en el _consumer_.
### Valores por defecto para los dominios
* `openldap_default_db_access`: Lista con permisos de acceso.
Valor por defecto:
```yaml
- {0}to attrs=userPassword by self write by anonymous auth by * none"
- {1}to attrs=shadowLastChange by self write by * read"
- {2}to * by * read"
```
* `openldap_default_db_index`: Lista con índices del dominio.
Valor por defecto:
```yaml
- cn,uid eq
- member,memberUid eq
- objectClass eq
- uidNumber,gidNumber eq
```
* `openldap_default_db_limits`: Límites de acceso al dominio.
Valor por defecto: `[]` (lista vacía)
* `openldap_default_domain_ous`: OUs a crear dentro del dominio.
Valor por defecto:
```yaml
- Alias
- Group
- People
```
### Configuración de dominios
La configuración de los dominios se setea en la variable
`openldap_domains` (`[]`). Esta variable es una _lista de
diccionarios_ en la que cada item representa un dominio.
Cada dominio (diccionario) tiene las siguientes claves:
* `name`: Obligatorio. Nombre del dominio en notación `mi.dominio.com`.
Para este ejemplo se crea la organizacion `dc=mi,dc=ejemplo,dc=com`.
* `admincn` (`admin`): cn del administrador, cuyo DN vendrá dado por
`cn=admin,dc=mi,dc=ejemplo,dc=com`.
* `adminpw` (`password`): clave del administrador del dominio.
Se recomienda cambiar este valor, o setear la variable `adminpw_id`.
* `adminpw_id`: ID de la clave del administrador en Rattic.
Sobreescribe el valor de `adminpw` con la clave obtenida de Rattic.
* `access`: lista con permisos de acceso.
Por defecto toma el valor de la variable `openldap_default_db_access`.
* `ou`: unidades organizacionales del dominio.
Por defecto toma el valor de la variable `openldap_default_domain_ous`.
* Si bien se crea un usuario admin para los subdominios, éstos por
defecto no tienen permiso alguno.
[deltasync]: https://openldap.org/doc/admin24/replication.html#Delta-syncrepl