OpenCTI security hardening

A threat intelligence platform holds sensitive reporting, credentials and connector access, so hardening starts before the first analyst logs in. This page covers the decisions, build sequence, effort and checks for a hardened OpenCTI deployment.

On this page

Why OpenCTI security hardening is more than turning on HTTPS

Turning on HTTPS protects traffic between browsers and the platform, but it leaves most of an OpenCTI deployment unaddressed. Hardening covers the web application and GraphQL API, the Python workers and connectors that write data on its behalf, the dependencies underneath them (Elasticsearch or OpenSearch, Redis, RabbitMQ and S3-compatible object storage such as MinIO), and the access controls that decide who can read which intelligence. For a team holding sensitive intelligence, connector credentials and API tokens, the practical question is which controls must be in place before analysts use the platform operationally. The answer depends on decisions made in every one of these layers.

Many components hold privileged access, which is why this is harder than it looks. A connector is configured with credentials that can create and update entities, and workers consume RabbitMQ messages and write to the data stores. Anyone who can publish to a queue or reach the search backend may be able to alter intelligence without going through the UI. Redis, RabbitMQ and object storage each carry their own credentials and network exposure, and the way API tokens are issued and scoped determines how much damage a leaked token can do. Start by inventorying every service account, token and network path, then decide which of them can reach the database, queue and storage directly. Confirm each authentication option against the versions and configuration you actually run.

The edition you run changes what you can enforce. OpenCTI Community Edition is licensed under the Apache License 2.0, and many self-hosted deployments are built on it. Several controls that matter for this work are Enterprise Edition features under Filigran's proprietary license: activity monitoring and audit logs, organization-based data segregation, and, since OpenCTI 7.260224.0, authentication strategies including SSO. If your policy requires evidence of who viewed or changed sensitive intelligence, or requires separating data between organizations, confirm early whether the Community Edition can meet that requirement. Make this decision before designing the rest of the controls, because it determines which compensating controls you must build and operate yourself.

Marking-based access is where many hardening efforts stall. OpenCTI's STIX2-based data model uses markings and groups to determine what each user can see, so access control is only as sound as the modeling behind it. Decide your marking definitions, how groups map to need-to-know, and which default markings apply when connectors import data. A connector that imports without a marking can expose intelligence more widely than intended. Test this with sample users in each group, and check results through the UI, the GraphQL API and any export or stream connectors, since each path must enforce the same rules. Schedule a review whenever the marking scheme or the connector set changes.

Which OpenCTI components hold attack surface

An OpenCTI deployment is a set of cooperating services, and each one stores intelligence, accepts input or exposes an interface. The cards below list each component that needs a hardening decision, what it holds or can do, why it is exposed, and which part of this page covers it. Read them together, because a weakness in one dependency can expose data held by another.

Platform UI and GraphQL API

The platform is the only component analysts and integrations reach directly. It serves the web application and the GraphQL API that read and write the knowledge base, so it is the main entry point for both people and tokens. Check which authentication strategies are enabled, how sessions and API tokens are issued and revoked, and which roles can query or modify sensitive entities. Covered in API token handling and marking-based access.

Python workers consuming RabbitMQ

Workers pull messages from RabbitMQ and perform the asynchronous writes that the platform queues, so they hold credentials for the core data stores. A worker that accepts a malformed or hostile message acts with the same storage access as the rest of the platform. Confirm that workers run under least-privilege service identities and that their network paths allow only the services they need. Covered in network isolation of dependencies.

Import and enrichment connectors

Import connectors bring in external feeds and files, and enrichment connectors send observables to outside services and write results back. Each connector holds an API token for its source and writes data under an identity that determines what it can create or change. Review which connectors are enabled, what each token can access, and whether outbound destinations are limited. Covered in connector permissions and API token handling.

File extraction and export connectors

File extraction connectors parse uploaded documents, so they process content from sources that may be untrusted. Export and stream consumption connectors send intelligence out of the platform to other tools, which can move marked or sensitive data beyond its intended audience. For each, check the identity it runs under, the marking levels it can read and the destinations it can reach. Covered in connector permissions and marking-based access.

Elasticsearch or OpenSearch index

