For AI agents: A markdown version of this page is available at https://docs.datadoghq.com/security/code_security/iac_security/iac_rules/terraform-gcp-bigquery-table-is-public.md.
A documentation index is available at /llms.txt.
When BigQuery tables are configured with public access through IAM members or bindings using principals such as allUsers or allAuthenticatedUsers, they expose potentially sensitive data to anyone on the internet or any authenticated Google account. This significantly increases the risk of data breaches, unauthorized access, and compliance violations related to data privacy regulations.
To secure BigQuery tables, always restrict access to specific authenticated users, service accounts, or groups instead of using public principals. For example, use user:someone@example.com instead of allUsers or allAuthenticatedUsers as shown in this comparison:
# IAM Member compliant
resource"google_bigquery_table_iam_member""good_example_member"{table="example_table"member="user:someone@example.com" # ✅ Non-public principal
role="roles/bigquery.dataViewer"}
# IAM Binding compliant
resource"google_bigquery_table_iam_binding""good_example_binding"{table="example_table"members=["user:someone@example.com","group:admins@example.com"] # ✅ No public principals
role="roles/bigquery.dataViewer"}
Non-Compliant Code Examples
# IAM Member violation
resource"google_bigquery_table_iam_member""bad_example_member"{table="example_table"member="allUsers" # ❌ Public principal
role="roles/bigquery.dataViewer"}# IAM Binding violation
resource"google_bigquery_table_iam_binding""bad_example_binding"{table="example_table"members=["allAuthenticatedUsers","user:someone@example.com"] # ❌ Contains public principal
role="roles/bigquery.dataViewer"}
1
2
rulesets:- Terraform / GCP # Rules to enforce / GCP.
Request a personalized demo
Get Started with Datadog
Ask AI
AI-generated responses may be inaccurate. Verify important info.