Skip to main content

Enterprise AI Platform security

Version française : ../README.md

Pages​

PageContent
threat-model.mdAssets, trust boundaries, attacker profiles, STRIDE per layer
injection-matrix.mdOne row per attack class: control, setting, proving test, residual risk
configuration.mdSecurity EAI_* settings, production startup guard, tenant security settings, posture API, Helm keys
runbooks.mdIncident procedures
testing.mdRunning security tests and scanners locally and in CI
identity-context-delegation.mdContext Authority, signed ExecutionContext, delegations, mandates, break glass, four eyes, audit identity fields
soc-runbook.mdSOC and AI-SDR: detections, correlation, risk, typed reactions, Kill Switch Registry and receipts, recovery with four eyes, evidence chain of custody, transaction reconciliation
governance.mdGovernance overview: who decides, controls per layer, registry, policies, audit, SOC, periodic review
hardening.mdHardening checklist of a production installation, step by step
authentication-authorization.mdAccepted credentials, Keycloak OIDC, local accounts, API keys, SPIFFE, tenant resolution, roles, OpenFGA, OPA, group mappings
identity-policy-plane.mdOperator guide for Keycloak, SPIRE, OpenFGA, OPA and signed bundles, KMS and HSM
secrets-vault.mdTenant secrets, Transit encryption keys, platform keys, IT vault of the Control Plane
file-security-pipeline.mdQuarantine, ClamAV, YARA-X, verdicts, locked rules, blocked files, roles and evidence
approvals.mdApproval workflow, run approvals, promotions, change path, four eyes rules
retention-privacy.mdClassification, DLP, tokenization, retention, legal holds, erasure, consents
data-protection.mdRAG data protection, Docling and PaddleOCR toolchains, quarantine review
risk-compliance.mdAI Act risk register, governance registry, evidence, control catalogue and frameworks
audit-evidence.mdAudit Gateway and Evidence Service: guarantees, roles, settings, offline verification

Related operations pages (not duplicated here):

Principles​

  1. Defense in depth. A request goes through the portal (CSP with nonce, safeHref), the APISIX gateway with Coraza and the OWASP CRS, Cilium policies, then the Control Plane API (size limits, rate limiting, authentication, RBAC, RLS). No layer assumes the previous one did its job.
  2. Every layer enforces its own control. Example: the WAF filters obvious SSRF, but eai.security.egress revalidates every resolved address at connect time, and Cilium denies the cloud metadata address anyway.
  3. Deny by default. Default deny network (deploy/cilium/baseline.yaml), outbound HTTP to private addresses refused unless explicitly allowlisted (EAI_EGRESS_PRIVATE_ALLOWLIST), JWT algorithms limited to an asymmetric list, startup guard refusing an unsafe production configuration (eai.security.startup.enforce).
  4. Tenant isolation by PostgreSQL RLS. eai.db.tx sets the transaction tenant; RLS policies filter every row. A resource of another tenant answers 404 (test_cross_tenant_access_is_404). RLS is forced on every tenant table (FORCE ROW LEVEL SECURITY, migration V100): even a connection that owns the tables, without the switch to the eai_app role, only sees what the policies admit, and the system context goes through eai.is_platform() (test_core_rls_forced.py).
  5. Secrets are never exposed to agents. Secrets live in OpenBao (EAI_OPENBAO_URL) or are encrypted with EAI_MASTER_KEY; tools, MCP and connectors get references, never the clear value in the prompt. SDKs mask keys (eai_***) and the CLI masks them in config show.

Security events are written by eai.security.security_event to the tenant audit chain (only logged without a tenant), see runbooks.md.