The search index holds a searchable copy of the intelligence graph, so reads from it can reveal data the UI would filter out if access control is misconfigured. The documented minimum is Elasticsearch 8.0 or OpenSearch 2.9 or later. Confirm that the cluster has authentication and TLS enabled, that it is reachable only from platform and worker subnets, and that its snapshots are protected. Covered in network isolation of dependencies and TLS.

Redis, RabbitMQ and object storage

Redis caches session and working data, RabbitMQ carries the message queue between the platform and workers, and S3-compatible storage such as MinIO holds uploaded files and exports. Each one can expose queued or stored content if it is open to the network or uses default credentials. The documented minimums are Redis 7.1 or later and RabbitMQ 3.11 or later. Confirm authentication, TLS on each connection, and bucket or queue permissions scoped to a single purpose. Covered in network isolation of dependencies and TLS.

Decisions to make before hardening OpenCTI

This table compares the main hardening decisions, the options for each, when each option fits and what it costs to operate. Read each row as a choice to settle with your security and platform owners before configuration begins. The biggest takeaway is that several controls, including SSO and organization-based segregation, depend on the Enterprise Edition, so the edition decision should be made first.

DecisionOption and when it fitsOperational cost and trade-off
AuthenticationLocal users for a small, closed team. LDAP where directory accounts already govern access. SSO (SAML or OpenID Connect) or client certificates where central identity and MFA are required.Local users need manual account lifecycle work. SSO requires Enterprise Edition since 7.260224.0, so confirm licensing and identity provider configuration early.
Audit loggingCommunity Edition for teams that accept limited built-in activity visibility and export logs from the platform and proxy. Enterprise Edition where activity monitoring and audit logs must be reviewed inside the platform.Community logging needs a log pipeline, retention and review process owned by your team. Enterprise adds a license cost but reduces custom work. Confirm which events each edition records against your assessor's expectations.
Data separationMarkings only where one trust group can see all intelligence and access is controlled by marking levels. Enterprise organization-based segregation where different partners, business units or tenants must be isolated.Markings need a governed marking scheme and periodic access review. Organization-based segregation requires Enterprise Edition and upfront access design, which is harder to change after data is loaded.
Connector credential modelOne shared API token for all connectors is the simplest setup and suits a small, single-owner deployment. Scoped credentials per connector suit deployments where each feed or service must be revoked or audited on its own.A shared token means one leak exposes every connector and rotation affects all of them at once. Per-connector credentials add token inventory, rotation schedules and more configuration to maintain.
Dependency exposurePrivate network only for Elasticsearch or OpenSearch, Redis, RabbitMQ and object storage, reachable only by platform nodes and workers. Broader reachability only where a documented external component needs a path, with explicit allow rules.Private-only placement requires network segmentation and routing for workers and connectors across zones. Any reachable endpoint widens the attack surface and makes credential exposure more likely to matter.
TLS terminationTermination at a reverse proxy suits deployments where the proxy already manages certificates and inspection, with traffic inside a trusted segment. End-to-end TLS to the platform suits environments that require encryption across every internal hop.Proxy termination needs a documented trust boundary and protected internal traffic. End-to-end TLS adds certificate issuance, rotation and trust configuration on each service, which increases ongoing operational effort.

How to sequence an OpenCTI hardening build

