
Plataforma GRC para gestión de riesgos, cumplimiento y auditoría con más de 200 marcos de trabajo, mapeo automático de controles, gestión de vulnerabilidades y flujos de trabajo de respuesta a incidentes.
¡Dale una estrella al proyecto 🌟 para recibir notificaciones de lanzamientos y ayudar a hacer crecer la comunidad!
intuitem.com
·
Prueba gratuita de SaaS
·
Hoja de ruta
·
Documentación
·
Idiomas
·
Discord
·
Marcos de trabajo

CISO Assistant ofrece una perspectiva renovada sobre la Gestión de Ciberseguridad y las prácticas de GRC (Gobernanza, Riesgo y Cumplimiento):

Nuestra visión es crear un punto único de acceso para la gestión de ciberseguridad—modernizando el GRC mediante la simplificación y la interoperabilidad.
Como profesionales que trabajamos con expertos en ciberseguridad y TI, nos hemos enfrentado a los mismos problemas: fragmentación de herramientas, duplicación de datos y falta de soluciones intuitivas e integradas. CISO Assistant nació de esas lecciones, y estamos construyendo una comunidad en torno a principios pragmáticos y de sentido común.
Evolucionamos constantemente con las aportaciones de usuarios y clientes. Como un pulpo 🐙, CISO Assistant sigue haciendo crecer brazos adicionales—aportando claridad, automatización y productividad a los equipos de ciberseguridad mientras reduce el esfuerzo de entrada y salida de datos.
[!TIP] La forma más sencilla de empezar es a través de la prueba gratuita de la instancia en la nube disponible aquí.
Alternativamente, una vez que tengas Docker y Docker-compose instalados, en tu estación de trabajo o servidor:
clona el repositorio:```sh git clone --single-branch -b main https://github.com/intuitem/ciso-assistant-community.git
y ejecuta el script de inicio```sh
./docker-compose.sh # Linux/MacOS
./docker-compose.ps1 # Windows
Si buscas otras opciones de instalación para el autoalojamiento, consulta el config builder y la documentación.
[!NOTE] El script de docker-compose utiliza imágenes de Docker precompiladas que admiten la mayoría de las arquitecturas de hardware estándar. Si usas Windows, asegúrate de tener instalado Docker Desktop con WSL2 y ejecuta el script de PowerShell. Este configurará Docker Desktop en tu nombre.
El archivo docker compose se puede ajustar para pasar parámetros adicionales que se adapten a tu configuración (por ejemplo, la configuración del Mailer).
[!WARNING] Si recibes advertencias o errores sobre que la plataforma de la imagen no coincide con la plataforma del host, abre un issue con los detalles y lo añadiremos poco después. También puedes usar
docker-compose-build.shen su lugar (ver más abajo) para compilar para tu arquitectura específica.
[!CAUTION] No uses el código de la rama
maindirectamente para producción, ya que es la fusión upstream y puede tener cambios disruptivos durante nuestro desarrollo. Usa lastagspara versiones estables o las imágenes precompiladas.

Cumplimiento y marcos
Gestión de riesgos
Riesgo de terceros
Operaciones y remediación
Informes y analítica
Colaboración y productividad
Automatización e integraciones
Seguridad y acceso
Privacidad
Gestión de programas
Plataforma
Las próximas características se enumeran en la hoja de ruta.
CISO Assistant es desarrollado y mantenido por Intuitem, una empresa especializada en Ciberseguridad, Cloud y Datos/IA.
Aquí tienes un extracto de algunos de los bloques de construcción de CISO Assistant para ilustrar el concepto de desacoplamiento que fomenta la reutilización:

Para más detalles, consulta la documentación del modelo de datos.
En el corazón de CISO Assistant se encuentra el principio de desacoplamiento, que permite casos de uso potentes y grandes ahorros de tiempo:
Aquí tienes una ilustración del principio de desacoplamiento y sus ventajas:

