Security and Networking Guide¶
Security Posture¶
Paridity is designed to run inside the customer's trust boundary. The standard deployment keeps credentials, object names, data system metadata, proof results, and field-level evidence inside the customer's cloud or private platform.
Identity and Authentication¶
Paridity uses the customer's identity provider for user authentication.
Supported patterns:
- OIDC/JWT
- SAML, where configured
Production requirements:
- No local development auth bypass
- TLS on all browser-facing endpoints
- IdP groups mapped to Paridity roles
- Break-glass admin access documented and audited
- Access reviews owned by the customer
Main roles:
| Role | Typical access |
|---|---|
platform_admin |
Full deployment-wide administration |
tenant_admin |
Tenant administration |
operator |
Configure systems, mappings, schedules, and runs |
analyst |
Investigate reconciliation evidence |
auditor |
Read audit records and evidence |
Secrets¶
Paridity must not store source, target, or replication credentials in its own database.
Correct pattern:
Paridity cfg.systems.connection_ref
|
v
Customer secret manager
|
v
Actual credential
The connection_ref is a pointer. The actual credential lives in AWS Secrets
Manager, Azure Key Vault, GCP Secret Manager, Vault, or Infisical.
Production requirements:
- Use cloud workload identity where possible.
- Do not store static cloud keys in Kubernetes secrets.
- Use a preflight canary secret to verify access during install.
- Rotate credentials in the customer's secret manager, not in Paridity tables.
Network Boundaries¶
Only the UI/API should be reachable by users. Worker pods should not be exposed publicly.
Inbound:
| Source | Destination | Purpose |
|---|---|---|
| Customer users/browser | Paridity ingress | UI and API access |
| IdP browser redirects | Paridity ingress | Login callback where applicable |
| Customer monitoring | Health endpoints | Optional health checks |
Outbound:
| Source | Destination | Purpose |
|---|---|---|
| API | PostgreSQL | Config, run, evidence metadata |
| API | IdP/JWKS endpoint | Token validation |
| API/workers | Secret manager | Resolve connection references |
| API/workers | Temporal | Workflow dispatch and execution |
| Workers | PostgreSQL | Run state and evidence writes |
| SQL/readiness workers | Source systems | Proof, key extraction, metadata, readiness |
| SQL/diff workers | Target systems | Proof, key extraction, metadata, diff |
| Readiness workers | Replication tools | CDC/watermark/lag state |
| API/workers | OTel/SIEM endpoints | Optional telemetry export |
Egress Control¶
Production deployments should use two layers of egress control:
- Cloud network controls: security groups, firewall rules, NSGs, private endpoints, routing tables.
- Kubernetes NetworkPolicy: default-deny with explicit allowed destinations.
The approved destination list should include only:
- Source database endpoints
- Target database/warehouse endpoints
- Replication metadata endpoints
- Secret manager endpoints
- IdP/JWKS endpoints
- PostgreSQL and Temporal endpoints
- Approved telemetry/SIEM endpoints
Data Handling¶
Paridity handles several classes of sensitive data:
| Data class | Stored where | Notes |
|---|---|---|
| Credentials | Customer secret manager | Paridity stores only references |
| Object/schema/column names | Paridity PostgreSQL | Sensitive customer metadata |
| Resolved config snapshots | Paridity PostgreSQL | Sensitive because they reference systems and fields |
| Proof results | Paridity PostgreSQL ev.* |
Append-only evidence |
| Mismatch keys | Paridity PostgreSQL ev.* |
Append-only evidence |
| Field-level diffs | Paridity PostgreSQL ev.* |
May contain sensitive values; masking policy applies |
| Audit log | Paridity PostgreSQL cfg.audit_log |
Administrative and lifecycle evidence |
Field-level evidence must respect masking and raw-value storage policy. If raw values are not permitted, evidence records should preserve the fact of mismatch without storing sensitive values.
Audit and Compliance¶
Production requirements:
- Administrative actions are written to
cfg.audit_log. - Terminal run status transitions are audited.
- Evidence records are append-only.
- Retention purge actions are logged before deletion.
- Audit logs can be exported to the customer's SIEM.
compare_started_atis immutable and serves as an audit anchor for runs.
Backup and Recovery¶
Customer operations owns backup and restore, with Paridity guidance.
Minimum expectations:
- Managed PostgreSQL automated backups
- Point-in-time recovery for production
- Temporal persistence backup
- Quarterly restore validation for regulated use
- Restore runbook reviewed before go-live
Temporal is internal to Paridity, but it is still production infrastructure. The customer operations team must be able to monitor it, restart it, collect logs, patch it, upgrade it within Paridity's supported version range, and restore its persistence backend during DR.
Production Security Checklist¶
Before go-live, verify:
APP_ENV=production- No development auth bypass enabled
- Images pinned by digest
- TLS configured
- Customer IdP configured
- Customer secret backend configured
- Workload identity configured
- Network egress allow-list applied
- PostgreSQL private and encrypted
- Backups and PITR enabled
- Temporal persistence backup and restore path validated
- Temporal operations owner assigned
- Logs reviewed for secret leakage
- Audit log retention configured
- SIEM export configured if required