Skip to content
Notifications
Clear all

Recorded Future for security awareness training - using their data in simulations.

4 Posts
4 Users
0 Reactions
0 Views
(@k8s_cost_ninja)
Estimable Member
Joined: 5 months ago
Posts: 70
Topic starter   [#6396]

We use Recorded Future intelligence feeds for threat simulation in our K8s clusters. The data is high-quality, but ingesting it into a Kubernetes-native cost-aware security workflow has overhead.

Key issues we faced:
* Feed format requires transformation for K8s admission controllers or policy engines.
* Running continuous simulations impacts cluster resource consumption, which must be tracked for FinOps.
* Without proper labeling, the cost of these security pods gets lost in general "monitoring" namespace spend.

Example config we use to label simulation pods for Kubecost tracking:

```yaml
apiVersion: v1
kind: Pod
metadata:
name: threat-simulator
labels:
app: threat-simulator
cost-center: security-operations # Key for Kubecost allocation
environment: training
spec:
containers:
- name: simulator
image: internal/simulator:latest
resources:
requests:
memory: "256Mi"
cpu: "250m"
limits:
memory: "512Mi"
cpu: "500m"
```

Without the `cost-center` label and explicit resource requests, this work disappears into unallocated costs. You need to right-size the requests to avoid over-provisioning for what are essentially batch jobs.

Has anyone else mapped the resource cost of running continuous security simulations using external threat data? How do you attribute it back to the security team's budget?


null


   
Quote
(@martech_tester)
Trusted Member
Joined: 3 months ago
Posts: 32
 

Right, the labeling for cost tracking is crucial. We ran into the same thing where our cloud bill for security testing was a mystery until we slapped proper tags on everything.

Have you tried pushing those feed transformations into a dedicated sidecar container? We found packaging the converter as a separate service within the pod made the resource limits for the actual simulator much more predictable.

Interesting that you call the environment "training". We use "simulation" to avoid any confusion with actual employee training platforms. Wonder if that naming helps your finance team understand the spend better.



   
ReplyQuote
(@auditor_abby)
Estimable Member
Joined: 4 months ago
Posts: 111
 

Good point on the labeling. That `cost-center: security-operations` is the only way to get a clean chargeback.

One caveat on your example config: you're setting resource requests, but for simulation pods you should also set up a `PriorityClass` to `preempt` or be `low` priority. Otherwise, a burst of simulation activity can interfere with actual production workloads during a scaling event, which defeats the purpose of a controlled test environment.


Where is your SOC 2?


   
ReplyQuote
(@marketing_ops_nerd)
Trusted Member
Joined: 3 months ago
Posts: 36
 

Nice config. We use similar labeling in our marketing automation pipelines for cost tracking, and the principle translates perfectly. The feed transformation overhead is a pain we know well from ingesting enrichment APIs into our CRM.

One thing to consider: if you're pulling from Recorded Future's API, the raw JSON often has nested indicators that need flattening for admission controllers. We solved a similar issue by running the transformation as a separate lambda that feeds an S3 bucket - the simulator pod then pulls from there, staying stateless and keeping resource use predictable.

On the resource requests - you're right that right-sizing is key, but for simulation pods you might also want to set a lower resource limit than your example shows. Those 500m CPU can add up if you're running continuous simulations across multiple clusters. We use a burstable QoS class with very low requests and moderate limits, and rely on PriorityClass to ensure they get evicted before production stuff.

One more thing: label for data lineage too. Adding something like `data-source: recorded-future` helps when finance asks why simulation costs jumped - you can tell if it's the feed ingestion or the actual compute.

How often are you refreshing the feed? We're on hourly but thinking about event-driven triggers to cut idle resource usage.



   
ReplyQuote