Plateforme GRC pour la gestion des risques, la conformité et l'audit avec plus de 200 référentiels, la cartographie automatique des contrôles, la gestion des vulnérabilités et les workflows de réponse aux incidents.
Ajoutez une étoile au projet 🌟 pour recevoir les notifications de versions et aider à faire grandir la communauté !
intuitem.com
·
Essai gratuit SaaS
·
Feuille de route
·
Documentation
·
Langues
·
Discord
·
Référentiels

CISO Assistant offre une nouvelle perspective sur la gestion de la cybersécurité et les pratiques GRC (Gouvernance, Risques et Conformité) :

Notre vision est de créer un guichet unique pour la gestion de la cybersécurité—modernisant la GRC par la simplification et l'interopérabilité.
En tant que praticiens travaillant avec des professionnels de la cybersécurité et de l'IT, nous avons été confrontés aux mêmes problèmes : fragmentation des outils, duplication des données et manque de solutions intuitives et intégrées. CISO Assistant est né de ces leçons, et nous construisons une communauté autour de principes pragmatiques et de bon sens.
Nous évoluons constamment grâce aux retours des utilisateurs et des clients. Comme une pieuvre 🐙, CISO Assistant continue de développer des bras supplémentaires—apportant clarté, automatisation et productivité aux équipes de cybersécurité tout en réduisant l'effort de saisie et de sortie des données.
[!TIP] La façon la plus simple de commencer est via l'essai gratuit de l'instance cloud disponible ici.
Alternativement, une fois que vous avez Docker et Docker-compose installés, sur votre poste de travail ou serveur :
clonez le dépôt :```sh git clone --single-branch -b main https://github.com/intuitem/ciso-assistant-community.git
et exécutez le script de démarrage```sh
./docker-compose.sh # Linux/MacOS
./docker-compose.ps1 # Windows
Si vous recherchez d'autres options d'installation pour l'auto-hébergement, consultez le générateur de configuration et la documentation.
[!NOTE] Le script docker-compose utilise des images Docker préconstruites prenant en charge la plupart des architectures matérielles standard. Si vous utilisez Windows, assurez-vous d'avoir installé Docker Desktop avec WSL2 et lancez le script PowerShell. Il alimentera Docker Desktop en votre nom.
Le fichier docker compose peut être ajusté pour passer des paramètres supplémentaires adaptés à votre configuration (par exemple, les paramètres du Mailer).
[!WARNING] Si vous recevez des avertissements ou des erreurs indiquant que la plateforme de l'image ne correspond pas à celle de l'hôte, ouvrez un ticket avec les détails et nous l'ajouterons peu après. Vous pouvez également utiliser
docker-compose-build.shà la place (voir ci-dessous) pour compiler pour votre architecture spécifique.
[!CAUTION] N'utilisez pas directement le code de la branche
mainen production, car il s'agit de la branche de fusion amont et elle peut contenir des changements majeurs pendant notre développement. Utilisez soit lestagspour les versions stables, soit les images préconstruites.

Conformité et référentiels
Gestion des risques
Risques tiers
Opérations et remédiation
Reporting et analytique
Collaboration et productivité
Automatisation et intégrations
Sécurité et accès
Confidentialité
Gestion de programme
Plateforme
Les fonctionnalités à venir sont listées sur la feuille de route.
CISO Assistant est développé et maintenu par Intuitem, une entreprise spécialisée en cybersécurité, cloud et données/IA.
Voici un extrait de quelques-uns des éléments constitutifs de CISO Assistant pour illustrer le concept de découplage qui favorise la réutilisabilité :

Pour plus de détails, consultez la documentation du modèle de données.
Au cœur de CISO Assistant se trouve le principe de découplage, qui permet des cas d'usage puissants et d'importants gains de temps :
Voici une illustration du principe de découplage et de ses avantages :

