CI/CD & GitOps Practical By Samson Tanimawo, PhD Published Nov 4, 2025 4 min read

CI Permission Model

What can CI do? Bound it.

Least privilege

The CI system is one of the highest-privilege actors in any engineering org. It can deploy to production, push to artifact registries, modify cloud infrastructure, and access internal APIs. The principle of least privilege says the CI should have only the permissions strictly required for the job it is currently running. The default of "give CI broad credentials so any pipeline can do anything" is the security posture that produces breach-class incidents.

What least privilege looks like in CI:

The cost of least privilege is some extra config per pipeline. The benefit is that a compromised pipeline has bounded blast radius. The math is heavily in favor of the discipline.

OIDC

The historic way CI authenticated to cloud providers and internal services was with long-lived secrets stored in CI as environment variables. That model is being replaced by OIDC (OpenID Connect): the CI system mints a short-lived, per-job token that the cloud provider trusts based on the CI's identity claims. No standing credentials, no secrets to leak, no rotation problems.

OIDC for CI is the security upgrade that pays back fastest. Long-lived secrets in CI are the largest credential-management liability most organizations have. Replacing them with OIDC eliminates the liability entirely.

Audit

The third leg of the CI permission model is audit: knowing, after the fact, what each pipeline actually did. The audit trail is what makes incident response, compliance, and security review work.

Least privilege, OIDC, and audit together produce a CI permission model that is defensible against the threats CI realistically faces: token theft, supply-chain compromise, malicious commits, accidental misconfigurations. Nova AI Ops integrates with CI provider audit streams, watches for anomalous CI behavior in real time, and surfaces the credential-usage pattern across pipelines so the security team has visibility without having to interrogate every team's CI separately.