This is a SpecterOps-managed feature. If it is not enabled in your environment, contact your account team for assistance.
- Bare-metal or virtual Linux server using Docker or Podman (e.g., Ubuntu, RHEL)
- Cloud-native container service such as AWS Fargate
- Self-managed Kubernetes cluster on-premises or in the cloud
- Managed Kubernetes service such as Amazon EKS, Google GKE, or Azure AKS
Deployment process
To deploy OpenHound and run a collector:1
Provision the environment
Provision a server with container (Docker/Podman) support, a Kubernetes cluster, or cloud-native container service to run OpenHound.
Ensure that the environment meets the system requirements.
2
Upload extension assets
Upload saved queries and Privilege Zone rules for each collector extension you want to run to your BloodHound Enterprise tenant.
3
Create an OpenHound collector client
Create an OpenHound collector client on your BloodHound Enterprise tenant to obtain the necessary API credentials for OpenHound to upload data.
4
Configure the OpenHound container
Configure the OpenHound runtime and collector-specific configuration parameters.
5
Deploy the OpenHound container
Use one of the supported methods to deploy the OpenHound container.
Enterprise configuration
OpenHound configuration defines how each collector container connects to BloodHound Enterprise, authenticates to the source system, and controls the collection pipeline. Each OpenHound container requires three groups of settings:- BloodHound Enterprise destination settings identify the tenant and collector client that receive the collected data.
- Collector source settings authenticate to the system being collected, such as Github, Jamf, or Okta.
- Runtime settings control operational behavior such as logging, retry handling, worker counts, and file handling.
config.toml and store credentials or tokens in secrets.toml, environment variables, or your container platform’s secret management system. This separation helps you reuse the same operational defaults across collectors while keeping each collector’s credentials isolated.
For the required BloodHound Enterprise destination parameters, file layout, environment variable names, and common runtime options, see Configuration.
Collector-specific configuration
Each collector requires additional configuration parameters that are unique to its data source. These settings can be defined in thesecrets.toml file or supplied via environment variables. For details on the available parameters, refer to the collector-specific configuration documentation using the links below.
Github
View the required configuration parameters for the Github collector.
Jamf
View the required configuration parameters for the Jamf collector.
Okta
View the required configuration parameters for the Okta collector.
Server/container requirements
Use these requirements to size the host, virtual machine, or container service that runs OpenHound. Actual resource usage depends on the collector, the size of the source environment, and the number of objects OpenHound processes during each collection run.The requirements vary depending on the size of the environment being collected/converted. Container storage persistence is not required. However, it is recommended to have a persistent storage for the logs for troubleshooting.OpenHound stores logs in the
~/.local/share/openhound/logs directory. You can configure log rotation by time or file size in the config.toml file.