
Una herramienta de gestión de activos y vulnerabilidades organizacionales, con integración con Jira, diseñada para generar informes de seguridad de aplicaciones.
Una herramienta organizativa de gestión de activos y vulnerabilidades, con integración con Jira, diseñada para generar informes de seguridad de aplicaciones.
Tenga en cuenta que este proyecto está en desarrollo temprano.


.env y proporcione las siguientes propiedades: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"
Construya e inicie los contenedores de Bulwark:
docker-compose up
Iniciar/Detener contenedores de Bulwark:
docker-compose start
docker-compose stop
Eliminar contenedores de Bulwark:
docker-compose down
Bulwark estará disponible en localhost:4500
$ git clone (url)
$ cd bulwark
$ npm install
Ejecutar npm install instalará tanto los módulos del servidor como los del cliente. Además, ejecutará el script npm run config que establecerá dinámicamente las variables de entorno además de actualizar el entorno de Angular.
Establezca NODE_ENV="development"
$ npm run config
$ npm run start:dev
Establezca NODE_ENV="production"
Tenga en cuenta: npm install compilará automáticamente en modo de producción
$ npm run config
$ npm run build:prod
$ npm start
Cree un archivo .env en el directorio raíz. La aplicación lo analizará con dotenv.
DB_PASSWORDDB_PASSWORD="somePassword"
Establezca esta variable a la contraseña de la base de datos
DB_USERNAMEDB_USERNAME="foobar"
Establezca esta variable al nombre de usuario de la base de datos
DB_URLDB_URL=something-foo-bar.dbnet
Establezca esta variable a la URL de la base de datos
DB_PORTDB_PORT=3306
Establezca esta variable al puerto de la base de datos
DB_NAMEDB_NAME="foobar"
Establezca esta variable al nombre de conexión de la base de datos
DB_TYPEDB_TYPE="mysql"
La aplicación fue desarrollada utilizando una base de datos MySQL. Consulte la documentación de typeorm para más opciones de bases de datos.
NODE_ENVNODE_ENV=production
Establezca esta variable para determinar el entorno de Node
DEV_URL="http://localhost:4200"Usado por Angular para construir y servir la aplicación
SERVER_ADDRESS="http://localhost"Actualice si se requiere una dirección de servidor diferente
PORT=4500Actualice si se requiere un puerto de servidor diferente
JWT_KEYJWT_KEY="changeMe"
Establezca esta variable al secreto de JWT
JWT_REFRESH_KEYJWT_REFRESH_KEY="changeMe"
Establezca esta variable al secreto de actualización de JWT
CRYPTO_SECRETCRYPTO_SECRET="randomValue"
Establezca esta variable a la contraseña de Scrypt.
CRYPTO_SALTCRYPTO_SECRET="randomValue"
Establezca esta variable a la sal de Scrypt.
.env vacíoDB_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=""
Instale sqlite3:
brew install sqlite3
Exporte las variables de entorno relacionadas con el compilador:
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 para una instalación limpia:
rm -rf node_modules
npm cache verify
npm i --force
$ npm run migration:init
$ npm run migration:run
Se crea una cuenta de usuario al iniciar por primera vez con las siguientes credenciales:
[email protected]changeMeAl iniciar sesión por primera vez, actualice la contraseña del usuario predeterminado en la sección de perfil.
La aplicación utiliza el principio de mínimo privilegio con autorización basada en equipos. A los equipos se les asigna un rol que determina las funcionalidades disponibles para ese equipo específico. Un usuario hereda los roles de la membresía del equipo. Los administradores tienen acceso de gestión de equipos y deben asignar usuarios a equipos. Inicialmente, los usuarios se crean sin asociación a ningún equipo y no tendrán acceso a ninguna funcionalidad de la aplicación.
Los tres roles incluyen:
Un equipo solo puede estar asociado a una única organización. Sin embargo, un equipo puede estar asociado a múltiples activos dentro de la misma organización. Un usuario puede ser miembro de varios equipos. Si un usuario está asignado a varios equipos de la misma organización, el sistema elegirá el equipo con la autorización más alta.
Tenga en cuenta: El usuario predeterminado se asigna automáticamente al equipo Administrators al iniciar por primera vez
Un usuario puede generar una única clave API que se puede usar en lugar de su token de autorización. Esta clave API permite todas las acciones contra la aplicación para las que el usuario está autorizado.
Perfil de usuarioGenerar clave APIEsta acción generará un par de claves:
Bulwark-Api-Key
Bulwark-Secret-Key
Anote las claves generadas en un lugar seguro. No podrá recuperar las claves más adelante.
Los valores del par de claves API deben coincidir y agregarse a los siguientes encabezados de solicitud HTTP:
Bulwark-Api-KeyBulwark-Secret-KeyEjemplo:
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
Las solicitudes de extracción son bienvenidas. Para cambios importantes, abra primero un issue para discutir lo que le gustaría cambiar. Lea las guías de contribución para más información.
| Admin | Tester | Solo lectura | |
|---|---|---|---|
| Gestión de perfil de usuario | x | x | x |
| Gestión de equipos | x | ||
| Gestión de usuarios | x | ||
| Invitar usuario | x | ||
| Crear usuario | x | ||
| Gestión de configuración de correo | x | ||
| Integración con Jira | x | ||
| Organización: Lectura | x | x | x |
| Organización: Escritura completa | x | ||
| Activo: Lectura | x | x | x |
| Activo: Escritura completa | x | ||
| Evaluación: Lectura | x | x | x |
| Evaluación: Escritura completa | x | x | |
| Vulnerabilidad: Lectura | x | x | x |
| Vulnerabilidad: Escritura completa | x | x | |
| Exportar vulnerabilidad a Jira | x | x | |
| Generación de informes | x | x | x |