Instalación en Docker
Si sólo desea ver el sistema corriendo vaya a la guía de Instalación Rápida.
Requisitos
Diferentes versiones
- OpenLDAP 2.4.x
- PostgreSQL 9.6 - 11
- Docker Engine 18.06
- Certificados para el IDP
- Almacenamiento para assets
A tener en cuenta
- la versión de la imagen corresponde a la versión del proyecto. En este ejemplo mostramos la
v3.0.2
y hay que usarlo consistentemente en elidp
,idm
,api
y al momento de inicializar las bases de datos. - los contenedores de
idp
,idm
,api
deben estar conectados a los servicios OpenLDAP y PostgreSQL - los contenedores de
idp
,idm
,api
deben compartir la ruta de almacenamiento y URL de acceso a los assets - el
idm
es una aplicación web que consume el servicio deidp
para su ingreso
Estrategia para instalar
- inicializar los servicios con las estructuras requeridas
- generar certificados usados por el IdP para SAML y OIDC
- establecer ruta de almacenamiento de assets
- configurar los parámetros del proyecto
- registrar configuración para el IdM
- despliegue simples basado en Docker, de referencia para trasladarlo al orquestador de elección
A continuación se detalla cada una.
Servicios requeridos
Araí-Usuarios requiere de que existan dos servicios escenciales para su funcionamiento:
- OpenLDAP, la base de LDAP, la cual debe estar cargada con los esquemas necesarios
- PostgreSQL, la base de datos relacional, que tiene que tener creada una base datos
con dos esquemas:
usuarios
ytoba_arai_usuarios
.
Generar certificados
Araí-Usuario requiere dos pares de claves para funcionar, una para firmar los tokens SAML y otra para firmar los tokens JWT de OIDC.
Para generar los certificados utilizados para firmar los tokens SAML ejecutar:
mkdir certs
openssl req -newkey rsa:2048 -new -x509 -days 3652 -nodes -out certs/certificado_idp.crt -keyout certs/certificado_idp.key
Para generar los certificados utilizados en OIDC para firmar tokens JWT ejecutar:
openssl genrsa -out certs/oidc_module.pem 2048
openssl rsa -in certs/oidc_module.pem -pubout -out certs/oidc_module.crt
Almacenamiento para assets
Araí-Usuarios utiliza un directorio donde almacena la imagen de perfil de los usuarios y las de aplicaciones. Es importante que el almacenamiento subyacente sea compartido por todos los nodos que se se ejecuten para que mantengan entre ellos un estado consistente de las imagenes.
No es el objeto de esta guía resolver la forma en que se hace disponible este mecanismo de almacenamiento al servicio que así lo requiera.
Para este despliegue, se crea un directorio donde alojar los assets.
Definir parámetros
Las imágenes Docker son configurables a través de las variables de entorno especificadas en este documento y lo suficientemente flexibles para correr en cualquier orquestador.
Los parámetros están agrupados por módulo:
- .env para idp, descargar en
idp.env
- .env para idm, descargar en
idm.env
- .env para api, descargar en
api.env
Se deben descargar cada uno y configurar a las necesidades.
Desplegar
Se muestra un despliegue simple con Docker Engine de cada una de las imágenes que se ofrecen para el proyecto Araí-Usuarios.
La idea es que vean la flexibilidad y lo adapten al esquema que mejor crean conveniente.
En todos los casos reemplazamos $VERSION
por el valor adecuado
Iniciar IdP
sudo docker run --detach \ --hostname idp.uunn.local \ --publish 8181:80 \ --name idp \ --restart always \ --env-file idp.env \ --volume $USUARIOS/assets:/usr/local/app/resources \ --volume $USUARIOS/certs/certificado_idp.key:/usr/local/app/idp/config/simplesamlphp/certificado_idp.key \ --volume $USUARIOS/certs/certificado_idp.crt:/usr/local/app/idp/config/simplesamlphp/certificado_idp.crt \ --volume $USUARIOS/certs/oidc_module.pem:/usr/local/app/idp/config/simplesamlphp/oidc_module.pem \ --volume $USUARIOS/certs/oidc_module.crt:/usr/local/app/idp/config/simplesamlphp/oidc_module.crt \ hub.siu.edu.ar:5005/siu-arai/arai-usuarios/idp:$VERSION
Iniciar IdM
sudo docker run --detach \ --hostname idm.uunn.local \ --publish 8182:80 \ --name idm \ --restart always \ --env-file idm.env \ --volume $USUARIOS/assets:/usr/local/app/resources \ --volume $USUARIOS/certs/certificado_idp.crt:/usr/local/app/idm/instalacion/idp.crt \ hub.siu.edu.ar:5005/siu-arai/arai-usuarios/idm:$VERSION
Iniciar API
sudo docker run --detach \ --hostname api.uunn.local \ --publish 8183:80 \ --name idm \ --restart always \ --env-file api.env \ --volume $USUARIOS/assets:/usr/local/app/resources \ hub.siu.edu.ar:5005/siu-arai/arai-usuarios/api:$VERSION
Verificar servicios
En el IDM, se proporciona un comando para verificar la configuración de la aplicación y las bases de datos, para ello se debe conectar a un contenedor existente IDM y ejecutar de la siguiente manera:
docker exec -it ID-CONTENDOR-IDM /entrypoint.sh --verificar
Otra posibilidad es lanzar un contenedor dedicado, sólo para realizar esta verificación vía entrypoint --verificar
:
docker run --rm -it \
--env-file=usuarios.env \
hub.siu.edu.ar:5005/siu-arai/arai-usuarios/idm:$VERSION --verificar
Nota: usuarios.env debe ser configurado con las ENV requeridas para el IDM
Este comando verificar
mostrará en la salida de su ejecución el chequeo de:
- la versión de la base de datos PostgreSQL
- los esquemas de la base OpenLDAP
- la versión de la imagen Docker respecto a las bases
- conexiones a servicios adicionales
Registrar el IdM
La primera vez que se instala este proyecto es necesario realizar dos tareas administrativas para que todo funcione correctamente. Las tareas a realizar son:
- Registrar la UI (conocido como idm) de Araí-Usuarios como SP
- Crear el usuario
admin
y setearle una contraseña
Para realizar este paso, es necesario que las bases de datos LDAP y PostgreSQL estén correctamente configuradas.
Estas dos tareas se realizan ejecutando el siguiente comando. Se crea un contenedor específamente para la inicialización:
docker exec -it idm idm/bin/instalador proyecto:bootstrap --password=admin1234
Cambie la contraseña
admin1234
al valor que desee.