When a contractor leaves a project, the CI pipeline they built often continues to run using a long‑lived service‑account key that was checked into the repository. An internal AI‑driven automation later picks up that key, authenticates to GCP as a non-human identity, and starts provisioning resources without any human oversight. The organization now has a hidden, high‑privilege identity that can act anywhere the original contractor could.
The problem with shared service accounts
Shared service accounts are attractive because they provide a single credential that many jobs can reuse. In practice they become a single point of failure: the private key is copied to developer laptops, stored in CI secret stores, and sometimes even embedded in container images. When an AI agent or a compromised build server accesses that key, it inherits every permission granted to the account. Because the credential is static, there is no built‑in expiration, no context about who is invoking the request, and no audit trail that ties an action to a specific user or process. The result is a blind spot where privileged operations can be performed without visibility, approval, or any form of data protection.
Non-human identity improves credential hygiene, but leaves a gap
Adopting non-human identity, workload‑identity bindings, OIDC tokens, or short‑lived service‑account impersonation, eliminates the need to distribute long‑lived keys. Each workload receives a token that is scoped to its identity and expires automatically. This change solves the credential‑sprawl problem and reduces the risk of key leakage.
However, the token still travels directly from the workload to the target GCP service. The request bypasses any enforcement point that could record the operation, mask sensitive response fields, or require a human approval for risky actions. Non-human identity alone does not give you a central place to apply command‑level policies, capture a replayable session, or enforce inline data redaction. In other words, the request reaches the target unobserved, and the organization loses the same audit and control benefits it had when using shared service accounts.
Putting enforcement in the data path with hoop.dev
hoop.dev is a Layer 7 gateway that sits between identities and GCP resources. By proxying connections to databases, Kubernetes clusters, SSH endpoints, and HTTP APIs, hoop.dev becomes the only place where traffic can be inspected and controlled.