This sequence builds OpenCTI's controls in dependency order, so each layer is verified before the next one depends on it. The closing check on each step produces an observable result that your team or a partner can record as evidence before loading sensitive intelligence.

  1. Isolate the dependencies on a private network

    Place Elasticsearch or OpenSearch, Redis, RabbitMQ and S3-compatible storage on a private network segment. Only the platform nodes, workers and connectors that need them should reach those ports. Platform or cloud engineers in the client's own accounts or data center do this work before any application is installed. The step is done when a test host outside the segment cannot open a connection to any dependency port, and the platform still reaches every dependency it needs.

  2. Terminate TLS and verify client validation

    Terminate TLS at a reverse proxy or load balancer in front of the platform, using a certificate issued by your internal or public certificate authority. Confirm that the full certificate chain is served and that the hostname matches. Where a dependency supports encrypted connections, enable them and check the product documentation for your version. The step closes when a client that does not trust the issuing authority is refused, an expired or mismatched certificate is rejected, and a plain HTTP request to the platform is refused or redirected rather than served.

  3. Set the authentication strategy and close local paths

    Choose the authentication strategies your organization will use, such as local accounts, LDAP, SAML, OpenID Connect, client certificates or proxy headers. Since OpenCTI 7.260224.0, defining and using authentication strategies, including SSO, is an Enterprise Edition feature, so confirm licensing before you design around SSO. Disable every strategy you do not use, remove default or shared local accounts, and restrict the administrator account. The step is complete when an unauthenticated GraphQL request returns an authorization error and a login attempt through a disabled strategy fails.

  4. Define groups, roles and markings before loading data

    Create the groups, roles and marking definitions that match your access design, and assign capabilities to each role before any intelligence is imported. Plan the markings for sensitive sources with your data owners, since changing them later affects existing records. Organization-based data segregation is an Enterprise Edition feature, so confirm whether your access model needs it. Test with an illustrative dataset and two test users. The step closes when a user outside a restricted group cannot see a record carrying that marking, and a user inside the group can.

  5. Issue scoped connector and API credentials

    Create one API token or service identity per connector or integration, grant only the capabilities that connector needs, and record an owner and rotation process for each. Avoid sharing a single administrator token across connectors. Confirm the platform's token and capability behavior for your version, since the connector catalog changes often. The step is verified when a token can complete its own import, a write outside its granted scope is rejected, and a revoked token stops working on its next request.

  6. Enable audit logging or document the alternative

    Activity monitoring and audit logs are part of OpenCTI Enterprise Edition. If you run the Community Edition, document the compensating controls instead, such as reverse proxy access logs, container and host logs, and database logs, and confirm with Filigran which platform events are recorded in your version. Send logs to a destination your security team reviews. The step closes when a test login, a test write and a test token use each appear in the log destination with a timestamp and an identifiable actor.

  7. Restrict worker and connector egress

    Workers and connectors call external feeds, enrichment services and export targets. Allow outbound traffic only to the destinations on an approved list, through an egress proxy or firewall rules, and deny everything else. Document each destination with its owner and the connector that uses it. The step is verified when a connector configured to reach a host outside the list fails and the block is logged, while a connector pointed at an approved source still imports data.

  8. Run a restore and review pass

    Restore the backups of the data stores into an isolated environment, start the platform there, and run the checks from the earlier steps again. Confirm that login strategies, marking enforcement, token scopes, egress blocks and audit events all behave as they did in production. Record how long the restore took and who performed it, and file the results with the design record. The step closes when the restored instance reproduces the controls from steps one through seven, and the review is signed off by the platform owner and security lead.

How marking-based access keeps sensitive intelligence contained

In OpenCTI, access is decided by the markings on each object and the groups that each user, API token and connector belongs to. Markings are STIX marking definitions attached to entities, relationships and observables, most often TLP levels or custom statements your team defines. A group carries the markings it may read and the capabilities it may exercise, so an identity can see an object only when its group covers every marking on that object. Tokens and connectors authenticate as identities too, so their group membership decides what they can read and write. Before relying on this model, confirm in your version's administration documentation how group-to-marking rules are configured and whether a group can be limited to read-only access.

A marking applied at ingestion is only as good as the rules that enforce it. Three failure modes appear repeatedly. The first is the unmarked import: an object that arrives without a marking can fall back to a default visibility broader than the team intended, so test imports with no marking and check which groups can see the result. The second is the over-privileged connector: a connector token placed in a broad administrative group can create, edit or delete data well beyond its feed. Give each connector its own group with only the capabilities it needs. The third is inconsistent marking. One feed may set a TLP level on every indicator while another leaves the field blank, and enrichment connectors may propagate or drop markings differently. Write a marking standard for each connector and check a sample from every feed against it.

Organization-based data segregation, an Enterprise Edition feature according to Filigran's Enterprise Edition documentation, changes the picture because it adds ownership by organization on top of markings. That matters when several teams or partner organizations share one instance and must not see each other's material by default. It also means your access design has two layers that must agree, and a permissive rule in one layer can be undermined by an incomplete rule in the other. Confirm exactly how your edition evaluates markings, organization ownership and group capabilities together, including how objects with no organization are treated and whether sharing settings override segregation. Do not assume the Community Edition enforces these rules the same way.