Consulta la documentación en línea en https://intuitem.gitbook.io/ciso-assistant.
Más información aquí: Motor de IA
[!NOTE] Los marcos con
*requieren un paso manual adicional para obtener la última hoja de Excel a través de su sitio web, ya que su licencia impide el uso directo. Puedes cargar la hoja de Excel directamente como una biblioteca.
Consulta la biblioteca y las herramientas para conocer el Lenguaje de Dominio Específico utilizado y cómo puedes definir el tuyo propio.
Indonesia PDP 🇮🇩
OWASP SAMM
COBAC R-2024/01
ICO Data protection self-assessment 🇬🇧
ASD ISM 🇦🇺
y mucho más: solo pregunta en Discord. Si es un estándar abierto, lo haremos por ti, sin coste 😉
Una biblioteca puede representar un marco, un catálogo de amenazas, un conjunto de controles de referencia o incluso una matriz de riesgos personalizada.
Las bibliotecas ahora se pueden cargar directamente desde archivos Excel. No es necesario convertirlas manualmente a YAML de antemano—la conversión se gestiona internamente cuando se sube un archivo Excel.
Echa un vistazo al directorio tools y su README dedicado, que describe el formato esperado de los archivos fuente de bibliotecas en Excel. El subdirectorio excel contiene archivos XLSX de ejemplo utilizados como fuentes para las bibliotecas existentes y se pueden usar como plantillas para crear las tuyas propias.
Para cargar una biblioteca desde un archivo Excel, ve a la página Governance → Library, haz clic en Load y selecciona tu archivo fuente de Excel. Cualquier error de validación o análisis se notificará durante el proceso de importación.
Aunque los archivos Excel se pueden cargar directamente, todavía es posible convertir los archivos fuente de bibliotecas a YAML usando scripts externos de Python:
convert_library_v2.py te ayuda a generar una biblioteca a partir de un archivo Excel simple. Una vez que tus elementos estén estructurados en el formato esperado, ejecuta el script para producir el archivo YAML correspondiente.tools también contiene convertidores especializados para marcos específicos (por ejemplo, CIS o CCM Controls).Para facilitar la creación de mapeos entre marcos, puedes usar la herramienta prepare_mapping_v2.py. Genera un archivo Excel basado en dos bibliotecas de marcos existentes en formato YAML. Después de rellenar los mapeos, el archivo Excel resultante se puede:
convert_library_v2.py.Únete a nuestra comunidad abierta de Discord para interactuar con el equipo y otros expertos en GRC.
La forma más rápida y sencilla de empezar es a través de la prueba gratuita de la instancia en la nube disponible aquí.
Para ejecutar CISO Assistant localmente de forma sencilla, puedes usar Docker compose.
Asegúrate de tener una versión reciente de docker (>= 27.0).
2. Ejecutar el script docker-compose para imágenes preconstruidas:```sh
./docker-compose.sh # Linux/MacOS
./docker-compose.ps1 # Windows
Alternativamente, puedes usar esta variante para construir las imágenes de Docker para tu arquitectura específica:```sh ./docker-compose-build.sh # Linux/MacOS ./docker-compose-build.ps1 # Windows
Cuando se le solicite, introduzca su correo electrónico y contraseña para su superusuario.
A continuación, puede acceder a CISO Assistant mediante su navegador web en [https://localhost:8443/](https://localhost:8443/)
Para las siguientes ejecuciones, utilice "docker compose up" directamente.
## Configuración de CISO Assistant para desarrollo
> [!WARNING]
>
> ### Nota importante para usuarios de Windows
>
> La mejor solución funcional para los usuarios que desarrollan en **Windows** es utilizar [Ubuntu](https://apps.microsoft.com/detail/9pdxgncfsczv) instalado en [WSL2](https://apps.microsoft.com/detail/9p9tqf7mrm4r) (no se requiere Docker).
>
> Ahora también es posible ejecutar y desarrollar CISO Assistant de forma nativa en Windows sin WSL2 ni Docker, pero requerirá algunos pasos adicionales.
> Tenga en cuenta que la ejecución nativa en Windows todavía está en **FASE EXPERIMENTAL** y **NO** debería utilizarse si no está seguro de lo que está haciendo, o si desea garantizar la estabilidad durante el desarrollo.
> No obstante, nos encantaría conocer cualquier sugerencia para mejorar la experiencia de desarrollo de los usuarios de Windows. ¡No dude en abrir un Issue/PR al respecto!
### Requisitos
- Python 3.14+
- pip 25.3+
- uv 0.9+
- node 24+
- npm 10.2+
- pnpm 10.30+
- yaml-cpp (`brew install yaml-cpp libyaml` o `apt install libyaml-cpp-dev`)
<details>
<summary>[EXPERIMENTAL] Requisitos adicionales para el desarrollo en Windows sin WSL2</summary>
Si desea desarrollar el proyecto sin WSL2, necesitará instalar [MSYS2](https://www.msys2.org/), añadir los binarios de `MSYS2 UCRT64` a su [variable de entorno PATH del sistema](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_environment_variables?view=powershell-7.6#set-environment-variables-in-the-system-control-panel) (normalmente, los binarios están en `C:\msys64\ucrt64\bin`) y luego instalar las siguientes dependencias mediante `pacman` usando `MSYS2 UCRT64`.```sh
pacman -S mingw-w64-ucrt-x86_64-file mingw-w64-ucrt-x86_64-pango
También tendrás que añadir esas 2 variables de entorno del sistema después de instalar las dependencias:```conf
MAGIC=Full path to the magic.mgc file (usually C:\msys64\ucrt64\share\misc\magic.mgc)
WEASYPRINT_DLL_DIRECTORIES=Same path as your MSYS2 UCRT64 binaries
Dado que la codificación predeterminada en Windows no es `UTF-8` sino `cp1252`, cierto script de Python que imprima caracteres `UTF-8`, como emojis, puede provocar que el backend se bloquee o funcione mal en algunos casos (por ejemplo, la importación de bibliotecas).
Para evitar este problema con este proyecto, fuerce la codificación `UTF-8` añadiendo estas 2 variables de entorno de usuario:```conf
PYTHONUTF8=1
PYTHONIOENCODING=utf-8:replace
[!NOTE]
Problemas conocidos
- La librería
libmagicen Windows (detección de MIME) tiene dificultades para reconocer un archivo Excel (.xlsx) al leer sus primeros2048bits, ya que devuelveapplication/octet-streamla mayoría de las veces al importar una librería de Excel (el backend muestra el mensaje de advertencia[warning ] Invalid MIME type). Esto no impide que el archivo Excel se importe gracias al método de respaldo enbackend/library/views.py:StoredLibraryViewSet.upload_library.
2. Cree un archivo en la carpeta principal (por ejemplo, ../myvars) y almacene sus variables de entorno en él copiando y modificando el siguiente código y reemplazando `"<XXX>"` por sus valores privados. Tenga cuidado de no confirmar este archivo en su repositorio git.
**Variables obligatorias**
Todas las variables en el backend tienen valores predeterminados prácticos.
**Variables recomendadas**```sh
export DJANGO_DEBUG=True
# Default url is set to http://localhost:5173 but you can change it, e.g. to use https with a caddy proxy
export CISO_ASSISTANT_URL=https://localhost:8443
# Setup a development mailer with Mailpit for example
export EMAIL_HOST_USER=''
export EMAIL_HOST_PASSWORD=''
export [email protected]
export EMAIL_HOST=localhost
export EMAIL_PORT=1025
export EMAIL_USE_TLS=True # true for STARTTLS
export EMAIL_USE_SSL=False # true for SMTPS
Otras variables```sh
export POSTGRES_NAME=ciso-assistant export POSTGRES_USER=ciso-assistantuser export POSTGRES_PASSWORD= export POSTGRES_PASSWORD_FILE= # alternative way to specify password export DB_HOST=localhost export DB_PORT=5432 # optional, default value is 5432
export USE_S3=True export AWS_STORAGE_BUCKET_NAME= export AWS_S3_REGION_NAME= # optional, e.g., us-east-1
export AWS_ACCESS_KEY_ID= export AWS_SECRET_ACCESS_KEY= export AWS_S3_ENDPOINT_URL= # required for S3-compatible services (e.g., MinIO)
export EMAIL_HOST_RESCUE= export EMAIL_PORT_RESCUE=587 export EMAIL_HOST_USER_RESCUE= export EMAIL_HOST_PASSWORD_RESCUE= export EMAIL_USE_TLS_RESCUE=True export EMAIL_USE_SSL_RESCUE=False
export CISO_SUPERUSER_EMAIL=
export DJANGO_SECRET_KEY=...
export ENABLE_SANDBOX=True # optional, default value is True in production enfironments (DJANGO_DEBUG=False) and False in development environments (DJANGO_DEBUG=True).
export LOG_LEVEL=INFO # optional, default value is INFO. Available options: DEBUG, INFO, WARNING, ERROR, CRITICAL export LOG_FORMAT=plain # optional, default value is plain. Available options: json, plain
export AUTH_TOKEN_TTL=3600 # optional, default value is 3600 seconds (60 minutes). It defines the time to live of the authentication token export AUTH_TOKEN_AUTO_REFRESH=True # optional, default value is True. It defines if the token TTL should be refreshed automatically after each request authenticated with the token export AUTH_TOKEN_AUTO_REFRESH_TTL=36000 # optional, default value is 36000 seconds (10 hours). It defines the time to live of the authentication token after auto refresh. You can disable it by setting it to 0.
<details>
<summary>[EXPERIMENTAL] Otra variable para desarrollo en Windows sin WSL2</summary>
Solo se pueden configurar variables personalizadas de PostgreSQL.
Utilice los scripts auxiliares documentados en [`tools/.windows/README.md`](https://github.com/intuitem/ciso-assistant-community/blob/main/tools/.windows/README.md) para obtener más información.
</details>
3. Instalar uv
Visite el sitio web de uv para obtener instrucciones: <https://docs.astral.sh/uv/getting-started/installation/>
4. Diríjase al backend e instale las dependencias requeridas.```sh
cd backend
uv sync
6. Si quieres configurar Postgres:
- Ejecuta uno de estos comandos para entrar en Postgres:
- `psql as superadmin`
- `sudo su postgres`
- `psql`
- Crea la base de datos "ciso-assistant"
- `create database ciso-assistant;`
- Crea el usuario "ciso-assistantuser" y concédele acceso
- `create user ciso-assistantuser with password '<POSTGRES_PASSWORD>';`
- `grant all privileges on database ciso-assistant to ciso-assistantuser;`
<details>
<summary>[EXPERIMENTAL] Configurar PostgreSQL en Windows</summary>
Para más información, consulta la documentación en [`tools/.windows/README.md`](https://github.com/intuitem/ciso-assistant-community/blob/main/tools/.windows/README.md).
</details>
7. Si quieres configurar un bucket s3:
- Elige tu proveedor de s3 o prueba la funcionalidad de s3 con miniO con este comando:
- `docker run -p 9000:9000 -p 9001:9001 -e "MINIO_ROOT_USER=XXX" -e "MINIO_ROOT_PASSWORD=XXX" quay.io/minio/minio server /data --console-address ":9001"`
- Ahora puedes comprobar tu bucket en <http://localhost:9001>
- Rellena el inicio de sesión con las credenciales que introdujiste en las variables de entorno del docker run
- Exporta en el directorio backend todas las variables de entorno solicitadas sobre S3
- Puedes ver la lista anterior en las variables recomendadas
8. Aplica las migraciones.```sh
uv run python manage.py migrate
Para más información, consulte la documentación en tools/.windows/README.md.
Si ha configurado un mailer y la variable CISO_SUPERUSER_EMAIL, no es necesario crear un superusuario de Django con
createsuperuser, ya que se creará automáticamente en el primer inicio. Debería recibir un correo electrónico con un enlace para configurar su contraseña.```sh uv run python manage.py createsuperuser
<details>
<summary>[EXPERIMENTAL] Crear un superusuario de Django en Windows sin WSL2</summary>
Para más información, consulte la documentación en [`tools/.windows/README.md`](https://github.com/intuitem/ciso-assistant-community/blob/main/tools/.windows/README.md).
</details>
10. Ejecutar el servidor de desarrollo.```sh
uv run python manage.py runserver
Al ejecutar el servidor de desarrollo de Django de forma nativa en Windows, SvelteKit SSR puede abrir suficientes conexiones API concurrentes como para alcanzar el pequeño backlog de escucha predeterminado del servidor. Esto puede provocar errores intermitentes ECONNREFUSED / TypeError: fetch failed en el frontend.
Utilice los scripts auxiliares documentados en tools/.windows/README.md para la configuración de desarrollo nativa en Windows.
python manage.py run_huey -w 2 -k process o su equivalente en un shell aparte.MAIL_DEBUG para tener el correo en la consola y facilitar la depuración2. Instalar dependencias```bash
npm install -g pnpm
pnpm install
4. Accede al frontend en <http://localhost:5173>
> [!NOTE]
> Safari no funcionará correctamente en esta configuración, ya que requiere https para las cookies seguras. La solución más sencilla es usar Chrome o Firefox. Una alternativa es usar un proxy caddy. Consulta el [archivo readme](https://github.com/intuitem/ciso-assistant-community/blob/main/frontend/README.md) en el directorio frontend para obtener más información al respecto.
5. Variables de entorno
Todas las variables en el frontend tienen valores predeterminados prácticos.
Si mueves el frontend a otro host, debes establecer la siguiente variable: `PUBLIC_BACKEND_API_URL`. Su valor predeterminado es <http://localhost:8000/api>.
La `PUBLIC_BACKEND_API_EXPOSED_URL` es necesaria para el correcto funcionamiento del SSO. Apunta a la URL de la API tal como se ve desde el navegador. Debe ser igual a la concatenación de `CISO_ASSISTANT_URL` (en el backend) con "/api".
Cuando inicias "node server" en lugar de "pnpm run dev", necesitas establecer la variable ORIGIN con el mismo valor que `CISO_ASSISTANT_URL` en el backend (p. ej. <http://localhost:3000>).
### Gestionar migraciones
Las migraciones son rastreadas por el control de versiones, <https://docs.djangoproject.com/en/4.2/topics/migrations/#version-control>
Para la primera versión del producto, se recomienda comenzar desde una migración limpia.
Nota: para limpiar las migraciones existentes, escribe:```sh
find . -path "*/migrations/*.py" -not -name "__init__.py" -delete
find . -path "*/migrations/*.pyc" -delete
Después de un cambio (o una limpieza), es necesario volver a generar los archivos de migración:```sh uv run python manage.py makemigrations uv run python manage.py migrate
Estos archivos de migración deben ser rastreados por el control de versiones.
### Suite de pruebas
Para ejecutar las pruebas de API en el backend, simplemente escribe `uv run pytest` en un shell en la carpeta del backend.
Para ejecutar las pruebas funcionales en el frontend, realiza las siguientes acciones:
- en la carpeta del frontend, lanza el siguiente comando:```shell
tests/e2e-tests.sh
El objetivo del arnés de pruebas es prevenir cualquier regresión, es decir, todas las pruebas deben ser exitosas, tanto para el backend como para el frontend.
export DJANGO_DEBUG=True antes de iniciar el backend.<backend_endpoint>/api/schema/swagger/,
por ejemplo: http://127.0.0.1:8000/api/schema/swagger/.Para interactuar con la API a través de Swagger o directamente con llamadas HTTP:
Authorization: Token <token>⚠️ Nota: use Token, no Bearer.
Los PAT respetan el MFA: se emiten desde una sesión autenticada, por lo que una cuenta protegida por MFA permanece protegida. Para flujos interactivos/en el navegador, la autenticación pasa por el inicio de sesión estándar (que aplica MFA cuando está habilitado).
El docker-compose.yml resalta una configuración relevante para pruebas, con un proxy Caddy delante del frontend. Expone la API completa, lo cual aún no se recomienda para producción.
Para producción, se puede usar el generador de configuración para producir un archivo docker-compose.yml más endurecido y adaptado, aunque todavía se requieren varios pasos de endurecimiento.
Las siguientes recomendaciones aplican para producción:
DJANGO_DEBUG=False por razones de seguridad./api/iam/sso/redirect//api/accounts/saml/0/acs//api/accounts/saml/0/acs/finish//api/accounts/oidc/openid_connect/login/callback//api/accounts/saml/0/sls/ (solo con el cierre de sesión único de SAML habilitado)[!NOTE] El frontend no puede inferir el host automáticamente, por lo que necesita establecer la variable ORIGIN, o las variables
HOST_HEADERyPROTOCOL_HEADER. Consulte la documentación de sveltekit sobre este tema complicado. Tenga en cuenta que este enfoque no funciona con "pnpm run dev", lo cual no debería ser una preocupación para producción.
[!NOTE] Caddy necesita recibir un encabezado SNI. Por lo tanto, para su URL pública (la declarada en
CISO_ASSISTANT_URL), necesita usar un FQDN, no una dirección IP, ya que el SNI no es transmitido por un navegador si el host es una dirección IP. ¡Otro tema complicado!
[!NOTE] Los archivos de plantilla de docker-compose ahora inician el backend, huey y el frontend en modo sin root. Si usa un archivo docker-compose.yml antiguo, se recomienda actualizarlo. Los contenedores son compatibles tanto con el modo root como sin root.
docker-compose.yml ahora se basa en un usuario sin root 1001:1001, que está disponible en la imagen. Los despliegues más antiguos usan el usuario root, que aún es compatible. Para hacer la transición a sin root, use los siguientes pasos en el host:
La referencia es en.json; cobertura = proporción de claves de referencia presentes en cada archivo de idioma. Se actualiza automáticamente a diario — desglose completo en el panel.
Se ha puesto gran cuidado en seguir las mejores prácticas de seguridad. Por favor, reporte cualquier problema a [email protected].
Este repositorio contiene el código fuente tanto de la edición Open Source de CISO Assistant (Community Edition), publicada bajo la AGPL v3, como de la edición comercial de CISO Assistant (ediciones Pro y Enterprise), publicada bajo la intuitem Commercial Software License. Este enfoque de mono-repositorio se adopta por simplicidad.
Todos los archivos dentro del directorio de nivel superior "enterprise" se publican bajo la intuitem Commercial Software License.
Todos los archivos fuera del directorio de nivel superior "enterprise" se publican bajo la AGPLv3.
Consulte LICENSE.md para más detalles. Para más detalles sobre las ediciones comerciales, puede contactarnos en [email protected].
Salvo que se indique lo contrario, todos los archivos son © intuitem.