148 lines
4.8 KiB
Markdown
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
|