Join our Newsletter — 33% off our NHI Course

What should security teams do when they need to expose internal Kubernetes applications to employees and contractors?

Security teams should expose only the required application, not the whole cluster, and use fine grained ACLs to limit access to the exact users who need it. For browser and HTTPS-based apps, an application layer proxy can simplify access and TLS management. For other protocols, a network layer proxy is more appropriate, especially when users are distributed.

Exposing Internal Kubernetes Apps Without Exposing the Cluster

When internal Kubernetes applications need to be reachable by employees and contractors, the security goal is to publish the application boundary, not the orchestration boundary. That distinction matters because the cluster usually contains more services, namespaces, and control-plane capability than the users should ever see. A narrow access design reduces the blast radius of user compromise, limits accidental discovery of adjacent workloads, and keeps administration separate from consumption. In practice, teams often discover that exposure was wider than intended only after they have already built convenience into the network path.

For browser-based and HTTPS applications, a proxy at the application layer is often the cleanest way to enforce per-app access, centralise TLS handling, and avoid giving users any direct path into the cluster. For non-HTTP protocols, a network-layer proxy can preserve protocol behaviour while still limiting who can connect and what they can reach. The decision is less about taste than about control granularity, protocol fit, and how much of the internal environment the exposure mechanism must reveal.

How Proxies Shape Access, Trust, and Maintenance

The practical choice is between a control that understands the application and one that simply forwards traffic. An application-layer proxy can evaluate requests after TLS termination, apply user-aware policy, and route traffic only to the service that should be visible. That makes it easier to support authenticated employees and contractors without publishing node addresses, service IPs, or cluster management paths. It also gives teams a single place to log access, enforce session rules, and separate app access from broader network reach.

A network-layer proxy is better when the protocol is not browser-friendly or when the application needs transparent transport handling. It is simpler in some cases, but the tradeoff is that it usually has less context about user intent and request content. That means access control has to be tighter elsewhere, because the proxy is moving packets rather than interpreting business actions. In both models, the key question is whether the user should be able to do one thing or many things once connected.

  • Use an application-layer proxy when the app is HTTPS-based and access decisions should be made per request or session.
  • Use a network-layer proxy when the protocol cannot tolerate application rewriting or when transparent forwarding is required.
  • Publish only the specific service endpoint, not the full cluster network range or administration interface.
  • Separate contractor access from employee access so policy, logging, and revocation remain distinct.

Well-run deployments also treat certificate handling, authentication, and routing as part of the same access design rather than as separate afterthoughts. External guidance on access control in mature environments is often framed through a broader control baseline such as NIST SP 800-53 Rev 5 Security and Privacy Controls, but the operational decision still comes down to which layer can most cleanly enforce the exact exposure you need. Where teams lose control is when a proxy is added for convenience but ends up becoming a generic ingress path for everything internal.

Where this guidance breaks down is when the application depends on many internal services, shared admin tooling, or ad hoc exceptions that make per-app isolation difficult to maintain.

Different User Groups, Different Exposure Boundaries

Tighter exposure control often increases operational overhead, requiring organisations to balance least privilege against support burden and onboarding speed.

Employees and contractors are not the same trust category, even when they need the same application. Contractors often need narrower time-bound access, more frequent review, and stricter revocation handling because their business relationship changes faster. For that reason, the access design should not be built around a single “internal user” assumption. If the application is sensitive enough to justify a proxy, it is usually sensitive enough to justify separate policy paths, logging, and exception handling.

There is also a governance question about what counts as “internal.” A service that is internal to the network is not automatically suitable for broad employee reach if it was never designed for that audience. Teams sometimes treat exposure as a routing problem when it is really an authorisation problem with a network component. The cleaner the boundary between application access and cluster access, the easier it is to prove that users can reach only what they were meant to use.

In practice, the most robust designs fail closed: if the proxy, policy, or identity integration is uncertain, users should lose access to the application rather than gain a wider path into the environment.

Risk and Threat Considerations

Exposing Kubernetes-hosted applications through a broad ingress path can create unnecessary access expansion, lateral movement opportunity, and control-plane concealment risk. The main concern is not just whether users can open the app, but whether the exposure mechanism also reveals internal services, shared namespaces, or administrative surfaces that should stay hidden.

Failure mechanism: Weak scoping, overly permissive routing, or misapplied network access can turn a single application request into a path toward adjacent workloads or management functions. If the proxy is too generic, a user or attacker who gains access to one app may be able to enumerate internal service names, reuse trust relationships, or reach more than the intended endpoint.

Impact: The result can be data exposure, broader compromise of internal services, and a much larger incident scope than the original application required. It also makes revocation and auditing harder because the access path no longer corresponds cleanly to one business application.

Standards & Framework Alignment

This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.

MITRE ATT&CK address the attack and risk surface, while CIS Controls v8 and NIST CSF 2.0 set the governance and control requirements practitioners need to meet.

Framework Control / Reference Relevance
CIS Controls v8 6 — Access Control Management Least-privilege access to published apps depends on scoped user access and revocation.
Recommendation — Restrict each exposed service to approved users and remove unnecessary access paths promptly.
NIST CSF 2.0 PR.AC-4 — Access Permissions and Authorizations The question centers on limiting who can reach the exposed application and nothing else.
PR.PT-4 — Communications and Control Networks Segregation Separating app access from the cluster boundary is a network-segmentation concern.
DE.CM-7 — Monitoring for Unauthorized Personnel, Connections, Devices, and Software Proxied access needs monitoring to detect unexpected connections or broader reach.
Recommendation — Apply PR.AC-4 to enforce fine-grained authorization for each exposed application. Segment application access from cluster control and internal service networks. Monitor the proxy path for unauthorized connections and unexpected internal access attempts.
MITRE ATT&CK T1133 — External Remote Services User-facing proxies create remote access paths that can be abused if overexposed.
Recommendation — Monitor exposed access services for misuse and constrain the reachable surface to one app.

Practitioner Guidance

What to prioritise: Define the smallest publishable unit first. If the user only needs one application, design the exposure path so that the cluster remains unreachable by default and only the app is addressable.

What to verify: Confirm that authentication, authorisation, and routing all resolve to the same target. If a user can authenticate but still discover other internal paths, the design is too broad.

Decision rule: Prefer an application-layer proxy for browser and HTTPS workloads when you need request-level policy and central TLS control. Prefer a network-layer proxy only when the protocol or transport semantics make application-level mediation impractical.

Practitioner takeaway: The safest exposure model is the one that limits both the user’s reach and the environment’s visibility, because convenience paths tend to grow into standing access paths if they are not tightly scoped from the start.