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 |