
Ein Tool für das Management von organisatorischen Assets und Schwachstellen mit Jira-Integration, entwickelt für die Erstellung von Anwendungssicherheitsberichten.
Ein Tool zur Verwaltung von organisatorischen Assets und Schwachstellen, mit Jira-Integration, entwickelt für die Erstellung von Anwendungssicherheitsberichten.
Bitte bedenken Sie, dass sich dieses Projekt in einer frühen Entwicklungsphase befindet.


.env-Datei und geben Sie die folgenden Eigenschaften an: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"
Bulwark-Container erstellen und starten:
docker-compose up
Bulwark-Container starten/stoppen:
docker-compose start
docker-compose stop
Bulwark-Container entfernen:
docker-compose down
Bulwark ist unter localhost:4500 verfügbar.
$ git clone (url)
$ cd bulwark
$ npm install
Das Ausführen von npm install installiert sowohl serverseitige als auch clientseitige Module. Außerdem wird das Skript npm run config ausgeführt, das die Umgebungsvariablen dynamisch setzt und zusätzlich die Angular-Umgebung aktualisiert.
Setzen Sie NODE_ENV="development"
$ npm run config
$ npm run start:dev
Setzen Sie NODE_ENV="production"
Bitte beachten: npm install baut automatisch im Produktionsmodus
$ npm run config
$ npm run build:prod
$ npm start
Erstellen Sie eine .env-Datei im Hauptverzeichnis. Diese wird von der Anwendung mit dotenv geparst.
DB_PASSWORDDB_PASSWORD="somePassword"
Setzen Sie diese Variable auf das Datenbank-Passwort
DB_USERNAMEDB_USERNAME="foobar"
Setzen Sie diese Variable auf den Datenbank-Benutzernamen
DB_URLDB_URL=something-foo-bar.dbnet
Setzen Sie diese Variable auf die Datenbank-URL
DB_PORTDB_PORT=3306
Setzen Sie diese Variable auf den Datenbank-Port
DB_NAMEDB_NAME="foobar"
Setzen Sie diese Variable auf den Datenbank-Verbindungsnamen
DB_TYPEDB_TYPE="mysql"
Die Anwendung wurde mit einer MySQL-Datenbank entwickelt. Weitere Datenbankoptionen finden Sie in der typeorm-Dokumentation.
NODE_ENVNODE_ENV=production
Setzen Sie diese Variable, um die Node-Umgebung zu bestimmen
DEV_URL="http://localhost:4200"Wird von Angular zum Erstellen und Bereitstellen der Anwendung verwendet
SERVER_ADDRESS="http://localhost"Aktualisieren Sie dies, falls eine andere Serveradresse erforderlich ist
PORT=4500Aktualisieren Sie dies, falls ein anderer Serverport erforderlich ist
JWT_KEYJWT_KEY="changeMe"
Setzen Sie diese Variable auf das JWT-Geheimnis
JWT_REFRESH_KEYJWT_REFRESH_KEY="changeMe"
Setzen Sie diese Variable auf das Refresh-JWT-Geheimnis
CRYPTO_SECRETCRYPTO_SECRET="randomValue"
Setzen Sie diese Variable auf das Scrypt-Passwort.
CRYPTO_SALTCRYPTO_SECRET="randomValue"
Setzen Sie diese Variable auf das Scrypt-Salt.
.env-Datei-TemplateDB_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=""
Install sqlite3:
brew install sqlite3
Export compiler related env variables:
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
Prepare for a fresh install:
rm -rf node_modules
npm cache verify
npm i --force
$ npm run migration:init
$ npm run migration:run
Beim ersten Start wird ein Benutzerkonto mit folgenden Anmeldedaten erstellt:
[email protected]changeMeNach dem ersten Login aktualisieren Sie das Standard-Passwort im Profilbereich.
Die Anwendung verwendet das Prinzip der geringsten Privilegien mit teambasierter Autorisierung. Teams wird eine Rolle zugewiesen, die die für dieses Team verfügbaren Funktionen bestimmt. Ein Benutzer erbt Rollen durch die Teammitgliedschaft. Administratoren haben Teamverwaltungszugriff und müssen Benutzer Teams zuweisen. Anfangs werden Benutzer ohne Teamzuordnung erstellt und haben keinen Zugriff auf Funktionen in der Anwendung.
Die drei Rollen umfassen:
Ein Team kann nur einer einzigen Organisation zugeordnet werden. Ein Team kann jedoch mehreren Assets innerhalb derselben Organisation zugeordnet werden. Ein Benutzer kann Mitglied mehrerer Teams sein. Wenn ein Benutzer mehreren Teams derselben Organisation zugewiesen ist, wählt das System das am höchsten autorisierte Team aus.
Bitte beachten: Der Standardbenutzer wird beim ersten Start automatisch dem Team Administrators zugewiesen
Ein Benutzer kann einen einzelnen API-Schlüssel generieren, der anstelle des Autorisierungstokens verwendet werden kann. Dieser API-Schlüssel ermöglicht alle Aktionen in der Anwendung, für die der Benutzer autorisiert ist.
BenutzerprofilAPI-Schlüssel generierenDiese Aktion generiert ein Paar von Schlüsseln:
Bulwark-Api-Key
Bulwark-Secret-Key
Notieren Sie die generierten Schlüssel an einem sicheren Ort. Sie können die Schlüssel zu einem späteren Zeitpunkt nicht abrufen.
Die Werte des API-Schlüsselpaars müssen übereinstimmen und an die folgenden HTTP-Request-Header angehängt werden:
Bulwark-Api-KeyBulwark-Secret-KeyBeispiel:
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
Pull-Requests sind willkommen. Bei größeren Änderungen öffnen Sie bitte zunächst ein Issue, um zu besprechen, was Sie ändern möchten. Lesen Sie die Beitragsrichtlinien für weitere Informationen.
| Admin | Tester | Schreibgeschützt | |
|---|---|---|---|
| Benutzerprofilverwaltung | x | x | x |
| Teamverwaltung | x | ||
| Benutzerverwaltung | x | ||
| Benutzer einladen | x | ||
| Benutzer erstellen | x | ||
| E-Mail-Einstellungen verwalten | x | ||
| Jira-Integration | x | ||
| Organisation: Lesen | x | x | x |
| Organisation: Vollzugriff Schreiben | x | ||
| Asset: Lesen | x | x | x |
| Asset: Vollzugriff Schreiben | x | ||
| Bewertung: Lesen | x | x | x |
| Bewertung: Vollzugriff Schreiben | x | x | |
| Schwachstelle: Lesen | x | x | x |
| Schwachstelle: Vollzugriff Schreiben | x | x | |
| Schwachstelle nach Jira exportieren | x | x | |
| Berichtserstellung | x | x | x |