Sometimes the real fix is a product change so you stop needing that join at all.
Team B needs read access to a curated subset of Team A's BigQuery dataset in a different GCP project, without exposing the raw underlying tables or granting broad project-level IAM.
Sometimes the real fix is a product change so you stop needing that join at all.
Authorized views are the standard pattern here: create a view in Team A's project exposing only the needed columns and rows, authorize that view against Team B's dataset, and grant Team B's users or service accounts access only to the view, never the underlying tables.
We replaced custom sensors with data contracts and row count checks.
A shared service account works too, but it's coarser-grained and harder to audit per consumer. Authorized views keep the access boundary at the data-product level, which scales better as more teams ask for access.
This is also just easier to reason about later when someone asks who can see column X. The view's grant list is the answer, no need to trace IAM policy across two projects.
Document the grain decision, most BI bugs turn out to be grain bugs.
Sign in to reply.
© 2026 Lakebench, operated by Hunnurji Rao. Bengaluru, Karnataka, India.
No cluster. No install. Just the tab.