Join our Newsletter — 33% off our NHI Course

What should organisations do first when securing application-to-application access in DevOps pipelines?

Organisations should first inventory automated connections and identify where applications or containers rely on embedded credentials, broad privileges, or unmanaged secrets. Once those paths are visible, teams can decide which connections can move to just-in-time access, which need vaulting, and where tighter role-based controls and auditing are required.

Why Application-to-Application Access Fails in Pipelines

DevOps pipelines concentrate trust in automation, which makes embedded secrets, shared service accounts, and broad machine privileges especially dangerous. The first job is not to redesign every control at once, but to identify where applications, build agents, and containers are silently authenticating on behalf of the business. When those relationships are undocumented, teams cannot see blast radius, rotation gaps, or whether access is still justified.

That visibility problem is common because CI/CD systems often accumulate credentials faster than they are reviewed. NHIMG research has found that 96% of organisations store secrets outside dedicated secrets managers in vulnerable places such as code, config files, and CI/CD tools. For a reader trying to secure app-to-app access, that is a direct signal that discovery comes before policy tuning. The most useful external reference here is the OWASP Non-Human Identity Top 10, which frames the control problem around machine identities, secrets, and excessive privilege rather than human-centric IAM assumptions.

In practice, many security teams discover their highest-risk access paths only after a pipeline failure, credential leak, or production incident has already exposed them.

How to Triage and Stabilise the Access Paths

The practical first step is to build an inventory of every automated caller and every credential path they use. That includes pipeline runners, deployment jobs, test harnesses, service-to-service calls, container startup secrets, API keys in environment variables, and long-lived tokens baked into images or scripts. The point is to map identity, privilege, storage location, and usage frequency together, because any one of those on its own is incomplete.

Once the inventory exists, teams should separate access into three buckets. First, credentials that can be removed entirely because the integration is obsolete or duplicated. Second, credentials that should move to a vault or managed secret store because they are still needed but are currently static. Third, credentials that should be replaced with ephemeral, just-in-time access or workload identity because the calling system only needs short-lived authority for a bounded task. This is where application-to-application access differs from human access: the access decision should follow workload context, not just a named role.

That triage is also where over-broad permissions become visible. If a build job can deploy, read data, and modify unrelated infrastructure, the issue is not only credential storage but also privilege scope. The relevant companion guidance is the Ultimate Guide to NHIs, which emphasises visibility, lifecycle control, and rotation discipline for non-human identities. A concise operational sequence is:

  • Enumerate every automated identity and secret source of truth.
  • Classify each connection by business need, privilege, and exposure.
  • Remove stale or duplicated access first.
  • Vault or rotate static secrets that remain necessary.
  • Convert the highest-risk paths to short-lived, context-bound access.

For most organisations, the right control order is inventory first, then privilege reduction, then secret modernisation, because changing the mechanism before understanding the dependency usually breaks deployments and hides the real exposure. These controls tend to break down when pipelines are highly dynamic and secrets are passed through multiple orchestration layers, because ownership and runtime context are no longer obvious.

Where the First Step Breaks Down and What to Watch For

Tightening application-to-application access often increases operational overhead, so teams have to balance immediate visibility against pipeline velocity. The first-pass inventory will rarely be complete on day one, especially where multiple CI systems, ephemeral containers, or third-party integrations share the same execution path. Current guidance suggests treating that gap as a normal transition state, not a reason to postpone action.

The main edge cases are shared service accounts, machine-generated tokens that outlive the job that created them, and credentials embedded in infrastructure templates or reusable pipeline fragments. These are risky because they create hidden reuse: one compromise can expose several applications, environments, or release stages at once. A useful benchmark is whether the credential can be tied to a specific workload and expiry window. If it cannot, the access path is probably still too durable for automated use.

Teams should also watch for access paths that are technically documented but effectively unmanaged. A secret in a vault is not automatically safer if no one knows which pipeline step consumes it or whether the step still needs production reach. In that sense, the first step is not only discovery but also establishing enough ownership to answer whether each automation path still deserves its current level of trust.

Standards & Framework Alignment

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

OWASP Non-Human Identity Top 10 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
OWASP Non-Human Identity Top 10 NHI-01 — Secrets and Credential Management App-to-app pipeline access often depends on stored machine secrets.
NHI-02 — Privilege and Access Scope The question centers on broad automated access paths and least privilege.
NHI-03 — Lifecycle and Offboarding Unused pipeline connections and old service credentials need retirement.
Recommendation — Inventory and centralise pipeline secrets, then rotate or remove long-lived credentials. Reduce each automated identity to the minimum access needed for its workload. Retire obsolete app-to-app credentials and revoke access when workloads change.
CIS Controls v8 6 — Access Control Management Secure pipeline access begins with identifying and controlling who or what can access systems.
5 — Account Management Machine identities in DevOps pipelines need inventory and ownership.
8 — Audit Log Management Pipeline access decisions need traceability for automated identity use.
Recommendation — Review automated accounts and remove unnecessary access paths first. Maintain an accurate inventory of service accounts, tokens, and pipeline identities. Log secret use and automated access events to support review and investigation.
NIST CSF 2.0 PR.AC-1 — Identity Management, Authentication, and Access Control Automated application access must be identified and governed before hardening.
PR.AC-4 — Access Permissions Management The question asks for first-step reduction of excessive machine permissions.
PR.DS-1 — Data-at-Rest Protection Embedded secrets in code, config, and build artifacts expose sensitive data.
Recommendation — Map each pipeline identity to a controlled authentication and access process. Limit pipeline permissions to the least privilege required for each task. Protect stored secrets and prevent sensitive credentials from persisting in code or artifacts.

Practitioner Guidance

What to prioritise: Start with the credentials that can reach production systems, because those create the fastest path from a leak to material impact. Treat secrets with cross-environment scope or no clear expiry as higher priority than isolated test-only access.

What to verify: Confirm that each automated connection has a named owner, a known runtime context, and a defensible business purpose. If any of those three are missing, the access path should be treated as ungoverned until proven otherwise.

Decision rule: If the connection is short-lived and tied to a specific workload action, it is a candidate for ephemeral access. If it is reused across jobs, environments, or deployments, it should be treated as technical debt that deserves rotation, scoping, or removal before expansion.

Practitioner takeaway: The first secure move is to make machine-to-machine trust visible enough that teams can shrink it safely; without that inventory, every later control is guesswork.