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 |