Network Security Guide
This guide describes recommended network controls for deploying Enprivacy 3.0 in a secure, network-isolated environment.
Design Principles
Section titled “Design Principles”Enprivacy 3.0 is designed to operate in a network-restricted environment. At runtime, the only required outbound internet connection is to auth.enprivacy.com for user authentication and entitlement.
The Web, Job and Inference Adapter services download nothing at runtime: the adapter’s models and the platform’s address data ship inside the images. Only a self-hosted LLM fetches models, from the Hugging Face Hub on first use, and pre-loading them removes that too — see Air-Gapped Deployments.
Required Outbound Connections
Section titled “Required Outbound Connections”| Destination | Port | Purpose | Required |
|---|---|---|---|
auth.enprivacy.com |
443 (HTTPS) | User authentication and entitlement | Always |
huggingface.co, cdn-lfs.huggingface.co, cdn-lfs-us-1.hf.co, cdn-lfs-eu-1.hf.co, cdn-lfs.hf.co, cas-bridge.xethub.hf.co |
443 (HTTPS) | Model downloads for a self-hosted LLM, on first use | Only for a self-hosted LLM whose models are not pre-loaded |
Without a self-hosted LLM, or once its models are pre-loaded, all outbound connectivity except auth.enprivacy.com:443 can be blocked at the network layer.
If you use an external/hosted LLM provider (e.g. AWS Bedrock, Azure OpenAI, Google Vertex) instead of the bundled LLM service, allow-list that provider’s endpoints in place of the Hugging Face Hub URLs.
Interservice Communications
Section titled “Interservice Communications”Services communicate over the following default ports. Only the Web service needs to be exposed for administrative and end-user access; all other services should be reachable only from within the deployment’s private network.
| From | To | Port | Protocol |
|---|---|---|---|
| Internet | Web | 8080 | HTTP |
| Web | Database | 5432 | TCP |
| Job | Database | 5432 | TCP |
| Web | LLM | 8000 | HTTP |
| Job | LLM | 8000 | HTTP |
| Web | OCR | 5001 | HTTP |
| Job | OCR | 5001 | HTTP |
| Web | Inference Adapter | 8443 | HTTPS |
| Job | Inference Adapter | 8443 | HTTPS |
Most interservice traffic uses plain HTTP/TCP by default and is intended to run within a trusted private network or segment. Where in-transit encryption between services is required, apply it at the network layer or via a service mesh (e.g. mTLS / WireGuard) — the application does not enforce TLS on these internal ports.
The Inference Adapter is the exception: it carries document content to be analysed, so it listens only over TLS and requires an API key on every request. See Inference Adapter.
Recommended Firewall Rules
Section titled “Recommended Firewall Rules”For Azure, the Azure Terraform reference architecture implements this posture concretely: an internal-only Container Apps environment, private endpoints for Key Vault / Storage / the LLM endpoint, a VNet-integrated database subnet with a blackhole route to the internet, and an application-subnet NSG that denies all outbound except DNS, NTP, intra-VNet traffic, and HTTPS.
Inbound
Section titled “Inbound”Outbound
Section titled “Outbound”Network Segmentation
Section titled “Network Segmentation”TLS Configuration
Section titled “TLS Configuration”- Only the Web service is exposed publicly. Terminate HTTPS at your load balancer or ingress controller using a certificate for your selected domain(s).
- Bring your own certificate from a trusted CA, or configure Enprivacy 3.0 to provision certificates via Let’s Encrypt. Enprivacy can help you select and implement an appropriate approach.
- Internal service-to-service traffic uses the ports listed under Interservice Communications and is not TLS-encrypted by default; isolate it within a private network or apply network-layer encryption.
VPN / Zero Trust Access
Section titled “VPN / Zero Trust Access”Air-Gapped Deployments
Section titled “Air-Gapped Deployments”Enprivacy 3.0 can run without general outbound internet access:
- Mirror the images into a registry your network can reach, pinned by digest. Web, Job and the Inference Adapter then need nothing further: their models and data are inside the images. For a self-hosted LLM, pre-load its models into its durable model cache as a one-off action.
- Use a self-hosted PostgreSQL database (with the required extensions) and an S3-compatible object store within your network.
- Allow only
auth.enprivacy.com:443outbound, for user authentication and entitlement.