EMMANUEL TIGOUE
I build and break agentic AI systems, then ship the guardrails and audit trails that survive a compliance review. The controls map to NIST 800-53 and ISO 42001, from the cloud edge to the local model.
What I built
A security platform I designed, threat modeled, and run. Terraform in one repository has stood the stack up on AWS, DigitalOcean, and Oracle Cloud, one root module per provider, and runs on Oracle Cloud today. 19 services designed, 13 live, and every number on this page traces to the public repository.
Topology and flows
one hardened host, 19 services, three trust segmentsOpen full viewClick a box for what it is, the controls it holds, and the file that proves it.A 19 service platform on one Oracle ARM host, 13 containers up as this page was built. Control by control detail sits in the POA&M in the GRC section.
Workload figures measured over the 7 days ending 2026-09-10. One event is one successful top level automation run.
Multi-cloud planes
three planes, three vendors, split by blast radiusOpen full viewClick a box for what it is, the controls it holds, and the file that proves it.What it takes to run
$135/mo before
One AWS EC2 instance with a NAT Gateway in front of it, most of the compute idle, and every control tied to one vendor.
Multi-cloud IaC
Terraform builds the whole stack, Docker Compose runs it, and Cloudflare handles identity at the edge, so the same platform can stand up on a new provider in an afternoon. The evidence copies, backups, and break-glass credential are designed to live in a separate AWS account behind Object Lock, so the watcher never shares a failure domain with the workloads.
One ARM shape now
65% cut on DigitalOcean, then onto one Oracle Cloud Ampere A1 Flex shape, 4 OCPU and 24 GB. Same compose stack, same controls, a Terraform root per provider, three providers so far.
resource "oci_core_instance" "cd_alpha" { compartment_id = local.compartment display_name = var.instance_name shape = "VM.Standard.A1.Flex" shape_config { ocpus = var.instance_ocpus memory_in_gbs = var.instance_memory_gb } source_details { source_type = "image" source_id = data.oci_core_images.ubuntu_arm.images[0].id } }
services: edge-tunnel: image: cloudflare/cloudflared:latest # digest-pinned in prod command: tunnel run network_mode: host restart: unless-stopped security_opt: - no-new-privileges:true read_only: true environment: svc-automation: image: n8nio/n8n:latest # digest-pinned in prod security_opt: - no-new-privileges:true networks: - net-core # isolated bridge
package main import rego.v1 deny contains msg if { some rc in input.resource_changes rc.type in production_types action_includes_delete(rc) msg := sprintf( "DENY: deletion of production resource '%s'", [rc.address], ) }
Experience
Independent AI security practice. The reference platform at the top of this page is its infrastructure, built and operated end to end.
- Architected Squire, an AI SOC analyst that drafts a triage verdict for every alert and holds HIGH and CRITICAL for a human approval row. Built on LangGraph with human approval gates, pgvector RAG, NeMo Guardrails PII redaction, and Langfuse tracing
- Threat modeled the OpenClaw gateway (Claude Fable 5) against the OWASP LLM Top 10 and MITRE ATLAS, then set the guardrail and access requirements the platform shipped with
- Ran structured red team cycles against my own production AI stack and its web surfaces: prompt injection, jailbreaks, data leakage, excessive agency, and OWASP web risks. Remediated 6 of 11 pen test findings, the single High the same day, accepted 4 with compensating controls, and closed 1 as a false positive. Ran 20 red team cases across 5 attack classes with zero true bypasses
- Embedded Semgrep SAST, Trivy container image and dependency scanning, Gitleaks secrets scanning, and OPA policy gates for infrastructure as code into CI/CD. Added OWASP ZAP DAST against a CI-spun n8n instance, which is advisory, and a Cosign signature check the four publishers that sign must pass
- Placed every admin surface behind Cloudflare Zero Trust, defined in Terraform with no public application ports, one allowlisted break-glass SSH rule, and separate policies for human and service accounts
- Tuned Falco eBPF container runtime detection shipped to Datadog and mapped to MITRE ATT&CK, cutting alert noise without losing coverage
- Authored 57 GRC documents mapping 140 NIST 800-53 controls plus NIST AI RMF, SOC 2, and ISO 27001, and built a Promptfoo eval harness that regression tests the AI guardrail controls
- Deployed Splunk Enterprise SIEM across 3 sites, centralizing FortiGate, Cisco switch, and Windows logs with on call alerting and a one year AWS S3 archive under Object Lock. Detection time fell from 48 hours to under 4
- Owned incident response for 45 endpoints, covering card skimming, credential compromise, and unauthorized vendor access. Wrote a 6 step IR runbook that reduced containment from 8 hours to 90 minutes
- Traced $18K a year in card fraud to skimming on outdated, tamper prone payment terminals and drove their replacement with current models on automatic vendor updates
- Segmented a flat network into 6 VLANs behind FortiGate zones with default deny, isolating payment systems and tank gauges. Verified with Nmap and closed 12 of 14 critical PCI DSS gaps
- Built a quarterly Nessus vulnerability management cycle with patch reporting automated in Python and PowerShell, and brought critical patching from 90 to 30 days
- Removed standing admin rights and hardened Active Directory and Entra ID with MFA, FIDO2 admin keys, GPO baselines, stale account cleanup, and credential rotation
Security engineering
This section takes apart an autonomous AI agent that can browse, run code, query databases, trigger SOAR workflows, and push to GitHub. One compromised prompt can chain through 6 skills into 16 downstream integrations. I decomposed the pipeline with STRIDE, cross-referenced MITRE ATT&CK and ATLAS, OWASP Top 10 for LLM Applications (2026), NIST 800-53, and ISO 42001, and came out with 29 threats, 7 attack paths, and a clear line between the controls that hold and the gaps that remain.
Threat model
six attacker positions, the wall that meets each one, and what remains after the wallsOpen full viewClick a box for what it is, the controls it holds, and the file that proves it.Threat inventory (STRIDE)
Attack path analysis
Controls: Input validation, system prompt hardening, behavioral monitoring via Datadog, conversation length limits, output validation before workflow triggers.
Gap: No automated prompt injection detection at the gateway level. Recommended: implement input classifier before LLM processing.
Controls: N8N_RESTRICT_ENVIRONMENT_VARIABLES_ACCESS=true (deployed), Vault dynamic secrets, credential scoping, Falco detection rules for unusual credential access patterns.
Mitigated: Environment variable restriction closes the primary credential theft vector through n8n.
Controls: skill allowlisting, human approval gates on destructive workflow actions, Falco detection for unexpected n8n execution patterns, action audit logging.
Gap: no prompt classifier ahead of the trigger.
Controls: net-ai air gap (no runtime internet), SHA256 hash verification at pull, periodic model integrity checks, behavioral baseline testing.
Gap: No automated model signing verification. Ollama registry lacks Sigstore/Cosign integration. Manual hash comparison only.
Kill chain walkthrough
16 service integrations compromised, Database access (PostgreSQL), Cloud infrastructure (CDN, DNS), Communication channels (messaging, email), Code repositories, Knowledge bases
Risk acceptances
no-new-privileges, cap_drop: ALL plus explicit minimum cap_add, AppArmor profiles, and Falco eBPF syscall tracing on every container.Control framework mapping
Identity and access
four privilege tiers, every credential named with its lifetimeOpen full viewClick a box for what it is, the controls it holds, and the file that proves it.Reference design. Live, partial, or planned status per control is in the POA&M.
More: agent blast radius, application security, threat model library
Agent blast radius
Application security
Threat model library
Also in the library: AI Supply Chain Risk Assessment and the AI Incident Response Playbook. View the full GRC library on GitHub →
AI security and governance
One AI governance policy covers the five AI systems in the inventory. Each has a risk profile, prompt injection defenses, and behavioral monitoring on record. The trust view draws every crossing out of the host and what stands in front of it.
ISO 42001
AI system inventory, risk classification, responsible AI principles, lifecycle management, human oversight requirements, and continuous monitoring controls.
ISO 27701
Data protection in AI pipelines, PII handling controls, consent management, data retention policies, privacy impact assessments for AI systems.
NIST AI RMF
Govern, Map, Measure, Manage functions applied to the five registered AI systems. Risk tiering, bias evaluation, performance monitoring, and incident response procedures.
AI trust
five models, one search API, three trust levels; every crossing out of the host drawn with what stands in front of itOpen full viewClick a box for what it is, the controls it holds, and the file that proves it.One Falco rule, explained
- rule: Unexpected outbound connection from n8n desc: Detects n8n container making connections to non-whitelisted IPs condition: > is_n8n_container and evt.type in (connect) and fd.typechar = "4" and not fd.rip in (rfc_1918_addresses) output: > Suspicious outbound connection from n8n (connection=%fd.name container=%container.name image=%container.image.repository) priority: WARNING tags: [network, n8n, lateral_movement]
Should this AI system ship?
Governance, Risk, and Compliance
Control layers
seven barrier layers on one hardened host, moderate baselineOpen full viewClick a box for what it is, the controls it holds, and the file that proves it.Control status
NIST 800-53 status by family
What is in the library
When a container is compromised
Authorization boundary
what is inside the boundary, what the providers carry, and every crossing with its controlOpen full viewClick a box for what it is, the controls it holds, and the file that proves it.Certifications
Education
- Bachelor of Arts in Economics | 2026
- Associate of Science in Business Administration | 2025
Blog
Short notes on AI security, GRC, and building things. Full feed on LinkedIn.
Contact