Network Security
CRAFT implements defense-in-depth network security including TLS encryption, SSRF protection, Kubernetes network policies, and DNS security. This page covers the network security architecture and configuration.TLS Configuration
All external and internal communication is encrypted with TLS:TLS 1.0 and 1.1 are not supported. The platform enforces TLS 1.2 as a minimum and recommends TLS 1.3 for all external connections.
SSRF Protection
All outbound HTTP requests are protected against Server-Side Request Forgery (SSRF) attacks. This includes JWSjku fetch, health checks, webhook delivery (planned), and crawler operations.
Protection Layers
Per-Context Behavior
Different outbound request types apply SSRF rules differently:Kubernetes Network Policies
The platform uses Kubernetes NetworkPolicies to restrict pod-to-pod communication:Network Segmentation
The platform services are segmented into security zones:External Zone
External Zone
Receives traffic from external clients via the ingress controller or API gateway. Only the API endpoints and Keycloak login pages are exposed externally.
Application Zone
Application Zone
Contains the platform services (Governance, Assets, Utils) and solution services (Data Insights, Data Governance). Services communicate via internal cluster networking with TLS.
Data Zone
Data Zone
Contains PostgreSQL, Redis, and other data stores. Only accessible from the Application Zone. No direct external access is permitted.
Identity Zone
Identity Zone
Contains Keycloak and OpenFGA. Keycloak is partially exposed (login pages) while OpenFGA is internal-only.
Ingress Security
Ingress Controller Configuration
The platform’s ingress controller (NGINX or cloud-managed) enforces:Web Application Firewall (WAF)
WAF protection is recommended for all production deployments, especially those processing PHI, financial data, or sensitive enterprise data:- GCP: Cloud Armor security policies with OWASP Top 10 managed rules
- AWS: AWS WAF with AWS Managed Rules (Core Rule Set, Known Bad Inputs)
- Azure: Azure Front Door or Application Gateway WAF with OWASP 3.2 ruleset
DNS Security
Service Mesh (Optional)
For zero-trust deployments, the platform supports service mesh integration:- Istio
- Linkerd
- Automatic mTLS between all pods
- Authorization policies for fine-grained access control
- Traffic management and observability
- PeerAuthentication for strict mTLS enforcement
Webhook Security
When released, outbound webhook payloads will include security headers for integrity verification:
Receivers should:
- Verify the HMAC-SHA256 signature using the shared secret
- Reject payloads older than 5 minutes (replay protection)
- Use the delivery ID for idempotent processing
Troubleshooting
Connection refused between services
Connection refused between services
Check Kubernetes NetworkPolicies. Verify the source pod has egress rules allowing traffic to the destination pod on the correct port. Use
kubectl describe networkpolicy to inspect active policies.SSRF check blocking legitimate URLs
SSRF check blocking legitimate URLs
Verify the target URL resolves to a public IP address. If the target is behind a private DNS, add the domain to the appropriate allowlist. Health checks for agents with private IPs return UNKNOWN status by design.
TLS handshake failures
TLS handshake failures
Check certificate validity and chain completeness. Verify the server supports TLS 1.2 or higher. For internal services, ensure the internal CA certificate is trusted by all pods.
Next Steps
Authentication
Review the authentication architecture and token management.
Data Classification
Understand encryption requirements by data classification level.
Helm Configuration
Configure network-related Helm values for your deployment.
Networking
Infrastructure-level networking configuration for Kubernetes.