Verify the model before sensitive data arrives. Create a test account for each group and a test token for each connector, then load sample objects at every marking level, with and without markings. Record what each identity can read, create, edit and delete, and repeat the check after every upgrade, since permission behavior can change between releases. Ask the people accountable for intelligence handling to approve the marking standard in writing, because a configuration that passes a technical test can still disagree with how your organization classifies its sources. Keep the test results as evidence for your access review.

What drives OpenCTI hardening effort and how to keep it down

This table lists the factors that expand OpenCTI hardening work, the direction each one pushes effort, and the containment step that keeps it bounded. Read each row as a decision point: most drivers are set early in the design, so fixing them before build is the cheapest way to control scope. The main takeaway is that connector count, marking design and environment count compound, so standardize them first.

DriverWhy it changes effortHow to keep it down
Number of connectors and feedsEach connector needs its own service identity, API token, outbound network rule and permission scope to review. Effort grows with every feed added, and inconsistent setups multiply review time.Standardize one credential template and one permission profile per connector type. Start with a short list of feeds and add others only after the first set passes verification.
Number of groups and markings to modelMarking definitions and group assignments control who sees sensitive intelligence. Ad hoc markings across many groups make access reviews slow and error-prone.Agree a marking taxonomy and a small set of groups before loading data. Reuse that taxonomy across teams and document who approves each new marking.
Number of environments (test, production, air-gapped copy)Every environment needs its own secrets, TLS certificates, network rules and configuration baseline. Drift between copies is a common source of rework.Harden one reference environment first, then build the others from the same infrastructure code and configuration. Treat any air-gapped copy as a separate build that receives signed, reviewed updates.
SSO and Enterprise Edition features in scopeSince OpenCTI 7.260224.0, authentication strategies including SSO are an Enterprise Edition feature. Audit logs, organization-based segregation and authorized members also add configuration and testing. Confirm licensing with Filigran before design.Decide early which Enterprise features are required and which can wait. Map identity groups to OpenCTI roles in a single reviewed table, and test login failure, session expiry and group removal together.
Compliance evidence needsAssessors usually ask for configuration baselines, access reviews, audit log samples and change records. Collecting these after the fact requires reconstruction work.Define the evidence list at the start, name the owner for each item, and generate it on a schedule from the reference environment. DeployOpen prepares evidence; independent auditors assess it.
Number of dependency nodes to isolateElasticsearch or OpenSearch, Redis, RabbitMQ and S3-compatible storage each hold intelligence data or credentials. Each node needs authentication, network restriction and its own TLS configuration.Place all dependencies on a private network segment reachable only from platform and worker nodes. Apply one authentication and TLS pattern to every dependency and record the allowed flows in a single matrix.
Worker and platform node countThe documented guidance recommends at least one platform node for every 3 workers. More nodes add certificates, load balancer settings and network paths to harden.Use a fixed node template and scale by adding identical nodes. Keep the number of externally reachable endpoints to the platform front end only.
Token and secret handling across servicesAPI tokens for users, connectors and workers multiply with each integration. Long-lived tokens without owners are hard to rotate and audit.Assign every token a named owner, expiry and purpose. Store secrets in one approved vault pattern and rotate them through a documented procedure tested in the reference environment.

Hardening controls for API tokens, connectors and audit trails

These controls decide who and what can reach OpenCTI data, how far a compromised credential or connector can act, and whether you can reconstruct what happened afterward. Each card names the control, the exposure it reduces and the check your team can run to confirm it is working in your environment.

API token handling

Issue a separate API token for each named user and each service, so a leaked token can be traced and revoked without disrupting others. Scope tokens to the access they need, store them in a secrets manager rather than in connector configuration files, and rotate them on a schedule. Revoke tokens immediately when a person leaves the team or a service is retired. To verify, list active tokens and match each one to an owner and a purpose.

Connector permissions

Each connector writes to the platform using its own token, so review what that token can create, update and delete before enabling it. Import connectors that only ingest feeds rarely need delete rights, while enrichment connectors often need no write access beyond their own results. Keep one token per connector so a misbehaving feed can be disabled without affecting the rest. To verify, test each connector in a non-production instance and confirm its writes match its documented purpose.

Network isolation of dependencies

Elasticsearch or OpenSearch, Redis, RabbitMQ and S3-compatible object storage hold the platform's data and message queues, so they should accept connections only from the platform nodes and workers. Place them on a private network segment with no direct route from user workstations or the internet. Analysts and connectors should reach them only through the platform's own interfaces. To verify, scan each dependency port from outside its permitted hosts and confirm the connection is refused.

