Intended Audience: GCP administrators with permission to manage workload identity pools and service accounts (
roles/iam.workloadIdentityPoolAdmin and roles/iam.serviceAccountAdmin, or roles/owner). You perform this setup once, and it enables keyless BigQuery access for your whole team.Why use Workload Identity Federation?
Keyless
No service-account key files to store, rotate, or leak. Orchestrivo never holds a long-lived secret for your project.
No daily reconnect
Federation is not tied to a human session, so session-control reauth windows never interrupt your agents or flows.
Short-lived tokens
Orchestrivo mints a fresh, short-lived access token for each request via GCP STS. Nothing durable is persisted.
You stay in control
You decide which service account Orchestrivo may impersonate and exactly which Orchestrivo tenant your pool trusts.
How it works
1
Orchestrivo mints an OIDC token
At query time, Orchestrivo signs a short-lived OIDC token identifying your Orchestrivo organization. Its issuer is
https://api.orchestrivo.com.2
GCP STS verifies and exchanges it
Your workload identity pool verifies the token’s signature against Orchestrivo’s published JWKS and checks your attribute condition, then exchanges it for a federated token.
3
Orchestrivo impersonates your service account
The federated token impersonates the target service account you nominate, yielding a short-lived Google access token scoped to BigQuery.
4
Orchestrivo queries BigQuery
That access token is used for the BigQuery call, then discarded.
- Discovery:
https://api.orchestrivo.com/.well-known/openid-configuration - JWKS:
https://api.orchestrivo.com/oauth/jwks
Claims included in the Orchestrivo OIDC token
Claims included in the Orchestrivo OIDC token
Orchestrivo derives every claim server-side from the authenticated credential owner. None come from user input.
iss:https://api.orchestrivo.comsub:orchestrivo:project:<workspace_id>ororchestrivo:user:<user_id>aud: the full resource path of your pool providerorchestrivo_org_id: your Orchestrivo organization ID. Use this to lock down the pool.orchestrivo_owner_type:projectoruserorchestrivo_owner_id: the Orchestrivo workspace or user ID that owns the credentialiat/exp: issued-at and a short (5 minute) expiry
Prerequisites
Before you begin, gather:- Your GCP project ID and project number (
gcloud projects describe YOUR_PROJECT_ID --format="value(projectNumber)") - Your Orchestrivo organization ID, provided by Orchestrivo. You pin your pool to this value so that your pool accepts only your tenant’s tokens.
- Permission to create workload identity pools and service accounts in the project
iamcredentials.googleapis.com: required for Orchestrivo to impersonate your service account (thegenerateAccessTokencall). Without it, token exchange fails with a403 SERVICE_DISABLEDerror.bigquery.googleapis.com: required to run queries.
Step 1: Create a Workload Identity pool
Step 2: Add Orchestrivo as an OIDC provider
Create an OIDC provider in the pool that trusts Orchestrivo’s issuer, maps the token claims, and restricts access to your Orchestrivo organization.Understanding these parameters
Understanding these parameters
- issuer-uri: Orchestrivo’s OIDC issuer. GCP reads
https://api.orchestrivo.com/.well-known/openid-configurationto discover the JWKS used to verify tokens. - attribute-mapping: Maps Orchestrivo token claims into pool attributes. You must map
google.subject. Theattribute.*mappings let you reference claims in conditions and IAM bindings. - attribute-condition: The security gate. GCP accepts only tokens whose
orchestrivo_org_idequals your organization. ReplaceYOUR_ORCHESTRIVO_ORG_IDwith the value Orchestrivo provided.
You don’t need to set
--allowed-audiences. Orchestrivo sets the token audience to the provider’s full resource path, which is the default audience GCP accepts.Step 3: Create the target service account
This is the identity Orchestrivo impersonates. Grant it only the BigQuery permissions your team needs.Step 4: Allow the pool to impersonate the service account
Grantroles/iam.workloadIdentityUser on the service account to the federated identities from your pool, scoped to your orchestrivo_org_id attribute.
Step 5: Collect the three values for Orchestrivo
Paste these three values into Orchestrivo:- GCP Project Number, for example
123456789012 - Workload Identity Pool Resource Name, the provider resource path:
- Target Service Account Email, for example
bigquery-runner@YOUR_PROJECT_ID.iam.gserviceaccount.com
Step 6: Add the credential in Orchestrivo
- Go to the Connectors page. For a shared, team-wide connection, use your workspace credentials instead.
- Click Add Credential and select BigQuery (Workload Identity).
- Enter the three values from Step 5 and save.
Troubleshooting
”Permission denied” or no credentials found
- Confirm the attribute condition value matches the
orchestrivo_org_idOrchestrivo provided exactly. - Confirm the
principalSet://binding uses the project number and the sameattribute.orchestrivo_org_idvalue. - Confirm the service account has
roles/bigquery.jobUser(needed to run queries) in addition to a data-read role.
”IAM Service Account Credentials API has not been used… or it is disabled”
The impersonation step callsiamcredentials.googleapis.com, which you must enable in your project. Enable it (and the BigQuery API), then wait a minute or two for the change to propagate:
“Invalid audience” / token rejected by STS
- Make sure the Workload Identity Pool Resource Name you pasted into Orchestrivo is the full provider path ending in
/providers/<provider-id>.