Denialbase is HIPAA-compliant today. We are pursuing formal SOC 2 Type I and ISO 27001:2022 certifications. This page is our transparent, evidence-backed readiness tracker — it names what’s done, what’s partial, and what’s missing.
Readiness snapshot
Based on a structured review of our infrastructure-as-code, source code, CI/CD pipelines, and documentation as of April 2026.Overall maturity
47 / 100 — Level 2 (Repeatable Technical Controls)Technical controls are well ahead of governance. Estimated 6–9 months to audit-readiness with focused governance and policy work.
Technical strength
78 / 100 — Technical Security
71 / 100 — Operations & MonitoringEncryption, auth, network, CI/CD security, secrets management — all in place.
Governance gap
12 / 100 — Governance & Policies
10 / 100 — Risk Management
18 / 100 — HR / Incident Response
22 / 100 — Supplier SecurityFormal policies, risk register, and BAA execution are the remediation focus.
SOC 2 criteria — estimated maturity
Percentages below estimate control maturity based on design, implementation, and repository-observable evidence. They are not audit scores.| Trust Service Criterion | Estimated maturity | Status |
|---|---|---|
| Security (CC) | 58% | Partial |
| Availability (A) | 55% | Partial |
| Confidentiality (C) | 50% | Partial |
| Processing Integrity (PI) | 45% | Partial |
| Privacy (P) | 30% | Not evidenced |
What’s working today
Encryption — VERIFIED
Encryption — VERIFIED
- Customer-managed encryption keys (CMEK) on Cloud SQL, GCS, Memorystore Redis, and Terraform state, with 90-day automatic key rotation.
- Active Record column-level encryption for PHI on the
User,InsuranceMember,InsuranceProfile, andOverturnableDenialmodels. Deterministic for queryable fields (names, member IDs); non-deterministic for the rest. - TLS 1.2+ in transit, enforced at the load balancer.
Authentication & authorization — VERIFIED
Authentication & authorization — VERIFIED
Network security — VERIFIED
Network security — VERIFIED
- Google Cloud Armor WAF with the full OWASP Core Rule Set v3.3 (SQLi, XSS, RCE, LFI/RFI, scanner detection, protocol attacks).
- Per-IP rate limiting at the load balancer (500–1000 req/min with 5-minute ban on breach).
- Private VPC for Cloud SQL and Redis. Workload Identity Federation for CI/CD — no long-lived service account keys.
Audit logging — VERIFIED
Audit logging — VERIFIED
hipaa_audit_logstable records every PHI access, modification, export, and disclosure.security_audit_logsrecords authentication events, account lockouts, 2FA changes, admin actions.- Retention: 7 years (exceeds HIPAA’s 6-year minimum).
CI/CD security — VERIFIED
CI/CD security — VERIFIED
- Multi-stage GitHub Actions pipeline with blocking security gates: Brakeman (SAST), bundler-audit (dependency CVEs), Trivy (Terraform config scanning), license_finder (OSS license compliance).
- 90% backend coverage and 80% frontend coverage required to merge.
- All builds sign + attest to artifact registry via Workload Identity Federation.
What’s in progress or missing
We’re publishing this section because buyers deserve to see it before asking. Every item below is tracked in our internal risk register with an owner and target date.Critical gaps
Business Associate Agreements (BAAs) — in progress
Business Associate Agreements (BAAs) — in progress
Status: Our BAA tracker shows “Not yet signed” for GCP, Anthropic, Sentry, and Amazon SES as of April 2026. We are actively working on executing these.Why it matters: HIPAA requires a signed BAA with every subprocessor that handles PHI. Until these are executed, we rely on each vendor’s default data handling terms and our technical PHI-minimization controls.Mitigations today:
- PHI is column-level-encrypted before leaving our database.
- Anthropic calls use PHI-scrubbed prompts; raw PHI is never sent to the LLM.
- Sentry has PII scrubbing rules configured to redact known PHI field names.
- Amazon SES is used only for transactional email — no PHI in email bodies.
Column-level PHI encryption — partial
Column-level PHI encryption — partial
Status: The Active Record column-encryption migration is incomplete. Some PHI columns in the
OverturnableDenial and ProviderPatientLink tables (e.g., patient_name, patient_dob, patient_email, patient_phone) are declared as encrypts on the model but stored as plaintext strings in the database schema — indicating the backfill migration was started but not completed.Mitigations today:- All data is encrypted at rest via CMEK at the Cloud SQL level (AES-256 with customer-managed keys).
- Access to the database is restricted to private VPC only; no public ingress.
- All access is audit-logged.
Incident Response Plan — partial
Incident Response Plan — partial
Status: A disaster recovery plan exists, but a formal standalone Incident Response Plan (IRP) with named responders, escalation paths, and tested runbook is still in draft. Contact placeholders remain in the draft.Target: IRP published, tabletop-tested, and linked from Incident Response by Q2 2026.
Disaster recovery — not tested
Disaster recovery — not tested
Status: DR procedures are documented (backups, PITR, restore runbook). Formal test exercises (backup verification, PITR test, full DR drill, tabletop) are on the schedule but have not been executed yet.Mitigations today:
- Cloud SQL point-in-time recovery (PITR) is enabled.
- Automated daily backups with 30-day retention.
- Backups stored in a separate CMEK-encrypted GCS bucket.
High-priority gaps
Formal security policies — published
Formal security policies — published
Status (April 2026 update): Remediated. The full policy stack is published in this Trust Center — Information Security Policy v1.0, Acceptable Use Policy v1.0, Risk Register v1.0, plus Access Control, Cryptography, Data Classification, Change Management, HR Security, Security Awareness, Vendor Management, and Statement of Applicability. CEO sign-off pending on ISP + AUP.Remaining: CEO formal approval + first annual review cycle.
Third-party penetration testing — not done
Third-party penetration testing — not done
Status: No third-party penetration test has been commissioned yet. We run Brakeman SAST and bundler-audit on every PR, and Trivy against our Terraform, but these don’t substitute for a dynamic, adversarial test.Target: Engage a CREST-accredited or equivalent pentest firm by Q3 2026; publish a sanitized executive summary at Penetration testing.
JWT rotation mechanism — implemented
JWT rotation mechanism — implemented
Status (April 2026 update): Remediated.
jwt.rotation_secret is wired to DEVISE_JWT_SECRET_KEY_PREVIOUS — during a rotation window, tokens signed with either the current or previous key verify. Specs cover both paths. See config/initializers/devise_jwt.rb and SECRET_ROTATION.md for the 8-step rotation runbook.Mitigations in place:- JWTs are httpOnly + Secure cookies; not accessible to JavaScript.
- Session expiry is bounded — cookie TTL now matches JWT payload TTL (4 hours).
- Keys live in GCP Secret Manager with access audit logs.
GCP organization policies — live in staging
GCP organization policies — live in staging
Status (April 2026 update): Remediated for staging.
iam.disableServiceAccountKeyCreation and iam.disableServiceAccountKeyUpload are both enforce: true on denialbase-dev (staging). New SA key creation and upload are now blocked at the project level; existing keys are unaffected.Remaining: Promote to production after a 1–2 week staging soak (target Q2 2026).How we’re tracking this
Every item in this page is owned by a named responder in our internal risk register and reviewed monthly. This public page is updated at least quarterly or whenever a material gap is closed.Want a deeper look? Enterprise customers can request our full SOC 2 Type I readiness report (signed mutual NDA) at security@denialbase.com.
Questions
General inquiries
Request a BAA
See the BAA page for the request process.