Consultez la documentation en ligne sur https://intuitem.gitbook.io/ciso-assistant.
En savoir plus ici : Moteur d'IA
[!NOTE] Les référentiels marqués d'un
*nécessitent une étape manuelle supplémentaire pour récupérer la dernière feuille Excel sur leur site web, car leur licence empêche l'utilisation directe. Vous pouvez charger la feuille Excel directement en tant que bibliothèque.
Consultez la bibliothèque et les outils pour le langage spécifique au domaine utilisé et comment définir le vôtre.
Indonesia PDP 🇮🇩
OWASP SAMM
COBAC R-2024/01
ICO Data protection self-assessment 🇬🇧
ASD ISM 🇦🇺
et bien plus encore : demandez simplement sur Discord. S'il s'agit d'un standard ouvert, nous le ferons pour vous, gratuitement 😉
Une bibliothèque peut représenter un référentiel, un catalogue de menaces, un ensemble de contrôles de référence, ou même une matrice de risques personnalisée.
Les bibliothèques peuvent désormais être chargées directement depuis des fichiers Excel. Il n'est plus nécessaire de les convertir manuellement en YAML au préalable—la conversion est gérée en interne lorsqu'un fichier Excel est téléchargé.
Jetez un œil au répertoire tools et à son README dédié, qui décrit le format attendu des fichiers sources de bibliothèque au format Excel. Le sous-répertoire excel contient des exemples de fichiers XLSX utilisés comme sources pour les bibliothèques existantes et peut servir de modèles pour créer les vôtres.
Pour charger une bibliothèque depuis un fichier Excel, rendez-vous sur la page Gouvernance → Bibliothèque, cliquez sur Charger, et sélectionnez votre fichier source Excel. Toute erreur de validation ou d'analyse sera signalée lors du processus d'import.
Bien que les fichiers Excel puissent être chargés directement, il est toujours possible de convertir les fichiers sources de bibliothèque en YAML à l'aide de scripts Python externes :
convert_library_v2.py vous aide à générer une bibliothèque à partir d'un simple fichier Excel. Une fois vos éléments structurés dans le format attendu, exécutez le script pour produire le fichier YAML correspondant.tools contient également des convertisseurs spécialisés pour des référentiels spécifiques (par exemple, CIS ou CCM Controls).Pour faciliter la création de mappages entre référentiels, vous pouvez utiliser l'outil prepare_mapping_v2.py. Il génère un fichier Excel basé sur deux bibliothèques de référentiels existantes au format YAML. Après avoir rempli les mappages, le fichier Excel résultant peut être :
convert_library_v2.py.Rejoignez notre communauté Discord ouverte pour interagir avec l'équipe et d'autres experts GRC.
Le moyen le plus rapide et le plus simple de commencer est via l'essai gratuit d'une instance cloud disponible ici.
Pour exécuter CISO Assistant localement de manière simple, vous pouvez utiliser Docker compose.
Assurez-vous d'avoir une version récente de docker (>= 27.0).
2. Lancez le script docker-compose pour les images préconstruites :```sh
./docker-compose.sh # Linux/MacOS
./docker-compose.ps1 # Windows
Alternativement, vous pouvez utiliser cette variante pour construire les images Docker pour votre architecture spécifique :```sh ./docker-compose-build.sh # Linux/MacOS ./docker-compose-build.ps1 # Windows
Lorsque cela vous est demandé, saisissez votre adresse e-mail et votre mot de passe pour votre superutilisateur.
Vous pouvez ensuite accéder à CISO Assistant via votre navigateur web à l'adresse [https://localhost:8443/](https://localhost:8443/)
Pour les exécutions suivantes, utilisez directement « docker compose up ».
## Configuration de CISO Assistant pour le développement
> [!WARNING]
>
> ### Note importante pour les utilisateurs de Windows
>
> La meilleure solution fonctionnelle pour les utilisateurs développant sur **Windows** est d'utiliser [Ubuntu](https://apps.microsoft.com/detail/9pdxgncfsczv) installé sur [WSL2](https://apps.microsoft.com/detail/9p9tqf7mrm4r) (Docker n'est pas requis).
>
> Il est désormais également possible d'exécuter et de développer CISO Assistant nativement sur Windows sans WSL2 ni Docker, mais cela nécessitera quelques étapes supplémentaires.
> Veuillez noter que l'exécution native sur Windows est encore en **PHASE EXPÉRIMENTALE** et ne devrait **PAS** être utilisée si vous n'êtes pas sûr de ce que vous faites, ou si vous souhaitez garantir la stabilité tout au long du développement.
> Néanmoins, nous serions ravis de recevoir toute suggestion afin d'améliorer l'expérience de développement pour les utilisateurs de Windows. N'hésitez pas à ouvrir une Issue/PR à ce sujet !
### Prérequis
- Python 3.14+
- pip 25.3+
- uv 0.9+
- node 24+
- npm 10.2+
- pnpm 10.30+
- yaml-cpp (`brew install yaml-cpp libyaml` ou `apt install libyaml-cpp-dev`)
<details>
<summary>[EXPÉRIMENTAL] Prérequis supplémentaires pour le développement sur Windows sans WSL2</summary>
Si vous souhaitez développer le projet sans WSL2, vous devrez installer [MSYS2](https://www.msys2.org/), ajouter les binaires `MSYS2 UCRT64` à votre [variable d'environnement PATH système](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) (généralement, les binaires se trouvent dans `C:\msys64\ucrt64\bin`) puis installer les dépendances suivantes via `pacman` en utilisant `MSYS2 UCRT64`.```sh
pacman -S mingw-w64-ucrt-x86_64-file mingw-w64-ucrt-x86_64-pango
Vous devrez également ajouter ces 2 variables d'environnement système après avoir installé les dépendances :```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
Étant donné que l'encodage par défaut sous Windows n'est pas `UTF-8` mais `cp1252`, certains scripts Python affichant des caractères `UTF-8` tels que des emojis peuvent provoquer le plantage ou le dysfonctionnement du backend dans certains cas (par exemple, l'importation de bibliothèques).
Pour éviter ce problème avec ce projet, forcez l'encodage `UTF-8` en ajoutant ces 2 variables d'environnement utilisateur :```conf
PYTHONUTF8=1
PYTHONIOENCODING=utf-8:replace
[!NOTE]
Problèmes connus
- La bibliothèque
libmagicsous Windows (détection MIME) a du mal à reconnaître un fichier Excel (.xlsx) en lisant ses premiers2048bits, car elle renvoieapplication/octet-streamla plupart du temps lors de l'import d'une bibliothèque Excel (le backend affiche le message d'avertissement[warning ] Invalid MIME type). Cela n'empêche pas l'import du fichier Excel grâce à la méthode de repli dansbackend/library/views.py:StoredLibraryViewSet.upload_library.
2. Créez un fichier dans le dossier parent (par exemple ../myvars) et stockez-y vos variables d'environnement en copiant et modifiant le code suivant, puis remplacez `"<XXX>"` par vos valeurs privées. Veillez à ne pas committer ce fichier dans votre dépôt git.
**Variables obligatoires**
Toutes les variables du backend disposent de valeurs par défaut pratiques.
**Variables recommandées**```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
Autres 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>[EXPÉRIMENTAL] Autre variable pour le développement sous Windows sans WSL2</summary>
Seules les variables personnalisées PostgreSQL peuvent être configurées.
Utilisez les scripts d'assistance documentés dans [`tools/.windows/README.md`](https://github.com/intuitem/ciso-assistant-community/blob/main/tools/.windows/README.md) pour plus d'informations.
</details>
3. Installer uv
Consultez le site web d'uv pour les instructions : <https://docs.astral.sh/uv/getting-started/installation/>
4. Se déplacer vers le backend et installer les dépendances requises.```sh
cd backend
uv sync
6. Si vous souhaitez configurer Postgres :
- Lancez l'une de ces commandes pour entrer dans Postgres :
- `psql as superadmin`
- `sudo su postgres`
- `psql`
- Créez la base de données "ciso-assistant"
- `create database ciso-assistant;`
- Créez l'utilisateur "ciso-assistantuser" et accordez-lui l'accès
- `create user ciso-assistantuser with password '<POSTGRES_PASSWORD>';`
- `grant all privileges on database ciso-assistant to ciso-assistantuser;`
<details>
<summary>[EXPÉRIMENTAL] Configurer PostgreSQL sur Windows</summary>
Pour plus d'informations, consultez la documentation dans [`tools/.windows/README.md`](https://github.com/intuitem/ciso-assistant-community/blob/main/tools/.windows/README.md).
</details>
7. Si vous souhaitez configurer un bucket s3 :
- Choisissez votre fournisseur s3 ou testez la fonctionnalité s3 avec miniO à l'aide de cette commande :
- `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"`
- Vous pouvez maintenant vérifier votre bucket sur <http://localhost:9001>
- Remplissez le formulaire de connexion avec les identifiants que vous avez renseignés dans les variables d'environnement du docker run
- Exportez dans le répertoire backend toutes les variables d'environnement demandées concernant S3
- Vous pouvez consulter la liste ci-dessus dans les variables recommandées
8. Appliquez les migrations.```sh
uv run python manage.py migrate
Pour plus d'informations, consultez la documentation dans tools/.windows/README.md.
Si vous avez configuré un mailer et la variable CISO_SUPERUSER_EMAIL, il n'est pas nécessaire de créer un superutilisateur Django avec
createsuperuser, car il sera créé automatiquement au premier démarrage. Vous devriez recevoir un e-mail avec un lien pour configurer votre mot de passe.```sh uv run python manage.py createsuperuser
<details>
<summary>[EXPÉRIMENTAL] Créer un superutilisateur Django sur Windows sans WSL2</summary>
Pour plus d'informations, consultez la documentation dans [`tools/.windows/README.md`](https://github.com/intuitem/ciso-assistant-community/blob/main/tools/.windows/README.md).
</details>
10. Lancer le serveur de développement.```sh
uv run python manage.py runserver
Lors de l'exécution du serveur de développement de Django nativement sur Windows, le SSR de SvelteKit peut ouvrir suffisamment de connexions API simultanées pour atteindre le petit backlog d'écoute par défaut du serveur. Cela peut provoquer des erreurs intermittentes ECONNREFUSED / TypeError: fetch failed dans le frontend.
Utilisez les scripts d'assistance documentés dans tools/.windows/README.md pour la configuration de développement native sous Windows.
python manage.py run_huey -w 2 -k process ou l'équivalent dans un shell séparé.MAIL_DEBUG pour avoir les mails sur la console afin de faciliter le débogage2. Installer les dépendances```bash
npm install -g pnpm
pnpm install
4. Accédez au frontend sur <http://localhost:5173>
> [!NOTE]
> Safari ne fonctionnera pas correctement dans cette configuration, car il nécessite https pour les cookies sécurisés. La solution la plus simple est d'utiliser Chrome ou Firefox. Une alternative consiste à utiliser un proxy caddy. Veuillez consulter le [fichier readme](https://github.com/intuitem/ciso-assistant-community/blob/main/frontend/README.md) dans le répertoire frontend pour plus d'informations à ce sujet.
5. Variables d'environnement
Toutes les variables du frontend ont des valeurs par défaut pratiques.
Si vous déplacez le frontend sur un autre hôte, vous devez définir la variable suivante : `PUBLIC_BACKEND_API_URL`. Sa valeur par défaut est <http://localhost:8000/api>.
La variable `PUBLIC_BACKEND_API_EXPOSED_URL` est nécessaire au bon fonctionnement du SSO. Elle pointe vers l'URL de l'API telle que vue depuis le navigateur. Elle doit être égale à la concaténation de `CISO_ASSISTANT_URL` (dans le backend) avec "/api".
Lorsque vous lancez "node server" au lieu de "pnpm run dev", vous devez définir la variable ORIGIN à la même valeur que `CISO_ASSISTANT_URL` dans le backend (par exemple <http://localhost:3000>).
### Gestion des migrations
Les migrations sont suivies par le contrôle de version, <https://docs.djangoproject.com/en/4.2/topics/migrations/#version-control>
Pour la première version du produit, il est recommandé de partir d'une migration propre.
Remarque : pour nettoyer les migrations existantes, tapez :```sh
find . -path "*/migrations/*.py" -not -name "__init__.py" -delete
find . -path "*/migrations/*.pyc" -delete
Après une modification (ou un nettoyage), il est nécessaire de régénérer les fichiers de migration :```sh uv run python manage.py makemigrations uv run python manage.py migrate
Ces fichiers de migration doivent être suivis par le contrôle de version.
### Suite de tests
Pour exécuter les tests d'API sur le backend, tapez simplement `uv run pytest` dans un shell dans le dossier backend.
Pour exécuter les tests fonctionnels sur le frontend, effectuez les actions suivantes :
- dans le dossier frontend, lancez la commande suivante :```shell
tests/e2e-tests.sh
L'objectif du harnais de test est de prévenir toute régression, c'est-à-dire que tous les tests doivent réussir, tant pour le backend que pour le frontend.
export DJANGO_DEBUG=True avant de démarrer le backend.<backend_endpoint>/api/schema/swagger/,
par exemple : http://127.0.0.1:8000/api/schema/swagger/.Pour interagir avec l'API via Swagger ou directement avec des appels HTTP :
Authorization: Token <token>⚠️ Remarque : utilisez Token, pas Bearer.
Les PAT respectent le MFA : ils sont émis depuis une session authentifiée, donc un compte protégé par MFA reste protégé. Pour les flux interactifs/navigateur, l'authentification passe par le login standard (qui applique le MFA lorsqu'il est activé).
Le fichier docker-compose.yml met en évidence une configuration pertinente pour les tests, avec un proxy Caddy devant le frontend. Il expose l'API complète, ce qui n'est pas encore recommandé pour la production.
Pour la production, le config builder peut être utilisé pour générer un fichier docker-compose.yml plus durci et adapté, bien que plusieurs étapes de durcissement restent nécessaires.
Les recommandations suivantes s'appliquent pour la production :
DJANGO_DEBUG=False pour des raisons de sécurité./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/ (uniquement avec le single logout SAML activé)[!NOTE] Le frontend ne peut pas déduire l'hôte automatiquement, vous devez donc soit définir la variable ORIGIN, soit les variables
HOST_HEADERetPROTOCOL_HEADER. Veuillez consulter la doc sveltekit sur ce problème délicat. Attention, cette approche ne fonctionne pas avec "pnpm run dev", ce qui ne devrait pas être un souci pour la production.
[!NOTE] Caddy doit recevoir un en-tête SNI. Par conséquent, pour votre URL publique (celle déclarée dans
CISO_ASSISTANT_URL), vous devez utiliser un FQDN, et non une adresse IP, car le SNI n'est pas transmis par un navigateur si l'hôte est une adresse IP. Encore un problème délicat !
[!NOTE] Les fichiers template docker-compose lancent désormais le backend, huey et le frontend en mode non-root. Si vous utilisez un ancien fichier docker-compose.yml, il est recommandé de le mettre à jour. Les conteneurs sont compatibles avec les modes root et non-root.
docker-compose.yml repose désormais sur un utilisateur non-root 1001:1001, qui est disponible dans l'image. Les déploiements plus anciens utilisent l'utilisateur root, qui reste pris en charge. Pour passer au non-root, utilisez les étapes suivantes sur l'hôte :
La référence est en.json ; la couverture = part des clés de référence présentes dans chaque fichier de locale. Actualisé automatiquement chaque jour — répartition complète sur le dashboard.
Un grand soin a été apporté au respect des bonnes pratiques de sécurité. Veuillez signaler tout problème à [email protected].
Ce dépôt contient le code source de l'édition Open Source de CISO Assistant (Community Edition), publiée sous AGPL v3, ainsi que l'édition commerciale de CISO Assistant (éditions Pro et Enterprise), publiée sous la licence logicielle commerciale intuitem. Cette approche mono-dépôt est adoptée par souci de simplicité.
Tous les fichiers situés dans le répertoire de premier niveau "enterprise" sont publiés sous la licence logicielle commerciale intuitem.
Tous les fichiers situés en dehors du répertoire de premier niveau "enterprise" sont publiés sous AGPLv3.
Voir LICENSE.md pour plus de détails. Pour plus d'informations sur les éditions commerciales, vous pouvez nous contacter à [email protected].
Sauf mention contraire, tous les fichiers sont © intuitem.