
Un outil de gestion des actifs et des vulnérabilités organisationnelles, avec intégration Jira, conçu pour générer des rapports de sécurité des applications.
Un outil de gestion des actifs et des vulnérabilités organisationnelles, avec intégration Jira, conçu pour la génération de rapports de sécurité applicative.
Veuillez noter que ce projet est en phase de développement précoce.


.env avec les propriétés suivantes :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"
Construisez et démarrez les conteneurs Bulwark :
docker-compose up
Démarrer/Arrêter les conteneurs Bulwark :
docker-compose start
docker-compose stop
Supprimer les conteneurs Bulwark :
docker-compose down
Bulwark sera disponible sur localhost:4500
$ git clone (url)
$ cd bulwark
$ npm install
L'exécution de npm install installera à la fois les modules côté serveur et côté client. De plus, il exécutera le script npm run config qui définira dynamiquement les variables d'environnement et mettra à jour l'environnement Angular.
Définissez NODE_ENV="development"
$ npm run config
$ npm run start:dev
Définissez NODE_ENV="production"
Veuillez noter : npm install construira automatiquement en mode production
$ npm run config
$ npm run build:prod
$ npm start
Créez un fichier .env à la racine du répertoire. Il sera analysé avec dotenv par l'application.
DB_PASSWORDDB_PASSWORD="somePassword"
Définissez cette variable pour le mot de passe de la base de données.
DB_USERNAMEDB_USERNAME="foobar"
Définissez cette variable pour le nom d'utilisateur de la base de données.
DB_URLDB_URL=something-foo-bar.dbnet
Définissez cette variable pour l'URL de la base de données.
DB_PORTDB_PORT=3306
Définissez cette variable pour le port de la base de données.
DB_NAMEDB_NAME="foobar"
Définissez cette variable pour le nom de connexion à la base de données.
DB_TYPEDB_TYPE="mysql"
L'application a été développée avec une base de données MySQL. Consultez la documentation de typeorm pour plus d'options de base de données.
NODE_ENVNODE_ENV=production
Définissez cette variable pour déterminer l'environnement Node.
DEV_URL="http://localhost:4200"Utilisé par Angular pour construire et servir l'application.
SERVER_ADDRESS="http://localhost"Mettez à jour si une adresse serveur différente est nécessaire.
PORT=4500Mettez à jour si un port serveur différent est nécessaire.
JWT_KEYJWT_KEY="changeMe"
Définissez cette variable pour le secret JWT.
JWT_REFRESH_KEYJWT_REFRESH_KEY="changeMe"
Définissez cette variable pour le secret JWT de rafraîchissement.
CRYPTO_SECRETCRYPTO_SECRET="randomValue"
Définissez cette variable pour le mot de passe Scrypt.
CRYPTO_SALTCRYPTO_SECRET="randomValue"
Définissez cette variable pour le sel Scrypt.
.env videDB_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=""
Installer sqlite3 :
brew install sqlite3
Exporter les variables d'environnement liées au compilateur :
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
Préparer une nouvelle installation :
rm -rf node_modules
npm cache verify
npm i --force
$ npm run migration:init
$ npm run migration:run
Un compte utilisateur est créé au premier démarrage avec les identifiants suivants :
[email protected]changeMeLors de la première connexion, mettez à jour le mot de passe de l'utilisateur par défaut dans la section profil.
L'application utilise le principe du moindre privilège avec une autorisation basée sur les équipes. Les équipes se voient attribuer un rôle qui détermine les fonctionnalités disponibles pour cette équipe. Un utilisateur hérite des rôles de l'appartenance à une équipe. Les administrateurs ont accès à la gestion des équipes et doivent assigner les utilisateurs aux équipes. Initialement, les utilisateurs sont créés sans association à une équipe et n'auront accès à aucune fonctionnalité de l'application.
Les trois rôles sont :
Une équipe ne peut être associée qu'à une seule organisation. Cependant, une équipe peut être associée à plusieurs actifs au sein de la même organisation. Un utilisateur peut être membre de plusieurs équipes. Si un utilisateur est assigné à plusieurs équipes de la même organisation, le système choisira l'équipe avec la plus haute autorisation.
Veuillez noter : L'utilisateur par défaut est automatiquement assigné à l'équipe Administrateurs au premier démarrage
Un utilisateur peut générer une seule clé API qui peut être utilisée à la place de son jeton d'autorisation. Cette clé API permet toutes les actions sur l'application pour lesquelles l'utilisateur est autorisé.
Profil utilisateurGénérer une clé APICette action générera une paire de clés :
Bulwark-Api-Key
Bulwark-Secret-Key
Notez les clés générées dans un endroit sûr. Vous ne pourrez pas les récupérer ultérieurement.
Les valeurs de la paire de clés API doivent être appariées et ajoutées aux en-têtes de requête HTTP suivants :
Bulwark-Api-KeyBulwark-Secret-KeyExemple :
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
Les pull requests sont les bienvenues. Pour des changements majeurs, veuillez d'abord ouvrir un ticket pour discuter de ce que vous souhaitez modifier. Lisez les directives de contribution pour plus d'informations.
| Admin | Testeur | Lecture seule | |
|---|---|---|---|
| Gestion du profil utilisateur | x | x | x |
| Gestion des équipes | x | ||
| Gestion des utilisateurs | x | ||
| Inviter un utilisateur | x | ||
| Créer un utilisateur | x | ||
| Gestion des paramètres email | x | ||
| Intégration Jira | x | ||
| Organisation : Lecture | x | x | x |
| Organisation : Écriture complète | x | ||
| Actif : Lecture | x | x | x |
| Actif : Écriture complète | x | ||
| Évaluation : Lecture | x | x | x |
| Évaluation : Écriture complète | x | x | |
| Vulnérabilité : Lecture | x | x | x |
| Vulnérabilité : Écriture complète | x | x | |
| Exporter la vulnérabilité vers Jira | x | x | |
| Génération de rapports | x | x | x |