TLS for client and internal traffic

Encrypt traffic between browsers, API clients and the platform, and between the platform, workers and each dependency. Internal links are often left in plain text because they sit inside a private network, which leaves credentials and intelligence readable to anyone who gains access to that network. Certificate lifecycle also needs an owner: track expiry dates, automate renewal where possible, and test rotation before it is due. To verify, inspect each connection's certificate chain and confirm that plain-text listeners are disabled.

Audit logging and retention

Capture authentication events, token creation and revocation, configuration changes, and bulk data exports or deletions, since these show how sensitive intelligence was accessed or altered. Forward logs to a central store that platform administrators cannot silently edit, and set a retention period that matches your investigation and policy needs. OpenCTI Enterprise Edition includes activity monitoring and audit logs, which you should evaluate against your required events. To verify, perform a test change and confirm it appears in the central store with the acting user.

Marking-based access control

Markings label intelligence by sensitivity, such as handling restrictions or distribution limits, and access rules decide which users and groups can see each marking. Define the marking scheme with your intelligence and legal stakeholders before loading data, because retrofitting labels across existing objects is costly. Test that a user without a marking cannot see the object through search, relationships or exports. To verify, create a restricted test object and confirm access from a non-privileged account is denied at each access path.

How to test that OpenCTI hardening holds and fails safely

The purpose of this section is to turn each hardening control into a test with a stated expected result, run against the deployed environment and recorded as evidence. Start with access. Send unauthenticated requests to the web application and the GraphQL API and confirm both refuse them. Sign in with an account outside the group that owns a restricted dataset and confirm that object does not appear in search, entity views or API responses. Create an API token for a test user, revoke it in the platform, and confirm the next request made with that token fails. Keep the request, the response and the timestamp for each case.

Connector tokens need their own tests because connectors often run unattended for long periods. For each connector token, attempt actions outside the role it was issued for, such as creating or deleting entity types or writing to a group it should not reach. Each attempt should be refused. Next, test the network boundary. From a host outside the private network, attempt to open connections to Elasticsearch or OpenSearch, Redis, RabbitMQ, the S3-compatible object store and any management interface of each. The expected result is no route, or a refused connection. Only the platform's own ingress should be reachable from users' networks, and you should confirm that against your firewall rules rather than assume it.

Next, check transport and access rules. Validate the platform's TLS certificate chain and hostname from a client that does not trust any private shortcuts, then attempt connections using older protocol versions and weak cipher suites. Each downgrade attempt should fail. For marking-based access, create test intelligence carrying a restricted marking, owned by a group, and confirm that users outside that group cannot see it through the UI, search, graph views, exports or the API. Finally, perform administrative actions, token creation and revocation, and a sign-in failure. Confirm each appears in the audit log with the actor and time. Audit logs and organization-based segregation are Enterprise Edition features, so confirm your licence covers them before you plan these tests.

The fail-safe check matters as much as the happy path. Simulate the identity provider being unreachable, an expired or missing platform certificate, and an unavailable secrets store, one at a time, during a controlled window. In each case the expected result is that sign-in is refused and the platform does not serve content through a weaker route. Review the configuration for fallbacks you may have enabled without noticing, such as local users, proxy header authentication or client certificate settings alongside SSO. Confirm with your version's documentation how the platform behaves when a strategy fails, and record what you observe.

After these checks, commission an independent penetration test or security assessment of the deployed environment. Ask the tester to cover authentication bypass, authorization between groups, marking leakage, connector token scope, exposed dependencies and TLS configuration, and agree the scope and rules of engagement in writing before testing begins. Internal checks show that your controls behave as designed, while an independent tester looks for the paths you did not think to test. Retest every finding after remediation, and keep the report with your change records. DeployOpen performs application, infrastructure and API security testing, but the assessor should be separate from the team that configured the platform.

How hardening changes across deployment models

