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

TAXII 1.x Setup & Configuration

TAXII 1.x is configured via YAML and applied using the CLI.

Configuration File

Create a configuration file (e.g., full.yaml) with your services, collections, and accounts. See examples/data-config/full.yaml for a complete example:

# TAXII 1.x Services
services:
  - id: discovery
    type: DISCOVERY
    properties:
      path: /services/discovery
      description: Discovery service

  - id: inbox
    type: INBOX
    properties:
      path: /services/inbox
      description: Inbox service
      destination_collections:
        - my-collection

  - id: poll
    type: POLL
    properties:
      path: /services/poll
      description: Poll service

  - id: collection-mgmt
    type: COLLECTION_MANAGEMENT
    properties:
      path: /services/collection-management
      description: Collection management

# TAXII 1.x Collections
collections:
  - name: my-collection
    description: Threat intelligence feed
    type: DATA_FEED
    available: true
    accept_all_content: true
    service_ids:
      - inbox
      - poll
      - collection-mgmt
    supported_content:
      - binding: urn:stix.mitre.org:xml:1.1.1
      - binding: urn:stix.mitre.org:xml:1.2

# User accounts
accounts:
  - username: admin
    password: changeme
    is_admin: true

  - username: analyst
    password: secret
    permissions:
      my-collection: modify  # read + write

Apply Configuration

Sync the configuration to the database:

# From the project directory
taxii-cli sync data-config.yaml

# Or with explicit database connection
DATABASE_URL="postgresql://user:pass@localhost/taxii" taxii-cli sync data-config.yaml

Output:

Services synchronized: 4 created, 0 updated, 0 deleted
Collections synchronized: 1 created, 0 updated, 0 disabled
Accounts synchronized: 2 created, 0 updated
Configuration synchronized successfully

Configuration Options

Service Properties

PropertyDescriptionRequired
idUnique service identifierYes
typeService type (see below)Yes
properties.pathURL endpoint pathYes
properties.descriptionHuman-readable descriptionNo

Service Types

TypeDescription
DISCOVERYLists available services
INBOXReceives content (push)
POLLProvides content (pull)
COLLECTION_MANAGEMENTLists collections

Inbox-Specific Properties

- id: inbox
  type: INBOX
  properties:
    path: /services/inbox
    destination_collections:  # Which collections receive content
      - collection-a
      - collection-b

Poll-Specific Properties

- id: poll
  type: POLL
  properties:
    path: /services/poll
    max_result_count: 100     # Max results per response

Collection Properties

PropertyDescriptionDefault
nameCollection identifier (unique)Required
descriptionHuman-readable descriptionNone
typeDATA_FEED or DATA_SETDATA_FEED
availableIs collection active?true
accept_all_contentAccept any content type?true
service_idsLinked services[]
supported_contentAllowed content bindingsAll

Update Configuration

To update an existing configuration:

  1. Edit data-config.yaml
  2. Run taxii-cli sync data-config.yaml again

The sync command creates and updates entities. To control what happens to entities not in your config file, use YAML-level options:

Cleanup Options

# At the top of your YAML file
prune_services: false            # Delete services not in config
collections_not_in_config: ignore # ignore | disable | delete
prune_accounts: false            # Delete accounts not in config

services:
  # ...
collections:
  # ...
accounts:
  # ...
OptionValuesDefaultDescription
prune_servicestrue/falsefalseDelete services not in config
collections_not_in_configignore/disable/deleteignoreAction for collections not in config
prune_accountstrue/falsefalseDelete accounts not in config

Collection Actions

Collections support three cleanup actions:

ValueBehavior
ignoreLeave untouched (default)
disableSet available=false
deletePermanently delete

Caution

collections_not_in_config: delete permanently deletes collections and their content.

Verify Configuration

Check services are configured:

# Query discovery service
curl -X POST http://localhost:9000/services/discovery \
  -H "Content-Type: application/xml" \
  -d '<?xml version="1.0" encoding="UTF-8"?>
<Discovery_Request xmlns="http://taxii.mitre.org/messages/taxii_xml_binding-1.1"
                   message_id="1"/>'

Next Steps