Skip to main content
With workload identity federation, Omni connects to BigQuery using its own cloud identity instead of a stored service account key. Omni exchanges its identity for short-lived Google Cloud credentials through a workload identity pool you control — there’s no key to create, upload, or rotate, and you can revoke Omni’s access at any time from your Google Cloud project.

How it works

  1. In your Google Cloud project, you create a workload identity pool with an AWS provider that trusts the identity Omni presents.
  2. When Omni queries BigQuery or refreshes the connection’s schema, it exchanges that role’s credentials for a short-lived Google Cloud access token.
  3. The token acts either as the federated identity itself, or as a service account you allow Omni to impersonate.

Requirements

Workload identity federation is currently available for AWS-hosted Omni deployments only. Support for Azure-hosted deployments is planned.
To follow the steps in this guide, you’ll need:
  • Organization Admin permissions in Omni
  • Google Cloud admin permissions, which are required to create workload identity pools and grant IAM roles
  • The gcloud CLI
  • The following details about the default dataset in your BigQuery project:
    • The name of the default dataset
    • Its data location
    • Its timezone

    1. Navigate to your BigQuery console.
    2. Select the project your dataset resides in. Use the top middle drop-down menu to toggle between projects.
    3. Select a dataset and the info will appear in the Dataset info menu. In this example:
      • The dataset name is products
      • The Data location is US
      • The timezone is UTC-7, as indicated in the Last modified field
    BigQuery dataset info

Setup

1

Retrieve Omni's AWS identity information

  1. In Omni, click Settings > Connections.
  2. Click the BigQuery option.
  3. In the Authentication Type menu, select Workload Identity Federation.
  4. Copy the Omni Workload Identity value. It will contain a value like the following:
This identifies Omni to Google Cloud. Note that:
  • It contains Omni’s AWS account ID. This is the 123456789012 segment. You’ll need this when creating the provider in the next step.
  • It contains a prefix, not the full role name. The actual role has a random suffix appended by Omni’s infrastructure, so your attribute condition must use a starts-with comparison. An exact-match condition will never match.
2

Create a workload identity pool and AWS provider

  1. In the Google Cloud Console, navigate to IAM & Admin > Workload Identity Federation.
  2. Click Create pool.
  3. Enter a name, such as omni, and continue.
  4. Add a provider to the pool:
    • Provider type - AWS
    • Provider name - Enter a name, such as Omni
    • AWS account ID - The account ID from the value you copied in
  5. Configure the provider attribute mappings. AWS presents Omni’s identity in a different format than the value shown in Omni, so the mappings reconstruct the role ARN before comparing it.
    1. Click Edit mapping.
    2. For google.subject, paste the following into the corresponding AWS field:
    3. For attribute.aws_role_arn, paste the following into the corresponding AWS field:
    The mappings should look like the following when finished:
    Configured provider attribute mappings in the Google Cloud Console
  6. Configure the provider attribute conditions:
    1. Click Add condition.
    2. In the text field, add the attribute condition. Replace with the value you copied from Omni in :
      For example:
      The attribute conditions should look like the following when finished:
Configured provider attribute condition in the Google Cloud Console
  1. Click Save.
3

Grant BigQuery access

Choose how Omni’s federated identity accesses BigQuery:
Grant the BigQuery roles directly to the pool’s identities, replacing GCP_PROJECT_ID with the ID of your GCP project:
Optional. Grant the metadataViewer role directly to the pool’s identities:
The metadataViewer role is only required if you want to give Omni access to all views within a dataset (e.g., project.*) when setting up the connection in Omni. If you explicitly list specific datasets without wildcards in the connection setup step, Omni will skip the project-level metadata scan and work with dataset-level permissions only.When you configure Omni, leave the Service account impersonation URL field blank.
  1. Create a service account (for example, omni-bigquery) and grant it the following BigQuery roles on your project:
    • BigQuery Job User
    • BigQuery Data Viewer
  2. Allow the pool’s identities to impersonate the service account by granting the Workload Identity User role on the service account to the pool:
    Replace GCP_PROJECT_ID with the ID of your GCP project.
Keep the service account email handy - you’ll need it to complete the setup in Omni.
4

Set up a table upload dataset

This step is optional. However, we recommend completing it as part of the initial set up or you won’t be able to use uploaded files like CSVs in joins.
In this step, you’ll create a dedicated dataset to use for table uploads. Before you create the dataset, note that:
  • This dataset can’t be used for other modeled tables
  • This dataset must be in the same region as other projects and schemas in the connection, or you may encounter cross-region errors
To create a dataset for table uploads:
  1. In the Google Cloud Console, navigate to your BigQuery project.
  2. Create the dataset.
  3. After the dataset is created, open it so that its details display.
  4. Click Share > Manage permissions, located next to the Copy option near the top right corner of the page.
  5. In the dialog that displays, click Add principal.
  6. For the New principals field, the value you enter depends on the access method you selected in step 3:
    • Direct access - Enter the pool identity, including the principalSet://. This is the member value from the command in step 3 and will look like the following:
    • Service account - Enter the email address of the service account you created in step 3. This will look like the following:
  7. Add the BigQuery Data Editor role.
  8. Click Save.
5

Create the connection in Omni

  1. In Omni, click Settings > Connections.
  2. Click the BigQuery option.
  3. On the connection setup page, fill in the connection details:
    When you explicitly list datasets without wildcards (no * characters), Omni skips the project-level metadata scan and only requires dataset-level permissions (BigQuery Data Viewer role). Using wildcards or leaving this field empty requires project-level permissions (BigQuery Metadata Viewer role).
    Authentication Type
    required
    The type of authentication to use. Select Workload Identity Federation.
    Region
    required
    The region the dataset resides in. Refer to the Requirements section if you need help finding this information.
    Max Billing Bytes
    default:"1TB"
    The maximum bytes billed for queries run on this connection.
  4. When finished, click Create connection.

Troubleshooting

IssueWhat to check
Token exchange fails or is deniedVerify the attribute condition uses startsWith — the value Omni shows is a prefix, and the full role name includes a random suffix. Also confirm the attribute mapping reconstructs the role ARN as shown in step 2; the raw AWS assertion uses the arn:aws:sts::...:assumed-role/... format, which won’t match the value from Omni without it.
Queries fail with a permission errorConfirm the roles from step 3 were granted to the right principal: the service account (impersonation) or the pool’s principalSet (direct access). IAM changes can take a couple of minutes to propagate.
Datasets appear, but contain no tablesCheck the connection’s Default Dataset field — it must be a dataset name, not a project ID.

What’s next?