On a single host or a small self-hosted set of machines, most application-level hardening stays the same, but the network boundary is thinner. The platform, workers, Elasticsearch or OpenSearch, Redis, RabbitMQ and object storage still run as separate services, so each needs explicit access rules even when they share a host.

  • Same: API token handling, marking-based access to sensitive intelligence and audit logging settings apply as they do in any other model.
  • Changes: Host firewall rules carry most of the isolation work, so dependency ports should bind to loopback or a private interface only.
  • Changes: TLS certificates often come from an internal certificate authority, and every connector container must trust that chain.
  • Changes: Logs frequently stay on the same host, so confirm where they are shipped, how long they are kept and who can read them.
  • Confirm: Whether the license tier and authentication strategies you need are available to you, and whether vendor guidance covers single-host layouts for your version.

Before treating the deployment as isolated, check that no dependency port answers on any interface outside the platform host.

What to monitor, back up and document after OpenCTI hardening

Hardening only holds if someone checks it on a schedule. Start by setting a fixed review cadence for OpenCTI audit logs and the API token inventory, with a named owner for each. Audit logs and activity monitoring are part of the Enterprise Edition, so confirm your license covers them before you design the review process. During each review, check which accounts created tokens, which connectors use them, whether any token belongs to someone who has left, and whether any token has broader access than its connector needs. Record the findings in a short, dated log so the review itself becomes part of your operating evidence.

Rotation and patch tracking come next. Rotate connector and API tokens, RabbitMQ and Redis credentials, S3 access keys and TLS certificates on a schedule your change process approves. Test each rotation in a non-production environment first, because some connectors need a restart to pick up new credentials. Track the running OpenCTI version alongside Elasticsearch or OpenSearch, Redis, RabbitMQ and MinIO versions. Note that OpenCTI LTS releases receive only critical bug and security fixes after stabilization, while non-LTS releases ship from daily to weekly. Decide in advance who triages each release, how quickly security fixes are applied, and how you confirm that your LTS license key remains valid.

Backups must cover every stateful dependency, not only the platform. Plan to back up the Elasticsearch or OpenSearch indices, the object storage that holds uploaded files and exports, and the configuration needed to rebuild the platform. Decide whether Redis and RabbitMQ state must be preserved or can be rebuilt, and document that decision. Encrypt backups at rest and in transit, and store encryption keys separately from the backup copies. Confirm the backup and restore procedure for each component against its vendor documentation. Then run restore tests on a regular schedule in an isolated environment, and verify that the platform starts, data counts match and stored files open correctly.

Documentation is what lets an auditor or a new engineer understand the system. Maintain a configuration baseline that records authentication settings, network boundaries, TLS settings and role assignments. Keep the marking taxonomy in a versioned file, so every marking used for sensitive intelligence has a documented owner and purpose. Maintain a connector credential inventory that lists each connector, the token it uses, its permitted scope and its owner. Add an exception register for every deviation from the baseline, with the reason, the compensating control, an approver and a review date. Confirm your own change-control and evidence requirements before you finalize these records. DeployOpen can prepare the runbooks, baseline and evidence, but independent auditors and certification bodies issue audit reports and certifications.

Questions teams ask before hardening OpenCTI

How much does OpenCTI security hardening cost?

The cost follows the written scope, and DeployOpen does not publish a price list. The main drivers are the number of environments, how many dependencies are in scope (Elasticsearch or OpenSearch, Redis, RabbitMQ and S3-compatible storage), the identity provider integration, TLS and certificate work, the number of connectors and API tokens to review, and how much marking design the data owners need to define. Hardening is mostly one-time work, but some costs recur: re-verification after upgrades, Enterprise Edition licensing if you need its controls, and the infrastructure that runs the controls. When you request a quote, ask for each component listed separately, with what is paid for, what is delivered as documentation, and which items are optional.

How long does it take to harden an OpenCTI deployment?

The timeline depends mainly on how many components must change and how quickly the client can provide access and decisions. The biggest schedule drivers are the number of dependencies to isolate, whether the identity provider configuration is ready, how long change approvals take in your environment, and when data owners can agree on markings for sensitive intelligence. Connector count matters because each connector token and its permissions must be reviewed. Testing after changes also takes time, especially where a change affects workers consuming RabbitMQ messages. Ask for a schedule in the written scope that names the client dependencies and the approval windows, so the timeline has clear checkpoints.

What does the client need to provide for OpenCTI hardening?

