
Uno strumento organizzativo per la gestione di asset e vulnerabilità, con integrazione Jira, progettato per generare report di sicurezza delle applicazioni.
Uno strumento per la gestione di asset e vulnerabilità organizzative, con integrazione Jira, progettato per generare report di sicurezza delle applicazioni.
Tieni presente che questo progetto è in fase iniziale di sviluppo.


.env e fornisci le seguenti proprietà:MYSQL_DATABASE="bulwark"
MYSQL_PASSWORD="bulwark"
MYSQL_ROOT_PASSWORD="bulwark"
MYSQL_USER="root"
MYSQL_DB_CHECK="mysql"
DB_PASSWORD="bulwark"
DB_URL="172.16.16.3"
DB_ROOT="root"
DB_USERNAME="bulwark"
DB_PORT=3306
DB_NAME="bulwark"
DB_TYPE="mysql"
NODE_ENV="production"
DEV_URL="http://localhost:4200"
SERVER_ADDRESS="http://localhost"
PORT=4500
JWT_KEY="changeme"
JWT_REFRESH_KEY="changeme"
CRYPTO_SECRET="changeme"
CRYPTO_SALT="changeme"
Costruisci e avvia i container di Bulwark:
docker-compose up
Avvia/Ferma i container di Bulwark:
docker-compose start
docker-compose stop
Rimuovi i container di Bulwark:
docker-compose down
Bulwark sarà disponibile all'indirizzo localhost:4500
$ git clone (url)
$ cd bulwark
$ npm install
Eseguire npm install installerà sia i moduli lato server che client. Inoltre, eseguirà lo script npm run config che imposterà dinamicamente le variabili d'ambiente e aggiornerà l'ambiente Angular.
Imposta NODE_ENV="development"
$ npm run config
$ npm run start:dev
Imposta NODE_ENV="production"
Nota: npm install compilerà automaticamente in modalità produzione
$ npm run config
$ npm run build:prod
$ npm start
Crea un file .env nella directory principale. Verrà analizzato con dotenv dall'applicazione.
DB_PASSWORDDB_PASSWORD="somePassword"
Imposta questa variabile con la password del database
DB_USERNAMEDB_USERNAME="foobar"
Imposta questa variabile con il nome utente del database
DB_URLDB_URL=something-foo-bar.dbnet
Imposta questa variabile con l'URL del database
DB_PORTDB_PORT=3306
Imposta questa variabile con la porta del database
DB_NAMEDB_NAME="foobar"
Imposta questa variabile con il nome di connessione del database
DB_TYPEDB_TYPE="mysql"
L'applicazione è stata sviluppata utilizzando un database MySQL. Consulta la documentazione di typeorm per ulteriori opzioni di database.
NODE_ENVNODE_ENV=production
Imposta questa variabile per determinare l'ambiente Node
DEV_URL="http://localhost:4200"Usata da Angular per compilare e servire l'applicazione
SERVER_ADDRESS="http://localhost"Aggiorna se è necessario un indirizzo server diverso
PORT=4500Aggiorna se è necessaria una porta server diversa
JWT_KEYJWT_KEY="changeMe"
Imposta questa variabile con il segreto JWT
JWT_REFRESH_KEYJWT_REFRESH_KEY="changeMe"
Imposta questa variabile con il segreto per il refresh JWT
CRYPTO_SECRETCRYPTO_SECRET="randomValue"
Imposta questa variabile con la password Scrypt.
CRYPTO_SALTCRYPTO_SECRET="randomValue"
Imposta questa variabile con il sale Scrypt.
.env vuotoDB_PASSWORD=""
DB_URL=""
DB_USERNAME=""
DB_PORT=3306
DB_NAME=""
DB_TYPE=""
NODE_ENV=""
DEV_URL="http://localhost:4200"
SERVER_ADDRESS="http://localhost"
PORT=4500
JWT_KEY=""
JWT_REFRESH_KEY=""
CRYPTO_SECRET=""
CRYPTO_SALT=""
Installa sqlite3:
brew install sqlite3
Esporta le variabili d'ambiente relative al compilatore:
export LDFLAGS="-L/opt/homebrew/opt/sqlite/lib"
export CPPFLAGS="-I/opt/homebrew/opt/sqlite/include"
export PKG_CONFIG_PATH="/opt/homebrew/opt/sqlite/lib/pkgconfig"
export NODE_OPTIONS=--openssl-legacy-provider
Preparati per un'installazione pulita:
rm -rf node_modules
npm cache verify
npm i --force
$ npm run migration:init
$ npm run migration:run
Un account utente viene creato all'avvio iniziale con le seguenti credenziali:
[email protected]changeMeAl primo login, aggiorna la password predefinita dell'utente nella sezione del profilo.
L'applicazione utilizza il principio del minimo privilegio con autorizzazione basata su team. Ai team viene assegnato un ruolo che determina le funzionalità disponibili per quel team specifico. Un utente erediterà i ruoli dall'appartenenza al team. Gli amministratori hanno accesso alla gestione dei team e devono assegnare gli utenti ai team. Inizialmente, gli utenti vengono creati senza associazione a un team e non avranno accesso ad alcuna funzionalità dell'applicazione.
I tre ruoli includono:
Un team può essere associato solo a una singola organizzazione. Tuttavia, un team può essere associato a più asset all'interno della stessa organizzazione. Un utente può essere membro di più team. Se un utente è assegnato a più team della stessa organizzazione, il sistema sceglierà il team con la massima autorizzazione.
Nota: L'utente predefinito viene automaticamente assegnato al team Amministratori all'avvio iniziale
Un utente può generare una singola chiave API che può essere utilizzata al posto del token di autorizzazione. Questa chiave API consente tutte le azioni nell'applicazione per le quali l'utente è autorizzato.
Profilo utenteGenera chiave APIQuesta azione genererà una coppia di chiavi:
Bulwark-Api-Key
Bulwark-Secret-Key
Annota le chiavi generate in un luogo sicuro. Non sarai in grado di recuperare le chiavi in seguito.
I valori della coppia di chiavi API devono essere abbinati e aggiunti alle seguenti intestazioni delle richieste HTTP:
Bulwark-Api-KeyBulwark-Secret-KeyEsempio:
GET /api/assessment/1 HTTP/1.1
Host: localhost:4500
Accept: application/json, text/plain, */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Bulwark-Api-Key: {{changeMe}}
Bulwark-Secret-Key: {{changeMe}}
Origin: http://localhost:4200
Connection: close
Referer: http://localhost:4200/
Pragma: no-cache
Cache-Control: no-cache
I pull request sono benvenuti. Per modifiche importanti, apri prima un issue per discutere cosa vorresti cambiare. Leggi le linee guida per il contributo per maggiori informazioni.
| Admin | Tester | Sola Lettura | |
|---|---|---|---|
| Gestione del profilo utente | x | x | x |
| Gestione del team | x | ||
| Gestione utenti | x | ||
| Invita utente | x | ||
| Crea utente | x | ||
| Gestione impostazioni email | x | ||
| Integrazione Jira | x | ||
| Organizzazione: Lettura | x | x | x |
| Organizzazione: Scrittura completa | x | ||
| Asset: Lettura | x | x | x |
| Asset: Scrittura completa | x | ||
| Valutazione: Lettura | x | x | x |
| Valutazione: Scrittura completa | x | x | |
| Vulnerabilità: Lettura | x | x | x |
| Vulnerabilità: Scrittura completa | x | x | |
| Esporta vulnerabilità su Jira | x | x | |
| Generazione report | x | x | x |