This repository contains Docker Compose templates and helper files to assist with the initialization of the ATT&CK Workbench.
-
Clone this repository:
git clone https://github.com/your-repo/attack-workbench-deployment.git cd attack-workbench-deployment
-
Create the required configuration files:
configs/rest-api/.env
: Define environment variables for the REST API service.configs/taxii/config/.env
: Define environment variables for the TAXII server service (if included).
Configuration templates are provided for the REST API and TAXII 2.1 servers:
cp configs/rest-api/template.env configs/rest-api/.env cp configs/taxii/config/template.env configs/taxii/config/.env
-
Start the Docker Compose services:
- To include the TAXII server, run:
docker-compose --profile with-taxii up -d
- To exclude the TAXII server, run:
docker-compose up -d
- To include the TAXII server, run:
The REST API service is configured using environment variables defined in the configs/rest-api/.env
file. Here's an example:
# configs/rest-api/.env
DATABASE_URL=mongodb://attack-workbench-database/attack-workspace
AUTHN_MECHANISM=anonymous
Additionally, an optional JSON configuration file can be used by setting the JSON_CONFIG_PATH
environment variable to point to configs/rest-api/rest-api-service-config.json
.
The ATT&CK Workbench TAXII 2.1 API is an optional extension of the ATT&CK Workbench. It is defined in the taxii
service of the included Docker Compose template.
The TAXII server requires at least one .env
configuration file at runtime. This file will be volume-mounted to the container. On the Docker host, place the .env
file in configs/taxii/config/
.
The TAXII_ENV
environment variable determines the name of the .env
file that the TAXII application will load. For example:
TAXII_ENV=dev
will loadconfigs/taxii/config/dev.env
TAXII_ENV=prod
will loadconfigs/taxii/config/prod.env
- If
TAXII_ENV
is not set, it will loadconfigs/taxii/config/.env
A .env
template is included to help you get started.
Additionally, if the TAXII server is configured to use HTTPS, you'll need to provide the following files:
configs/taxii/config/private-key.pem
configs/taxii/config/public-certificate.pem
Alternatively, you can base64 encode the pem
files and set them via TAXII_SSL_PRIVATE_KEY
and TAXII_SSL_PUBLIC_KEY
in your .env
file.
This repository includes a Docker Compose profile to optionally include or exclude the TAXII server service.
-
To include the TAXII server, use the
with-taxii
profile:docker-compose --profile with-taxii up -d
-
To exclude the TAXII server, run Docker Compose without any profile:
docker-compose up -d
The with-taxii
profile is defined in the docker-compose.yml
file and includes the taxii
service.