What does SOC 2 really demand from a self‑hosted infrastructure?
Organizations that run their own servers, containers, or databases must still prove that they meet the Trust Services Criteria that SOC 2 evaluates. The standard expects documented policies, evidence of controlled access, immutable logs of privileged actions, and proof that sensitive data is protected at rest and in transit. Auditors look for a clear chain of custody: who initiated a connection, what commands were executed, and whether any data exposure was approved or masked. Without a single source that captures these details, the compliance team is left piecing together ad‑hoc logs, SSH history, and manual change tickets – a process that rarely satisfies a SOC 2 audit.
Current reality in many self‑hosted environments
Most teams start with a pragmatic, but insecure, setup. A handful of engineers share a root SSH key that lives in a repository. Database administrators use a static admin password that rotates only when a breach is suspected. Access is granted on a standing‑basis, often via firewall rules that never change. Logging is optional; when it exists it is stored on the same host that runs the workload, making it easy for an attacker to tamper with or delete it. The result is a landscape where anyone with the shared credential can connect directly to the target, perform any command, and leave no trace for auditors.
What the standard fixes – and what it still leaves open
SOC 2 requires that access be granted on a least‑privilege basis and that each privileged action be recorded. The standard also mandates that sensitive fields be protected from unnecessary exposure. However, the requirement does not prescribe how the connection itself is mediated. In practice, the request still reaches the database, Kubernetes node, or SSH daemon directly, bypassing any checkpoint that could enforce approval, mask data, or guarantee an immutable audit trail. The missing piece is a control plane that sits between the identity that initiates the request and the resource that fulfills it.
Why the data path must host enforcement
The only place to enforce SOC 2 controls is on the network path that carries the request. Setup components – OIDC providers, service accounts, IAM roles – decide who is allowed to start a session, but they cannot block a dangerous command once the session is active. If enforcement lives inside the target process, a compromised agent could disable logging or alter masking rules. The gateway model moves the enforcement point out of the target’s control, ensuring that every request is inspected, approved, and recorded before it ever touches the resource.
hoop.dev as the SOC 2‑ready gateway
hoop.dev implements exactly this architectural requirement. It acts as an identity‑aware proxy that sits between users, AI agents, or service accounts and the self‑hosted resource. When a request arrives, hoop.dev verifies the OIDC token, extracts group membership, and applies policy decisions in real time. It can:
- Require just‑in‑time approval for high‑risk commands.
- Mask sensitive fields in database responses before they reach the client.
- Block prohibited commands outright.
- Record the entire session for replay and audit.
Because hoop.dev is the only component that sees the traffic, the enforcement outcomes exist solely because hoop.dev sits in the data path. Removing hoop.dev would revert the environment to the insecure baseline described earlier.
