You deploy a Cloud Run service, lock down access, and your security team still asks who can invoke it. Welcome to the identity rabbit hole. Cloud Run OAM exists to turn that chaos into order, connecting fine-grained permissions with managed identities that actually reflect real users and systems.
Cloud Run runs your containerized apps with scale-to-zero simplicity. OAM, short for Operations and Application Management, defines how identities, roles, and access policies map onto running workloads. Together they give you a structured way to describe who can do what, without hardcoding service accounts or handing out long-lived tokens. It’s a shift from manual IAM gymnastics toward predictable, declarative control.
To understand the pairing, think of OAM as the contract and Cloud Run as the executor. OAM declares an operational model: components, traits, scopes, and policies. Cloud Run enforces it through IAM bindings, service account impersonation, and resource-level permissions. The flow looks like this: an identity from your IdP (say, Okta or Azure AD) authenticates via Google Identity-Aware Proxy, OAM evaluates the operation context, and Cloud Run applies the right identity for that action. No manual credential swaps, no shared keys, just clean policy logic routing through standardized identity plumbing.
If your RBAC model still lives in Terraform variables, this is the moment to rethink it. OAM lets access live beside configuration, versioned and reviewable like code. Rotate service accounts often, map roles to scopes instead of individual endpoints, and use OIDC-based tokens for short-lived access. These small habits keep your Cloud Run OAM setup secure and auditable.
Benefits of using Cloud Run OAM: