Install With Docker (Locally Managed)
Deployment of open-appsec via docker run is now considered deprecated. Please deploy with Docker Compose instead following these instructions: Deploy With Docker-Compose
Prerequisites
Linux machine with:
Docker installed (or similar, compatible container runtime)
Root permissions
The following prerequisites are optional and only relevant if you want to connect your open-appsec agent directly to a WebUI (SaaS) management tenant:
Access to a SaaS tenant on my.openappsec.io (WebUI for SaaS management) Follow the instructions available here:
Agent profile created for open-appsec Docker deployment in SaaS tenant Follow the instructions available here, make sure to choose the "Declarative configuration" management mode. Once done, don't forget to copy the profile token after policy installation as this is needed in the installation steps further below:
Installation
Follow these steps to deploy open-appsec and NGINX reverse proxy (including open-appsec attachment) with separate containers (e.g. on Docker) or implement this using your deployment CI pipeline: (This is the standard deployment, an alternative option to deploy with a single, unified container is available as well, see "NGINX - Unified" tab.)
Step 1: Pull the open-appsec agent image or add/use it as part of the deployment CI’s container management system:
docker pull ghcr.io/openappsec/agent:latestStep 2: Create a valid local_policy.yaml file which contains the desired declarative configuration for the agent container and put it in a local directory of your choice to be used in the docker run command for the agent as <path-to-persistent-location-for-local-configuration-file> (see also Step 4 for the docker run command).
You can also download and use the example default local_policy.yaml from the open-appsec GitHub repository.
Full details regarding the declarative local policy file structure are available here:
Configuration Using Local Policy File (Docker)Step 3: Create the following empty directories to be used later for volume mounts in the docker run command for the agent.
<path-to-persistent-location-for-agent-config>
<path-to-persistent-location-for-agent-data-files>
<path-to-persistent-location-for-agent-debugs-and-logs>Step 4: Run the open-appsec agent container with this command:
docker run --name=open-appsec-agent \
--ipc=host \
-v <path-to-persistent-location-for-agent-config>:/etc/cp/conf \
-v <path-to-persistent-location-for-agent-data-files>:/etc/cp/data \
-v <path-to-persistent-location-for-agent-debugs-and-logs>:/var/log/nano_agent \
-v <path-to-persistent-location-for-local-configuration-file>:/ext/appsec \
-e registered_server='NGINX' \
-e user_email=<add-your-email-here> \
-e https_proxy=<user:password@proxy-address:port> \
-e autoPolicyLoad=false \
-it -d ghcr.io/openappsec/agent:latest /cp-nano-agentStep 5: Create (or replace) the NGINX container by first pulling the open-appsec NGINX container, which already contains the open-appsec attachment. Alternatively, add/use it as part of the deployment CI’s container management system:
docker pull ghcr.io/openappsec/nginx-attachment:latestStep 6: Run the open-appsec NGINX container, make sure to add the --ipc=host parameter, here’s an example command:
docker run \
--name open-appsec-nginx \
--ipc=host \
-p 80:80 \
-d ghcr.io/openappsec/nginx-attachment:latestStep 7: Make sure both containers are running, use docker ps to verify.
If you've connected to SaaS Management Tenant in Step 4:
Step 8: Navigate to the Agents tab in the WebUI and ensure the new Agent is successfully connected.
Make sure to meet the prerequisites on top of this page and to have the profile token available. Make sure you enforce the policy after profile creation.
Follow these steps to deploy open-appsec combined with NGINX reverse proxy (including open-appsec attachment) with a single, unified container (e.g. on Docker) or implement this using your deployment CI pipeline:
Step 1: Pull the open-appsec agent unified with the NGINX image or add/use it as part of the deployment CI’s container management system:
docker pull ghcr.io/openappsec/agent-unified:latestStep 2: Create a valid local_policy.yaml file which contains the desired declarative configuration for the agent container and put it in a local directory of your choice to be used in the docker run command for the agent as <path-to-persistent-location-for-local-configuration-file> (see also Step 4 for the docker run command).
You can also download and use the example default local_policy.yaml from the open-appsec GitHub repository.
Full details regarding the declarative local policy file structure are available here:
Configuration Using Local Policy File (Docker)Step 3: Create the following empty directories to be used later for volume mounts in the docker run command for the agent.
<path-to-persistent-location-for-agent-config>
<path-to-persistent-location-for-agent-data-files>
<path-to-persistent-location-for-agent-debugs-and-logs>Step 4: Run the open-appsec agent container with this command:
docker run -d \
--name open-appsec-agent-unified \
--restart unless-stopped \
-p 80:80 \
-p 443:443 \
-v <path-to-persistent-location-for-agent-config>:/etc/cp/conf \
-v <path-to-persistent-location-for-agent-data-files>:/etc/cp/data \
-v <path-to-persistent-location-for-agent-debugs-and-logs>:/var/log/nano_agent \
-v <path-to-persistent-location-for-local-configuration-file>:/ext/appsec \
-e user_email=<your-email-address> \
-e https_proxy=<user:password@proxy address:port> \
ghcr.io/openappsec/agent-unified:latest /cp-nano-agentStep 5: Make sure both containers are running, use docker ps to verify.
If you've connected to SaaS Management Tenant in Step 4:
Step 6: Navigate to the Agents tab in the WebUI and ensure the new Agent is successfully connected.
For Kong as alternative to the traditional open-appsec attachment plugin, also a newer, more flexible Lua-based plugin is available, deployment instructions are available here: Deploy With Docker-Compose
Follow these steps to install Kong with open-appsec using containers (e.g. on Docker) or using your deployment CI:
Step 1: Pull the open-appsec agent image or add/use it as part of the deployment CI’s container management system:
docker pull ghcr.io/openappsec/agent:latestStep 2: Create a valid local-policy.yaml file which contains the desired declarative configuration for the agent container (see also Step 3) and put it in a local directory to be used in the docker run command for the agent as <path-to-persistent-location-for-local-configuration-file> .
You can also download and use the example local_policy.yaml file from the open-appsec GitHub repository.
Full details regarding the declarative local policy file structure are available here:
Configuration Using Local Policy File (Docker)Step 3: The volume mounts set in the next step with-v are optional but recommended for the persistence of the agent information (data, config, logs).
If you want to use those parameters create the following empty directories to be used later for volume mounts in the docker run command for the agent.
<path-to-persistent-location-for-agent-config>
<path-to-persistent-location-for-agent-data-files>
<path-to-persistent-location-for-agent-debugs-and-logs>Step 4: Run the open-appsec agent container with this command
docker run --name=open-appsec-agent \
--ipc=host \
-v <path-to-persistent-location-for-agent-config>:/etc/cp/conf \
-v <path-to-persistent-location-for-agent-data-files>:/etc/cp/data \
-v <path-to-persistent-location-for-agent-debugs-and-logs>:/var/log/nano_agent \
-v <path-to-persistent-location-for-local-configuration-file>:/ext/appsec \
-e registered_server='Kong' \
-e user_email=<add-your-email-here> \
-e autoPolicyLoad=false \
-e https_proxy=<user:password@proxy-address:port> \
-it -d ghcr.io/openappsec/agent:latest /cp-nano-agentStep 5: Create (or replace) the Kong container by pulling the enhanced open-appsec Kong container, which already contains the open-appsec attachment. Alternatively, add/use it as part of the deployment CI’s container management system:
For Kong (open-source version):
docker pull ghcr.io/openappsec/kong-attachment:latestFor Kong Gateway (enterprise version):
docker pull ghcr.io/openappsec/kong-gateway-attachment:latestStep 6: Run the open-appsec Kong container, make sure to add the --ipc=host parameter, here’s an example command:
For Kong (open-source version):
docker run \
--name kong \
--ipc=host \
-e KONG_DATABASE=off \
-p 8000:8000 -p 8443:8443 -p 127.0.0.1:8001:8001 -p 127.0.0.1:8444:8444 \
-d ghcr.io/openappsec/kong-attachment:latestFor Kong Gateway (enterprise version):
docker run \
--name kong-gateway \
--ipc=host \
-e KONG_DATABASE=off \
-p 8000:8000 -p 8443:8443 -p 127.0.0.1:8001:8001 -p 127.0.0.1:8444:8444 \
-d ghcr.io/openappsec/kong-gateway-attachment:latest
Step 7: Make sure both containers are running, use docker ps to verify.
If you've connected to SaaS Management Tenant in Step 4:
Step 8: Navigate to the Agents tab in the WebUI and ensure the new Agent is successfully connected. don't forget to enforce the policy afterward. More details here:
Protect Additional AssetsA new, enhanced version of the docker compose for APISIX is available here: Deploy With Docker-Compose (Currently in Early Availability)
Follow these steps to install APISIX with open-appsec using containers (e.g. on Docker) or using your deployment CI:
Step 1: Create a folder to hold the appsec declarative configuration file, and download the example configuration file:
mkdir ./appsec-localconfigStep 2: Create a valid local_policy.yaml file which contains the desired declarative configuration for the agent container and add to the folder:
wget https://raw.githubusercontent.com/openappsec/openappsec/main/examples/local_policy.yaml -O appsec-localconfig/local_policy.yamlFull details regarding the declarative local policy file structure are available here:
Configuration Using Local Policy File (Docker)Step 3: Download the docker-compose file, see content bellow:
wget https://raw.githubusercontent.com/openappsec/openappsec/main/deployment/apisix/docker-compose.yamlversion: "3"
services:
apisix:
container_name: apisix
image: "ghcr.io/openappsec/apisix-attachment:latest"
ipc: host
restart: always
volumes:
- .<apisix-conf-path>:/usr/local/apisix/conf/apisix.yaml:ro
environment:
- APISIX_STAND_ALONE=true
ports:
- "9180:9180/tcp"
- "9080:9080/tcp"
- "9091:9091/tcp"
- "9443:9443/tcp"
appsec-agent:
container_name: appsec-agent
image: 'ghcr.io/openappsec/agent:latest'
ipc: host
restart: unless-stopped
environment:
# adjust with your own email below
- [email protected]
- registered_server="APISIX"
volumes:
- ./appsec-config:/etc/cp/conf
- ./appsec-data:/etc/cp/data
- ./appsec-logs:/var/log/nano_agent
- ./appsec-localconfig:/ext/appsec
command: /cp-nano-agent Step 4: Replace <apisix-conf-path> with the path for declarative configuration file for APISIX, an example file can be found here, for general APISIX configuration details please check the APISIX Documentation.
Step 5: Run the Docker Compose
docker-compose up -dStep 6: Make sure both containers are running, use docker ps to verify.
If you've added a Token Step 4:
Step 7: Navigate to the Agents tab and ensure the new Agent is successfully connected.
For Envoy deployment on Docker please follow the docs for docker-compose-based installation provided here:
Now your open-appsec installation on Docker is completed and your configured web app or API assets are protected!
Last updated
Was this helpful?