Cert-IX MVP1 — Compliance Baseline Matrix (38 Services)
Date: 2026-02-22
Scope: Minimum launchable compliance baseline on critical flows
Estimated remediation: 2–4 days (validated below)
Table of Contents
- Service Compliance Matrix (38 services)
- Critical Flows & Dependencies
- P0/P1/P2 Gap Summary
- Remediation Plan per Flow
- E2E Testing Strategy by Flow
- Kafka Event Contract Freeze
- Go/No-Go Criteria
- Timeline
1. Service Compliance Matrix
Legend
| Symbol | Meaning |
|---|---|
| ✅ | Implemented and verified |
| ⚠️ | Partially implemented / needs hardening |
| ❌ | Missing / not implemented |
| N/A | Not applicable for this service type |
Compliance Dimensions
| # | Dimension | Code |
|---|---|---|
| A | AuthN/AuthZ & Access Control | AUTHN |
| B | Audit Logging (who/what/when + traceId) | AUDIT |
| C | Secrets Management (no hardcoded secrets) | SECRETS |
| D | Encryption in Transit (TLS) + at Rest | ENCRYPT |
| E | Input Validation/Sanitization + Rate Limiting | INPUT |
| F | Monitoring/Alerting (health, logs, APM) | MONITOR |
1.1 Admin Services
| # | Service | Criticality | A:AUTHN | B:AUDIT | C:SECRETS | D:ENCRYPT | E:INPUT | F:MONITOR | Kafka Role | Dependencies |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | admin-backend | P1 | ✅ JWT+Passport, RBAC via rbac.service, token blacklist (Redis) | ✅ authAuditLogger middleware, session.service.createAuditLog, DB-persisted | ⚠️ Env vars via Joi validation; DB_SSL defaults false | ⚠️ Helmet headers; DB_SSL=false default; session cookie secure only in prod | ✅ Joi validate middleware on all routes | ⚠️ Winston logger; no APM agent detected | None | PG (cert_ix_admin), Redis, auth DB, assets DB, messages DB |
| 2 | admin-ui | P1 | ✅ JWT auth via admin-backend API | N/A (frontend) | ✅ No secrets in client code | ✅ HTTPS via Nginx/Kong | ✅ DOMPurify, client-side validation | ⚠️ Elastic APM RUM | Consumer of admin-backend API | admin-backend |
1.2 Authentication & Identity Services
| # | Service | Criticality | A:AUTHN | B:AUDIT | C:SECRETS | D:ENCRYPT | E:INPUT | F:MONITOR | Kafka Role | Dependencies |
|---|---|---|---|---|---|---|---|---|---|---|
| 3 | qr-auth-service | P0 | ✅ JWT+session, CSRF (Redis-backed), WebAuthn, MFA, device fingerprint, token blacklist, bot detection, IP reputation | ✅ AuditLogger class with tamper-resistant hashes (SHA-384 chain), DB+Kafka dual write, compliance tags (SOC2/GDPR/PCI) | ⚠️ Env vars; CSRF_ENCRYPTION_KEY falls back to crypto.randomBytes (ephemeral) | ⚠️ Kafka SSL configurable but ssl: process.env.KAFKA_SSL === 'true'; Redis TLS conditional | ✅ Joi validation, CAPTCHA integration, email validation, SQL injection patterns, rate limiting (DB-backed, 10 req/15min auth) | ⚠️ Structured logging; no APM | Producer: 50+ topics (auth events, CSRF, sessions, security) | PG (cert_ix_auth), Redis, Kafka, captcha-service |
| 4 | qr-auth-ui | P1 | ✅ Login/register/2FA/WebAuthn UI | N/A (frontend) | ✅ No secrets in client | ✅ HTTPS | ✅ Client-side validation, DOMPurify | ⚠️ Elastic APM RUM | N/A | qr-auth-service |
| 5 | otp-service | P0 | ✅ JWT auth, TOTP support | ✅ Kafka audit events | ⚠️ Env vars via config | ✅ Kafka TLS, Redis TLS configurable | ✅ Rate limiting (Redis-backed) | ⚠️ Logger only | Producer: OTP events | PG, Redis, Kafka |
| 6 | captcha-service | P1 | ✅ API key auth for service-to-service | ✅ Kafka audit events | ⚠️ Env vars | ✅ Kafka TLS, TLS server | ✅ Challenge validation, rate limiting | ⚠️ Logger only | Producer: CAPTCHA events | Redis, Kafka |
1.3 Client Frontend Services
| # | Service | Criticality | A:AUTHN | B:AUDIT | C:SECRETS | D:ENCRYPT | E:INPUT | F:MONITOR | Kafka Role | Dependencies |
|---|---|---|---|---|---|---|---|---|---|---|
| 7 | client-dashboard | P0 | ✅ AuthContext with JWT, session mgmt, CapabilityGate (tier-based), permission-based nav | N/A (frontend) | ✅ No secrets; encrypted token storage (CryptoJS) | ✅ HTTPS, security headers in layout.js | ✅ DOMPurify on all inputs, client-side Joi | ✅ Elastic APM RUM | N/A | qr-auth-service, all backend APIs via Kong |
| 8 | client-verifier-ui | P1 | ✅ Token-based email verification | N/A (frontend) | ✅ No secrets | ✅ HTTPS | ✅ Input validation | ⚠️ Elastic APM RUM | N/A | qr-auth-service |
| 9 | payment-ui | P1 | ✅ Session-based auth from checkout flow | N/A (frontend) | ✅ No secrets; Stripe.js handles PCI | ✅ HTTPS, Stripe Elements (PCI DSS) | ✅ Zod validation | ⚠️ Elastic APM RUM | N/A | checkout-orchestration, Stripe |
1.4 Asset Management Services
| # | Service | Criticality | A:AUTHN | B:AUDIT | C:SECRETS | D:ENCRYPT | E:INPUT | F:MONITOR | Kafka Role | Dependencies |
|---|---|---|---|---|---|---|---|---|---|---|
| 10 | asset-management-service | P0 | ⚠️ Kafka-based permission validation (with fallback auth); no direct JWT middleware | ⚠️ Security events service; audit via Kafka events on CRUD | ⚠️ Env vars; encryption service uses env key | ⚠️ Kafka TLS configurable; encryption.service.js for data at rest | ⚠️ Rate limiting in config; validation in routes | ⚠️ Logger only | Producer: asset CRUD events, quota sync; Consumer: permission responses | PG (cert_ix_assets), Redis, Kafka |
| 11 | asset-verification-service | P1 | ✅ JWT auth middleware (Go) | ⚠️ DB logging of verification attempts | ⚠️ Env vars; HMAC key in env | ✅ TLS server (Go), HTTPS endpoints | ✅ Input validation on verification requests | ⚠️ Structured Go logging | Producer: verification events | PG (cert_ix_asset_verification), Redis |
| 12 | assets-sync-service | P1 | ⚠️ Kafka SCRAM auth for broker; no HTTP auth (internal) | ❌ No audit logging found | ⚠️ Env vars; Kafka SCRAM credentials | ✅ Kafka TLS via SCRAM config | ⚠️ Trust validator for data integrity | ❌ No monitoring | Consumer: asset events; Producer: sync events | PG, Kafka |
1.5 Vulnerability & Scanning Services
| # | Service | Criticality | A:AUTHN | B:AUDIT | C:SECRETS | D:ENCRYPT | E:INPUT | F:MONITOR | Kafka Role | Dependencies |
|---|---|---|---|---|---|---|---|---|---|---|
| 13 | vulnerability-management-service (Go) | P0 | ✅ JWT auth middleware with tenant isolation | ⚠️ Audit in service layer; no dedicated audit table | ⚠️ Env vars; config validation | ✅ TLS server, DB TLS, Kafka TLS | ✅ Request validation, security middleware (CORS, headers) | ⚠️ Structured Go logging | Producer: vuln events; Consumer: scan events, capability responses | PG (cert_ix_vulnerabilities), Redis, Kafka, ES |
| 14 | vulnerability-classifier-service (Go) | P1 | ✅ JWT auth middleware | ⚠️ Redis-based scan tracking | ⚠️ Env vars | ✅ TLS configurable | ⚠️ Basic validation | ⚠️ Go logging | Consumer: scan results; Producer: classified vulns | PG (cert_ix_vuln_classifier), Redis, Kafka |
| 15 | vulnerability-policy-service (Go) | P1 | ✅ JWT auth middleware | ⚠️ Config-level audit | ⚠️ Env vars | ✅ TLS configurable | ⚠️ Model validation | ⚠️ Go logging | Consumer: vuln events; Producer: policy decisions | PG (cert_ix_vuln_policy), Redis, Kafka |
| 16 | vulnerability-remediation-service (Go) | P1 | ✅ JWT auth middleware | ⚠️ Config-level audit | ⚠️ Env vars | ✅ TLS configurable | ✅ Model validation, auth middleware validation | ⚠️ Go logging | Consumer: vuln events; Producer: remediation tasks | PG (cert_ix_vuln_remediation), Redis, Kafka |
| 17 | go-tools (9 scanner engines) | P0 | ✅ JWT auth middleware (pkg/middleware/auth.go) | ✅ pkg/scanner/audit.go — scan audit trail with retention | ⚠️ Env vars via config | ✅ TLS server, ES TLS | ✅ Rate limiting (Redis), input validation | ⚠️ Go logging | Producer: scan results; Consumer: scan requests | PG (cert_ix_tools_service), Redis, Kafka, ES |
| 18 | scan-api-service (Go) | P0 | ✅ JWT auth + API key auth (api_key_service) | ✅ Call log repository for API audit | ⚠️ Env vars | ✅ TLS, Kafka TLS | ✅ Validation, rate limiting | ⚠️ Go logging | Producer: scan dispatch to engines | PG, Redis, Kafka |
| 19 | scan-worker-service (Go) | P1 | ❌ Internal service, no HTTP auth (Kafka consumer only) | ❌ No audit logging | ⚠️ Env vars | ⚠️ Kafka TLS configurable | ❌ No HTTP input validation (Kafka only) | ❌ No monitoring | Consumer: scan tasks; Producer: scan results | Kafka |
1.6 Compliance & Audit Services
| # | Service | Criticality | A:AUTHN | B:AUDIT | C:SECRETS | D:ENCRYPT | E:INPUT | F:MONITOR | Kafka Role | Dependencies |
|---|---|---|---|---|---|---|---|---|---|---|
| 20 | compliance-guard-service | P1 | ❌ No auth middleware found | ❌ No audit logging | ❌ No secrets management | ❌ No TLS config | ❌ No validation | ❌ No monitoring | N/A | asset-verification-service |
| 21 | compliance-management-service (Go) | P1 | ⚠️ Auth references in service layer | ✅ Activity log in service, Kafka producer | ⚠️ Env vars | ✅ TLS configurable | ✅ Repository-level validation | ⚠️ Go logging | Producer: compliance events | PG, Redis, Kafka |
| 22 | compliance-management-service (Node, unused) | P2 | ❌ Not in use | ❌ Not in use | ❌ Not in use | ❌ Not in use | ❌ Not in use | ❌ Not in use | N/A | N/A |
| 23 | audit-evidence-service | P1 | ⚠️ PQC decryption middleware only | ⚠️ Audit in middleware | ❌ No secrets management | ❌ No TLS config | ❌ No validation | ❌ No monitoring | N/A | PG |
1.7 Payment Services
| # | Service | Criticality | A:AUTHN | B:AUDIT | C:SECRETS | D:ENCRYPT | E:INPUT | F:MONITOR | Kafka Role | Dependencies |
|---|---|---|---|---|---|---|---|---|---|---|
| 24 | payment-processing-service (Go) | P0 | ✅ Auth middleware, user existence check | ❌ No audit logging found | ⚠️ Env vars; Vault AppRole configured but not integrated in code | ✅ TLS server, DB TLS, Redis TLS, Kafka TLS | ✅ Rate limiting middleware, OTP validation | ⚠️ Go logging | Producer: payment events; Consumer: OTP events | PG, Redis, Kafka, Stripe |
| 25 | checkout-orchestration-service (Go) | P0 | ⚠️ Config-level auth; no JWT middleware on routes | ⚠️ Kafka audit events | ⚠️ Env vars; Vault configured but not integrated | ✅ TLS, DB TLS, Kafka TLS, Redis TLS | ✅ Rate limiting (Redis), checkout validation | ⚠️ Go logging | Producer: checkout events; Consumer: plan data | PG, Redis, Kafka |
| 26 | invoice-service (Go) | P1 | ❌ No auth middleware found | ❌ No audit logging | ⚠️ Env vars; Vault configured but not integrated | ✅ TLS server, DB TLS | ❌ No rate limiting, no input validation |