Plan to provide environment access, the identity provider details, and a certificate authority for internal TLS. Environment access usually means accounts and network paths to the platform, workers, search, queue, cache and object storage nodes, with a change process that allows testing. For identity, you will need metadata or configuration for any SAML or OpenID Connect provider and the group names that map to roles. The certificate authority must issue certificates for the internal endpoints. Secrets tooling is needed to store API tokens and connector credentials outside configuration files. Finally, data owners must define markings and who may see them, because access rules cannot be set from technical settings alone.

Can our own team harden OpenCTI without an outside partner?

A small deployment can often be hardened by an internal team with the official documentation and enough time, provided someone reviews the result who has done this work before. The documentation covers the deployment components, dependency versions and authentication options, so the work is reachable for capable platform engineers. The risk is in the details: token scopes that are wider than needed, dependencies left reachable from other networks, audit logs that are written but never reviewed, and marking rules that are inconsistent. A second review by an experienced reviewer catches these gaps. For larger or multi-environment deployments, plan for the review to cover every environment, not only the first one.

Which OpenCTI hardening controls need the Enterprise Edition?

The clearest Enterprise Edition control is SSO. Since OpenCTI 7.260224.0, defining and using authentication strategies, including SSO, requires the Enterprise Edition. The Enterprise Edition also adds activity monitoring and audit logs, organization-based data segregation and authorized members, which are central to marking-based access and to audit logging. Community Edition is licensed under Apache License 2.0, and local users and LDAP are among the supported authentication options, so confirm for your exact version which authentication paths and configuration options are available without an Enterprise license. Also confirm whether TLS, API token handling and network isolation need any licensed feature, because the answer depends on the release you run.

Does hardening OpenCTI make the deployment compliant?

No. Hardening prepares systems, controls and evidence for a compliance assessment, but it does not produce an audit report, attestation or certification. Independent auditors and certification bodies decide whether the controls meet a given standard. In practice, the work documents how access is granted, how API tokens are issued and rotated, how traffic between dependencies is restricted, how TLS is configured, and how audit logs are kept. Ask your assessor early which control IDs and evidence they expect, so the hardening record matches that request. Keep in mind that each evidence item must still reflect the deployed system at the time of assessment, which is why changes after upgrades matter.

How does OpenCTI hardening change with each release?

Each upgrade can change configuration defaults, authentication behavior, connector interaction and dependency requirements, so the hardening baseline must be checked again after every move. Non-LTS releases ship when ready, from daily to weekly, and the version format is x.YYMMDD.z. LTS releases arrive every 6 months and each is supported for 1 year, with a 6-month overlap between consecutive LTS versions. LTS releases require a specific LTS license key, and after a one-month stabilization they receive only critical bug and security fixes. Teams choosing LTS should schedule a verification pass for each new LTS line and for any hotfix that changes access or network behavior.

How DeployOpen scopes, builds and hands over OpenCTI hardening

DeployOpen approaches OpenCTI security hardening as a fixed-scope engagement inside your own infrastructure, covering the platform, its dependencies and the connectors that write to it. Each step is agreed in writing, tested against your deployment and documented so your team can run the result.

How we scope

  • Inventory the platform, workers, connectors and dependencies, and confirm which edition and authentication strategies your team uses.
  • Agree in writing which controls are in scope: API token handling, connector permissions, TLS, audit logging and marking-based access.
  • Record the deployment's data sensitivity, marking definitions and access groups so the hardening plan reflects who must see which intelligence.

How we build

  • Restrict dependency access so Elasticsearch or OpenSearch, Redis, RabbitMQ and S3-compatible storage accept traffic only from OpenCTI components.
  • Configure TLS for user and service traffic, rotate and scope API tokens, and set connector permissions to the minimum each one needs.
  • Enable and test audit logging and marking-based access, then verify both against defined test accounts and sample sensitive records.

How we hand over

  • Deliver configuration documentation, a list of changed settings and the test results that show each agreed control was verified.
  • Walk your operators through token rotation, connector permission reviews, audit log review and how to add a new connector safely.
  • Document open items and the checks to repeat after each OpenCTI upgrade, so hardening is not silently undone by a later change.

How we support

  • Ongoing support, upgrades and continuous testing are available as retainers, scoped in writing separately from the hardening engagement.
  • Retainers can cover re-checking hardening after upgrades to regular or LTS releases, including connector compatibility and permission reviews.
  • Confirm with your team which support hours, response expectations and upgrade responsibilities apply before the retainer scope is signed.

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.