Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Server Configuration

DARWIS TAXII server settings are configured via taxii.toml or environment variables.

Configuration File

The server searches for taxii.toml in this order:

  1. Path specified by DARWIS_TAXII_CONFIG env var
  2. ./taxii.toml (current directory)
  3. ./config/taxii.toml (config subdirectory)

Example Configuration

bind_address = "0.0.0.0"
port = 9000
domain = "localhost:9000"
support_basic_auth = true
return_server_error_details = false

[database]
url = "postgresql://user:password@localhost:5432/taxii"

[auth]
secret = "your-production-secret-change-this"
token_ttl_secs = 3600

[taxii1]
save_raw_inbox_messages = true
xml_parser_supports_huge_tree = true
count_blocks_in_poll_responses = false
unauthorized_status = "UNAUTHORIZED"

[taxii2]
title = "DARWIS TAXII"
description = "Threat Intelligence Exchange"
contact = "security@example.com"
max_content_length = 104857600
public_discovery = true
allow_custom_properties = true
default_pagination_limit = 1000
max_pagination_limit = 1000

Environment Variables

All settings can be overridden via environment variables with the DARWIS_TAXII_ prefix.

Important

Environment variables > TOML config > Defaults

Required Settings

VariableTOMLDescription
DARWIS_TAXII_DB_CONNECTIONdatabase.urlPostgreSQL connection string
DARWIS_TAXII_AUTH_SECRETauth.secretJWT signing secret

Server Settings

VariableTOMLDefaultDescription
DARWIS_TAXII_CONFIG-taxii.tomlConfig file path
DARWIS_TAXII_BIND_ADDRESSbind_address0.0.0.0Server bind address
DARWIS_TAXII_PORTport9000Server port
DARWIS_TAXII_DOMAINdomainlocalhost:9000Public domain for URLs
DARWIS_TAXII_SUPPORT_BASIC_AUTHsupport_basic_authtrueEnable HTTP Basic Auth
DARWIS_TAXII_RETURN_SERVER_ERROR_DETAILSreturn_server_error_detailsfalseShow error details

Auth Settings

VariableTOMLDefaultDescription
DARWIS_TAXII_AUTH_SECRETauth.secretRequiredJWT signing secret
DARWIS_TAXII_TOKEN_TTL_SECSauth.token_ttl_secs3600Token lifetime (seconds)

TAXII 1.x Settings

VariableTOMLDefaultDescription
DARWIS_TAXII_SAVE_RAW_INBOX_MESSAGEStaxii1.save_raw_inbox_messagestrueStore original XML
DARWIS_TAXII_XML_PARSER_SUPPORTS_HUGE_TREEtaxii1.xml_parser_supports_huge_treetrueAllow large XML
DARWIS_TAXII_COUNT_BLOCKS_IN_POLL_RESPONSEStaxii1.count_blocks_in_poll_responsesfalseInclude block count
DARWIS_TAXII_UNAUTHORIZED_STATUStaxii1.unauthorized_statusUNAUTHORIZEDAuth failure status

TAXII 2.x Settings

VariableTOMLDefaultDescription
DARWIS_TAXII_TITLEtaxii2.titleDARWIS TAXIIServer title
DARWIS_TAXII_DESCRIPTIONtaxii2.description-Server description
DARWIS_TAXII_CONTACTtaxii2.contact-Contact email
DARWIS_TAXII_PUBLIC_DISCOVERYtaxii2.public_discoverytrueUnauthenticated discovery
DARWIS_TAXII_MAX_CONTENT_LENGTHtaxii2.max_content_length2048Max request body (bytes)
DARWIS_TAXII_ALLOW_CUSTOM_PROPERTIEStaxii2.allow_custom_propertiestrueAllow custom STIX props
DARWIS_TAXII_DEFAULT_PAGINATION_LIMITtaxii2.default_pagination_limit1000Default page size
DARWIS_TAXII_MAX_PAGINATION_LIMITtaxii2.max_pagination_limit1000Maximum page size

Logging

VariableDefaultDescription
RUST_LOGinfoLog level: trace, debug, info, warn, error

Database Configuration

Connection String Format

postgresql://username:password@host:port/database

Connection Pool

The server maintains a connection pool to PostgreSQL. Pool size is automatically tuned based on available resources.

SSL/TLS

For SSL connections:

postgresql://user:pass@host:5432/db?sslmode=require

Production Recommendations

Security

  1. Change the auth secret:

    [auth]
    secret = "use-a-long-random-string-at-least-32-characters"
    
  2. Disable error details:

    return_server_error_details = false
    
  3. Use environment variables for secrets:

    export DARWIS_TAXII_AUTH_SECRET="your-secret"
    export DARWIS_TAXII_DB_CONNECTION="postgresql://..."
    

Performance

  1. Increase content length for large bundles:

    [taxii2]
    max_content_length = 104857600  # 100MB
    
  2. Tune pagination:

    [taxii2]
    default_pagination_limit = 100
    max_pagination_limit = 1000
    

Domain Configuration

Set the domain to match your public URL:

domain = "taxii.example.com"

This affects:

  • Service URLs in TAXII 1.x discovery
  • API root URLs in TAXII 2.x discovery

Docker Configuration

When using Docker, configure via environment variables:

# docker-compose.yml
services:
  taxii:
    image: darwis-taxii
    environment:
      - DARWIS_TAXII_DB_CONNECTION=postgresql://user:pass@db:5432/taxii
      - DARWIS_TAXII_AUTH_SECRET=your-secret-here
      - DARWIS_TAXII_DOMAIN=taxii.example.com
      - RUST_LOG=info
    ports:
      - "9000:9000"

Or mount a config file:

volumes:
  - ./taxii.toml:/app/config/taxii.toml