
Piattaforma GRC per la gestione del rischio, la conformità e l'audit con oltre 200 framework, mappatura automatica dei controlli, gestione delle vulnerabilità e flussi di lavoro per la risposta agli incidenti.
Metti una stella al progetto 🌟 per ricevere le notifiche delle release e aiutare la crescita della community!
intuitem.com
·
Prova gratuita SaaS
·
Roadmap
·
Documentazione
·
Lingue
·
Discord
·
Framework

CISO Assistant offre una nuova prospettiva sulla gestione della cybersecurity e sulle pratiche GRC (Governance, Risk e Compliance):

La nostra visione è creare un one-stop-shop per la gestione della cybersecurity—modernizzando la GRC attraverso la semplificazione e l'interoperabilità.
Come professionisti che lavorano con esperti di cybersecurity e IT, abbiamo affrontato gli stessi problemi: frammentazione degli strumenti, duplicazione dei dati e mancanza di soluzioni intuitive e integrate. CISO Assistant è nato da queste lezioni e stiamo costruendo una community attorno a principi pragmatici e di buon senso.
Ci evolviamo costantemente grazie al contributo di utenti e clienti. Come un polpo 🐙, CISO Assistant continua a far crescere nuovi tentacoli—portando chiarezza, automazione e produttività ai team di cybersecurity riducendo al contempo lo sforzo di inserimento e output dei dati.
[!TIP] Il modo più semplice per iniziare è tramite la prova gratuita dell'istanza cloud disponibile qui.
In alternativa, una volta installati Docker e Docker-compose, sulla tua workstation o server:
clona il repo:```sh git clone --single-branch -b main https://github.com/intuitem/ciso-assistant-community.git
ed esegui lo script di avvio```sh
./docker-compose.sh # Linux/MacOS
./docker-compose.ps1 # Windows
Se stai cercando altre opzioni di installazione per il self-hosting, consulta il config builder e la documentazione.
[!NOTE] Lo script docker-compose utilizza immagini Docker precompilate che supportano la maggior parte delle architetture hardware standard. Se utilizzi Windows, assicurati di avere installato Docker Desktop con WSL2 e avvia lo script PowerShell. Provvederà a configurare Docker Desktop per tuo conto.
Il file docker compose può essere modificato per passare parametri aggiuntivi in base alla tua configurazione (ad es. impostazioni del Mailer).
[!WARNING] Se ricevi avvisi o errori relativi alla mancata corrispondenza della piattaforma dell'immagine con quella dell'host, apri una segnalazione con i dettagli e la aggiungeremo a breve. Puoi anche utilizzare
docker-compose-build.sh(vedi sotto) per compilare per la tua architettura specifica.
[!CAUTION] Non utilizzare direttamente il codice del branch
mainin produzione, poiché è il merge upstream e può contenere modifiche incompatibili durante il nostro sviluppo. Utilizza itagsper le versioni stabili o le immagini precompilate.

Conformità e framework
Gestione del rischio
Rischio di terze parti
Operazioni e remediation
Reportistica e analisi
Collaborazione e produttività
Automazione e integrazioni
Sicurezza e accesso
Privacy
Gestione del programma
Piattaforma
Le funzionalità future sono elencate nella roadmap.
CISO Assistant è sviluppato e mantenuto da Intuitem, un'azienda specializzata in Cybersecurity, Cloud e Data/AI.
Ecco un estratto di alcuni dei blocchi costitutivi di CISO Assistant per illustrare il concetto di disaccoppiamento che favorisce la riusabilità:

Per tutti i dettagli, consulta la documentazione del modello dati.
Al centro di CISO Assistant vi è il principio di disaccoppiamento, che consente casi d'uso potenti e notevoli risparmi di tempo:
Ecco un'illustrazione del principio di disaccoppiamento e dei suoi vantaggi:

