You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We use multiple BigQuery data sources in Redash, each mapped to a different service account for dataset-level isolation. Today, that effectively means storing a JSON key per data source, because the standard BigQuery runner uses jsonKeyFile when a per-data-source identity is needed, and only falls back to ADC when no key is configured.
We would like to use a more secure setup based on ADC / OIDC / Workload Identity Federation, without long-lived JSON keys, while still being able to choose a different effective service account per BigQuery data source.
This seems adjacent to #5760, but the goal is different:
This request is about impersonating a target service account from a Redash runtime identity obtained via ADC/WIF, so each data source can use a different service account without uploading JSON keys.
Proposed direction:
Keep the current jsonKeyFile path for backward compatibility.
Add an optional field such as impersonatedServiceAccount to the BigQuery data source configuration.
When jsonKeyFile is not set, use google.auth.default() as the source credential.
If impersonatedServiceAccount is set, create BigQuery credentials via google.auth.impersonated_credentials.Credentials.
This would allow deployments on GKE / Cloud Run / GCE / EKS with Workload Identity or other ADC-compatible setups to avoid key distribution entirely, while still preserving per-data-source IAM separation.
A related issue is #7332, which shows there is already interest in ADC-based BigQuery usage, although that one is specifically about the Test Connection behavior.
Would maintainers be open to this direction? If yes, I can put together a PR for the BigQuery query runner and tests.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
We use multiple BigQuery data sources in Redash, each mapped to a different service account for dataset-level isolation. Today, that effectively means storing a JSON key per data source, because the standard BigQuery runner uses
jsonKeyFilewhen a per-data-source identity is needed, and only falls back to ADC when no key is configured.We would like to use a more secure setup based on ADC / OIDC / Workload Identity Federation, without long-lived JSON keys, while still being able to choose a different effective service account per BigQuery data source.
This seems adjacent to #5760, but the goal is different:
Proposed direction:
jsonKeyFilepath for backward compatibility.impersonatedServiceAccountto the BigQuery data source configuration.jsonKeyFileis not set, usegoogle.auth.default()as the source credential.impersonatedServiceAccountis set, create BigQuery credentials viagoogle.auth.impersonated_credentials.Credentials.This would allow deployments on GKE / Cloud Run / GCE / EKS with Workload Identity or other ADC-compatible setups to avoid key distribution entirely, while still preserving per-data-source IAM separation.
A related issue is #7332, which shows there is already interest in ADC-based BigQuery usage, although that one is specifically about the
Test Connectionbehavior.Would maintainers be open to this direction? If yes, I can put together a PR for the BigQuery query runner and tests.
All reactions