
Uma ferramenta de gerenciamento de ativos e vulnerabilidades organizacionais, com integração com Jira, projetada para gerar relatórios de segurança de aplicativos.
Uma ferramenta de gerenciamento de ativos organizacionais e vulnerabilidades, com integração com Jira, projetada para gerar relatórios de segurança de aplicações.
Por favor, lembre-se, este projeto está em desenvolvimento inicial.


.env e forneça as seguintes propriedades: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"
Construa e inicie os containers do Bulwark:
docker-compose up
Iniciar/Parar containers do Bulwark:
docker-compose start
docker-compose stop
Remover containers do Bulwark:
docker-compose down
O Bulwark estará disponível em localhost:4500
$ git clone (url)
$ cd bulwark
$ npm install
Executar npm install instalará ambos os módulos do lado do servidor e do cliente. Além disso, executará o script npm run config que definirá dinamicamente as variáveis de ambiente, além de atualizar o ambiente Angular.
Defina NODE_ENV="development"
$ npm run config
$ npm run start:dev
Defina NODE_ENV="production"
Observe: npm install fará a construção automaticamente em modo de produção
$ npm run config
$ npm run build:prod
$ npm start
Crie um arquivo .env no diretório raiz. Isso será interpretado com dotenv pela aplicação.
DB_PASSWORDDB_PASSWORD="somePassword"
Defina esta variável para a senha do banco de dados
DB_USERNAMEDB_USERNAME="foobar"
Defina esta variável para o nome de usuário do banco de dados
DB_URLDB_URL=something-foo-bar.dbnet
Defina esta variável para a URL do banco de dados
DB_PORTDB_PORT=3306
Defina esta variável para a porta do banco de dados
DB_NAMEDB_NAME="foobar"
Defina esta variável para o nome de conexão do banco de dados
DB_TYPEDB_TYPE="mysql"
A aplicação foi desenvolvida usando um banco de dados MySQL. Consulte a documentação do typeorm para mais opções de banco de dados.
NODE_ENVNODE_ENV=production
Defina esta variável para determinar o ambiente do Node
DEV_URL="http://localhost:4200"Usado pelo Angular para construir e servir a aplicação
SERVER_ADDRESS="http://localhost"Atualize se for necessário um endereço de servidor diferente
PORT=4500Atualize se for necessária uma porta de servidor diferente
JWT_KEYJWT_KEY="changeMe"
Defina esta variável para o segredo JWT
JWT_REFRESH_KEYJWT_REFRESH_KEY="changeMe"
Defina esta variável para o segredo de atualização JWT
CRYPTO_SECRETCRYPTO_SECRET="randomValue"
Defina esta variável para a senha Scrypt.
CRYPTO_SALTCRYPTO_SECRET="randomValue"
Defina esta variável para o salt Scrypt.
.env vazioDB_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 o sqlite3:
brew install sqlite3
Exporte variáveis de ambiente relacionadas ao 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 uma instalação limpa:
rm -rf node_modules
npm cache verify
npm i --force
$ npm run migration:init
$ npm run migration:run
Uma conta de usuário é criada na inicialização com as seguintes credenciais:
[email protected]changeMeApós o primeiro login, atualize a senha do usuário padrão na seção de perfil.
A aplicação utiliza acesso com privilégios mínimos com autorização baseada em equipes. As equipes recebem uma função que determina os recursos disponíveis para essa equipe específica. Um usuário herdará funções da associação à equipe. Os administradores têm acesso de gerenciamento de equipes e devem atribuir usuários às equipes. Inicialmente, os usuários são criados sem associação a nenhuma equipe e não terão acesso a nenhum recurso da aplicação.
As três funções incluem:
Uma equipe pode estar associada apenas a uma única organização. No entanto, uma equipe pode estar associada a vários ativos dentro da mesma organização. Um usuário pode ser membro de várias equipes. Se um usuário for atribuído a várias equipes da mesma organização, o sistema escolherá a equipe com maior autorização.
Observação: O usuário padrão é automaticamente atribuído à equipe Administrators na inicialização.
Um usuário pode gerar uma única chave de API que pode ser usada no lugar de seu token de autorização. Essa chave de API permite todas as ações contra a aplicação para as quais o usuário está autorizado.
User ProfileGenerate API KeyEsta ação gerará um par de chaves:
Bulwark-Api-Key
Bulwark-Secret-Key
Anote as chaves geradas em um local seguro. Você não poderá recuperar as chaves posteriormente.
Os valores do par de chaves de API devem ser combinados e adicionados aos seguintes cabeçalhos de requisição HTTP:
Bulwark-Api-KeyBulwark-Secret-KeyExemplo:
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 são bem-vindos. Para mudanças significativas, por favor, abra uma issue primeiro para discutir o que você gostaria de alterar. Leia as diretrizes de contribuição para mais informações.
| Administrador | Testador | Somente Leitura | |
|---|---|---|---|
| Gerenciamento de Perfil de Usuário | x | x | x |
| Gerenciamento de Equipe | x | ||
| Gerenciamento de Usuário | x | ||
| Convidar Usuário | x | ||
| Criar Usuário | x | ||
| Gerenciamento de Configurações de E-mail | x | ||
| Integração com Jira | x | ||
| Organização: Leitura | x | x | x |
| Organização: Escrita Completa | x | ||
| Ativo: Leitura | x | x | x |
| Ativo: Escrita Completa | x | ||
| Avaliação: Leitura | x | x | x |
| Avaliação: Escrita Completa | x | x | |
| Vulnerabilidade: Leitura | x | x | x |
| Vulnerabilidade: Escrita Completa | x | x | |
| Exportar Vulnerabilidade para o Jira | x | x | |
| Geração de Relatório | x | x | x |