Consulta la documentazione online su https://intuitem.gitbook.io/ciso-assistant.
Maggiori informazioni qui: Motore AI
[!NOTE] I framework contrassegnati con
*richiedono un ulteriore passaggio manuale per ottenere l'ultimo foglio Excel dal loro sito web, poiché la loro licenza impedisce l'uso diretto. Puoi caricare il foglio Excel direttamente come libreria.
Consulta la libreria e gli strumenti per il Domain Specific Language utilizzato e per come definire i tuoi.
Indonesia PDP 🇮🇩
OWASP SAMM
COBAC R-2024/01
ICO Data protection self-assessment 🇬🇧
ASD ISM 🇦🇺
e molto altro: basta chiedere su Discord. Se è uno standard aperto, lo faremo per te, gratuitamente 😉
Una libreria può rappresentare un framework, un catalogo di minacce, un insieme di controlli di riferimento o persino una matrice di rischio personalizzata.
Le librerie possono ora essere caricate direttamente da file Excel. Non è necessario convertirle manualmente in YAML in anticipo—la conversione viene gestita internamente quando viene caricato un file Excel.
Dai un'occhiata alla directory tools e al suo README dedicato, che descrive il formato previsto dei file sorgente delle librerie in Excel. La sottodirectory excel contiene file XLSX di esempio utilizzati come sorgenti per le librerie esistenti e può essere usata come modello per crearne di proprie.
Per caricare una libreria da un file Excel, vai alla pagina Governance → Library, clicca su Load e seleziona il tuo file sorgente Excel. Eventuali errori di validazione o parsing verranno segnalati durante il processo di importazione.
Sebbene i file Excel possano essere caricati direttamente, è ancora possibile convertire i file sorgente delle librerie in YAML utilizzando script Python esterni:
convert_library_v2.py ti aiuta a generare una libreria da un semplice file Excel. Una volta che i tuoi elementi sono strutturati nel formato previsto, esegui lo script per produrre il file YAML corrispondente.tools contiene anche convertitori specializzati per framework specifici (ad esempio, CIS o CCM Controls).Per facilitare la creazione di mappature tra framework, puoi utilizzare lo strumento prepare_mapping_v2.py. Genera un file Excel basato su due librerie di framework esistenti in formato YAML. Dopo aver compilato le mappature, il file Excel risultante può essere:
convert_library_v2.py.Unisciti alla nostra community Discord aperta per interagire con il team e altri esperti GRC.
Il modo più rapido e semplice per iniziare è tramite la prova gratuita dell'istanza cloud disponibile qui.
Per eseguire CISO Assistant in locale in modo semplice, puoi usare Docker compose.
Assicurati di avere una versione recente di docker (>= 27.0).
2. Avvia lo script docker-compose per le immagini precompilate:```sh
./docker-compose.sh # Linux/MacOS
./docker-compose.ps1 # Windows
In alternativa, puoi usare questa variante per creare le immagini docker per la tua architettura specifica:```sh ./docker-compose-build.sh # Linux/MacOS ./docker-compose-build.ps1 # Windows
Quando richiesto, inserisci la tua email e password per il tuo superuser.
Puoi quindi raggiungere CISO Assistant utilizzando il tuo browser web all'indirizzo [https://localhost:8443/](https://localhost:8443/)
Per le esecuzioni seguenti, usa direttamente "docker compose up".
## Configurare CISO Assistant per lo sviluppo
> [!WARNING]
>
> ### Nota importante per gli utenti Windows
>
> La soluzione migliore per gli utenti che sviluppano su **Windows** è utilizzare [Ubuntu](https://apps.microsoft.com/detail/9pdxgncfsczv) installato su [WSL2](https://apps.microsoft.com/detail/9p9tqf7mrm4r) (Docker non è richiesto).
>
> Ora è anche possibile eseguire e sviluppare CISO Assistant nativamente su Windows senza WSL2 né Docker, ma richiederà alcuni passaggi aggiuntivi.
> Tieni presente che l'esecuzione nativa su Windows è ancora in **FASE SPERIMENTALE** e **NON** dovrebbe essere utilizzata se non sei sicuro di ciò che stai facendo, o se vuoi garantire stabilità durante lo sviluppo.
> Ciononostante, ci piacerebbe ricevere qualsiasi suggerimento per migliorare l'esperienza di sviluppo per gli utenti Windows. Sentiti libero di aprire una Issue/PR a riguardo!
### Requisiti
- 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>[SPERIMENTALE] Requisiti aggiuntivi per lo sviluppo su Windows senza WSL2</summary>
Se vuoi sviluppare il progetto senza WSL2, dovrai installare [MSYS2](https://www.msys2.org/), aggiungere i binari di `MSYS2 UCRT64` alla tua [variabile d'ambiente PATH di 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) (solitamente, i binari si trovano in `C:\msys64\ucrt64\bin`) e poi installare le seguenti dipendenze tramite `pacman` usando `MSYS2 UCRT64`.```sh
pacman -S mingw-w64-ucrt-x86_64-file mingw-w64-ucrt-x86_64-pango
Dovrai anche aggiungere queste 2 variabili d'ambiente di sistema dopo aver installato le dipendenze:```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
Dato che la codifica predefinita su Windows non è `UTF-8` ma `cp1252`, alcuni script Python che stampano caratteri `UTF-8` come le emoji possono causare il crash o il malfunzionamento del backend in alcuni casi (ad esempio l'importazione di librerie).
Per evitare questo problema con questo progetto, forza la codifica `UTF-8` aggiungendo queste 2 variabili d'ambiente utente:```conf
PYTHONUTF8=1
PYTHONIOENCODING=utf-8:replace
[!NOTE]
Problemi noti
- La libreria
libmagicsu Windows (rilevamento MIME) fatica a riconoscere un file Excel (.xlsx) leggendo i suoi primi2048bit, poiché restituisceapplication/octet-streamla maggior parte delle volte quando si importa una libreria Excel (il backend visualizza il messaggio di avviso[warning ] Invalid MIME type). Ciò non impedisce l'importazione del file Excel grazie al metodo di fallback inbackend/library/views.py:StoredLibraryViewSet.upload_library.
2. Crea un file nella cartella padre (ad es. ../myvars) e memorizza le tue variabili d'ambiente al suo interno copiando e modificando il seguente codice e sostituendo `"<XXX>"` con i tuoi valori privati. Fai attenzione a non eseguire il commit di questo file nel tuo repository git.
**Variabili obbligatorie**
Tutte le variabili nel backend hanno comodi valori predefiniti.
**Variabili consigliate**```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
Altre variabili```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>[SPERIMENTALE] Altra variabile per lo sviluppo su Windows senza WSL2</summary>
È possibile configurare solo variabili personalizzate di PostgreSQL.
Utilizza gli script di supporto documentati in [`tools/.windows/README.md`](https://github.com/intuitem/ciso-assistant-community/blob/main/tools/.windows/README.md) per maggiori informazioni.
</details>
3. Installa uv
Visita il sito web di uv per le istruzioni: <https://docs.astral.sh/uv/getting-started/installation/>
4. Spostati nel backend e installa le dipendenze richieste.```sh
cd backend
uv sync
6. Se vuoi configurare Postgres:
- Avvia uno di questi comandi per entrare in Postgres:
- `psql as superadmin`
- `sudo su postgres`
- `psql`
- Crea il database "ciso-assistant"
- `create database ciso-assistant;`
- Crea l'utente "ciso-assistantuser" e concedigli l'accesso
- `create user ciso-assistantuser with password '<POSTGRES_PASSWORD>';`
- `grant all privileges on database ciso-assistant to ciso-assistantuser;`
<details>
<summary>[SPERIMENTALE] Configurare PostgreSQL su Windows</summary>
Per maggiori informazioni, consulta la documentazione in [`tools/.windows/README.md`](https://github.com/intuitem/ciso-assistant-community/blob/main/tools/.windows/README.md).
</details>
7. Se vuoi configurare un bucket s3:
- Scegli il tuo provider s3 o prova la funzionalità s3 con miniO con questo 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"`
- Ora puoi controllare il tuo bucket su <http://localhost:9001>
- Compila il login con le credenziali che hai inserito nelle variabili env del docker run
- Esporta nella directory backend tutte le variabili env richieste per S3
- Puoi vedere l'elenco sopra nelle variabili consigliate
8. Applica le migrazioni.```sh
uv run python manage.py migrate
Per maggiori informazioni, consulta la documentazione in tools/.windows/README.md.
Se hai impostato un mailer e la variabile CISO_SUPERUSER_EMAIL, non è necessario creare un superuser Django con
createsuperuser, poiché verrà creato automaticamente al primo avvio. Dovresti ricevere un'email con un link per impostare la tua password.```sh uv run python manage.py createsuperuser
<details>
<summary>[SPERIMENTALE] Creare un superuser Django su Windows senza WSL2</summary>
Per maggiori informazioni, consulta la documentazione in [`tools/.windows/README.md`](https://github.com/intuitem/ciso-assistant-community/blob/main/tools/.windows/README.md).
</details>
10. Avvia il server di sviluppo.```sh
uv run python manage.py runserver
Quando si esegue il server di sviluppo di Django in modo nativo su Windows, SvelteKit SSR può aprire abbastanza connessioni API concorrenti da raggiungere il piccolo backlog di ascolto predefinito del server. Questo può causare errori intermittenti ECONNREFUSED / TypeError: fetch failed nel frontend.
Usa gli script di supporto documentati in tools/.windows/README.md per la configurazione dello sviluppo nativo su Windows.
python manage.py run_huey -w 2 -k process o equivalente in una shell separata.MAIL_DEBUG per avere la posta sulla console per un debug più semplice2. Installa le dipendenze```bash
npm install -g pnpm
pnpm install
4. Raggiungi il frontend su <http://localhost:5173>
> [!NOTE]
> Safari non funzionerà correttamente in questa configurazione, poiché richiede https per i cookie sicuri. La soluzione più semplice è utilizzare Chrome o Firefox. Un'alternativa è utilizzare un proxy caddy. Per maggiori informazioni, consulta il [file readme](https://github.com/intuitem/ciso-assistant-community/blob/main/frontend/README.md) nella directory frontend.
5. Variabili d'ambiente
Tutte le variabili nel frontend hanno comodi valori predefiniti.
Se sposti il frontend su un altro host, dovresti impostare la seguente variabile: `PUBLIC_BACKEND_API_URL`. Il suo valore predefinito è <http://localhost:8000/api>.
La variabile `PUBLIC_BACKEND_API_EXPOSED_URL` è necessaria per il corretto funzionamento dell'SSO. Punta all'URL dell'API come visto dal browser. Dovrebbe essere uguale alla concatenazione di `CISO_ASSISTANT_URL` (nel backend) con "/api".
Quando avvii "node server" invece di "pnpm run dev", devi impostare la variabile ORIGIN allo stesso valore di `CISO_ASSISTANT_URL` nel backend (ad es. <http://localhost:3000>).
### Gestione delle migrazioni
Le migrazioni sono tracciate dal controllo di versione, <https://docs.djangoproject.com/en/4.2/topics/migrations/#version-control>
Per la prima versione del prodotto, si consiglia di partire da una migrazione pulita.
Nota: per pulire le migrazioni esistenti, digita:```sh
find . -path "*/migrations/*.py" -not -name "__init__.py" -delete
find . -path "*/migrations/*.pyc" -delete
Dopo una modifica (o una pulizia), è necessario rigenerare i file di migrazione:```sh uv run python manage.py makemigrations uv run python manage.py migrate
Questi file di migrazione dovrebbero essere tracciati dal controllo di versione.
### Suite di test
Per eseguire i test API sul backend, digita semplicemente `uv run pytest` in una shell nella cartella backend.
Per eseguire i test funzionali sul frontend, esegui le seguenti azioni:
- nella cartella frontend, lancia il seguente comando:```shell
tests/e2e-tests.sh
L'obiettivo dell'ambiente di test è prevenire qualsiasi regressione, ovvero tutti i test devono avere esito positivo, sia per il backend che per il frontend.
export DJANGO_DEBUG=True prima di avviare il backend.<backend_endpoint>/api/schema/swagger/,
ad esempio: http://127.0.0.1:8000/api/schema/swagger/.Per interagire con l'API tramite Swagger o direttamente con chiamate HTTP:
Authorization: Token <token>⚠️ Nota: usare Token, non Bearer.
I PAT rispettano l'MFA: vengono emessi da una sessione autenticata, quindi un account protetto da MFA rimane protetto. Per i flussi interattivi/dal browser, l'autenticazione passa attraverso il login standard (che applica l'MFA quando abilitata).
Il file docker-compose.yml evidenzia una configurazione rilevante per i test, con un proxy Caddy davanti al frontend. Espone l'intera API, cosa non ancora raccomandata per la produzione.
Per la produzione, è possibile utilizzare il config builder per generare un file docker-compose.yml più rafforzato e personalizzato, sebbene siano ancora necessari diversi passaggi di hardening.
Le seguenti raccomandazioni si applicano per la produzione:
DJANGO_DEBUG=False per motivi di sicurezza./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 il single logout SAML abilitato)[!NOTE] Il frontend non può dedurre l'host automaticamente, quindi è necessario impostare la variabile ORIGIN, oppure le variabili
HOST_HEADERePROTOCOL_HEADER. Si prega di consultare la documentazione di sveltekit su questa questione delicata. Attenzione: questo approccio non funziona con "pnpm run dev", cosa che non dovrebbe essere un problema per la produzione.
[!NOTE] Caddy deve ricevere un header SNI. Pertanto, per il vostro URL pubblico (quello dichiarato in
CISO_ASSISTANT_URL), dovete usare un FQDN, non un indirizzo IP, poiché l'SNI non viene trasmesso da un browser se l'host è un indirizzo IP. Un'altra questione delicata!
[!NOTE] I file template docker-compose ora avviano backend, huey e frontend in modalità non-root. Se utilizzate un vecchio file docker-compose.yml, è consigliabile aggiornarlo. I container sono compatibili sia con la modalità root che non-root.
docker-compose.yml ora si basa su un utente non-root 1001:1001, disponibile nell'immagine. I deployment più vecchi utilizzano l'utente root, che è ancora supportato. Per passare a non-root, seguire questi passaggi sull'host:
Il riferimento è en.json; la copertura = quota di chiavi di riferimento presenti in ciascun file di locale. Aggiornato automaticamente ogni giorno — dettaglio completo sulla dashboard.
È stata posta grande attenzione nel seguire le migliori pratiche di sicurezza. Si prega di segnalare qualsiasi problema a [email protected].
Questo repository contiene il codice sorgente sia per l'edizione Open Source di CISO Assistant (Community Edition), rilasciata sotto AGPL v3, sia per l'edizione commerciale di CISO Assistant (Pro ed Enterprise Editions), rilasciata sotto la intuitem Commercial Software License. Questo approccio mono-repository è adottato per semplicità.
Tutti i file all'interno della directory di primo livello "enterprise" sono rilasciati sotto la intuitem Commercial Software License.
Tutti i file al di fuori della directory di primo livello "enterprise" sono rilasciati sotto AGPLv3.
Vedere LICENSE.md per i dettagli. Per maggiori dettagli sulle edizioni commerciali, potete contattarci a [email protected].
Salvo diversa indicazione, tutti i file sono © intuitem.